Logstash 弹性堆栈,如何发送自定义python日志

Logstash 弹性堆栈,如何发送自定义python日志,logstash,elastic-stack,Logstash,Elastic Stack,因此,我在python中有一些自定义日志记录,它来自多个进程,以如下格式记录某个崩溃 {timestamp},{PID},{Cause} 现在,我希望这些事件被发送到logstash,并在ELK中使用,以便稍后在我的kibana仪表板上查看一些信息。我以前从未使用过麋鹿,所以我的问题是,什么是最好的方法 -使用python logstash并同时拥有2个记录器 -只需在记录阵列时将其发送到logstash(我想是HTTP?),然后使用dissect -当记录器记录行时,生成一个JSON并将其发

因此,我在python中有一些自定义日志记录,它来自多个进程,以如下格式记录某个崩溃

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

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

-只需在记录阵列时将其发送到logstash(我想是HTTP?),然后使用dissect


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

如果您只想发送崩溃,那么使用单独的记录器非常方便

logger.addHandler(logstash.TCPLogstashHandler(host, 5959, version=1)
并为tcp输入配置日志存储管道

input {
    tcp {
        port => 5959
    }
}


filter {
    json {
        source => "message"
    }
}
output {
    elasticsearch {
        hosts => "elasticsearch:9200"
    }
}
要发送类似json的数据,请在python中填充dict,然后使用带有额外参数的记录器发送

logger.log(level=logging.WARN,msg=“进程崩溃”,extra={'PID':PID',Cause':Cause})

结果记录看起来像

{
PID:321,
原因:“abcde”,
时间戳:“2019-12-10T13:37:51.906Z”,
消息:“进程崩溃”
}