【问题标题】:Elastic stack, how should I send my custom python logs弹性堆栈,我应该如何发送我的自定义 python 日志
【发布时间】:2019-12-10 22:42:39
【问题描述】:

所以我在 python 中有一些自定义日志记录,它来自多个进程,以记录某种崩溃,其格式类似于

{timestamp},{PID},{Cause}

现在我希望将这些事件发送到 logstash 并在 ELK 中使用,以便稍后在我的 kibana 仪表板上查看一些信息。我以前从未使用过 ELK,所以我的问题是,最好的方法是什么?

-使用 python-logstash 并同时拥有 2 个记录器

-在记录时将数组发送到logstash(我认为是HTTP?)并稍后使用解析?

-当记录器记录该行时生成一个 JSON 并将其发送到 logstash?

【问题讨论】:

    标签: logstash elastic-stack


    【解决方案1】:

    如果您只想发送崩溃,那么拥有一个单独的记录器会很方便。

    logger.addHandler(logstash.TCPLogstashHandler(host, 5959, version=1)
    

    并为 tcp 输入配置 logstash 管道。

    input {
        tcp {
            port => 5959
        }
    }
    
    
    filter {
        json {
            source => "message"
        }
    }
    output {
        elasticsearch {
            hosts => "elasticsearch:9200"
        }
    }
    

    要发送类似 json 的数据,请在 python 中填充一个 dict,然后使用带有 extra 参数的记录器发送。

    logger.log(level=logging.WARN, msg="process crashed", extra={'PID':pid, 'Cause': cause})

    结果记录看起来像

    { PID:321, Cause:'abcde', timestamp:"2019-12-10T13:37:51.906Z", message:"process crashed" }

    【讨论】:

      猜你喜欢
      • 2019-07-27
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多