gpt4 book ai didi

python - 从 python 记录到 logstash

转载 作者:太空狗 更新时间:2023-10-30 01:05:23 25 4
gpt4 key购买 nike

我在从 python 登录到 logstash 时遇到了一些麻烦。

我正在使用来自 sebp/elk ( http://elk-docker.readthedocs.io ) 和 python-logstash ( https://pypi.python.org/pypi/python-logstash ) 的 docker 镜像作为日志处理程序

docker 镜像为 Beats 接口(interface)公开端口 5044 (http://elk-docker.readthedocs.io/#usage)。每当我尝试登录到此端口时,什么都没有发生...我应该使用其他端口吗?

我已经通过这样做验证了 logstash 的工作:

/opt/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch   { hosts => ["localhost"] } }' --path.data /root/data

Python代码(来自python-logstash的官方示例):

import logging
from logging import StreamHandler
import logstash
import sys

host = 'localhost'

test_logger = logging.getLogger('python-logstash-logger')
test_logger.setLevel(logging.INFO)
test_logger.addHandler(logstash.TCPLogstashHandler(host, 5044, version=1))
test_logger.addHandler(StreamHandler())

try:
test_logger.error('python-logstash: test logstash error message.')
test_logger.info('python-logstash: test logstash info message.')
test_logger.warning('python-logstash: test logstash warning message.')

# add extra field to logstash message
extra = {
'test_string': 'python version: ' + repr(sys.version_info),
'test_boolean': True,
'test_dict': {'a': 1, 'b': 'c'},
'test_float': 1.23,
'test_integer': 123,
'test_list': [1, 2, '3'],
}
test_logger.info('python-logstash: test extra fields', extra=extra)
except:
print("Error")

我不知道为什么这不起作用。它可能与 Beats 有关吗?

最佳答案

真正的答案是 python-logstash 不使用 beats 协议(protocol)。它使用 TCP 或 UDP。

您可以在代码中看到这一点 logstash.TCPLogstashHandler(host, 5959, version=1)

您需要设置您的 ELK Docker 镜像以具有 TCP 或 UDP 监听器,然后在 python-logstash 中选择匹配的处理程序来发送消息。

这是一个示例 beats 配置文件,您可以将其包含在 Docker 镜像中以监听 TCP 端口:

input {
tcp {
port => 5959
codec => json
}
}

如果您将该文件命名为 03-tcp-input.conf,那么您的 Dockerfile 可能如下所示:

FROM sebp/elk

ENV LOGSTASH_PATH_CONF /etc/logstash

ADD ./03-tcp-input.conf ${LOGSTASH_PATH_CONF}/conf.d/03-tcp-input.conf

研究source repo中的Docker文件了解 Sébastien 如何为 Logstash 设置配置。

关于python - 从 python 记录到 logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44880806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com