将文件 logstash.conf 放在 python 源中的什么位置?

Where to put the file logstash.conf in python source?

我的主要目的是发送日志到Kiabana,我得到了Logstashhostport(我的老板给了我)

来自这个网站:https://pypi.org/project/python-logstash/ 我有一个这样的示例代码:

import logging
import logstash
import sys

host = '182.2....'

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

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)

我 运行 它但我在 Kibana 上什么也看不到。 (有人告诉我选择 index)但我没有看到示例代码中设置了 index

然后经过研究,我听说我需要设置一个名为 logstash.conf 配置的文件,它应该如下所示

input {
  udp {
    port => 5959
    codec => json
  }
}
output {
  stdout {
    codec => rubydebug
  }
}

但我不知道该文件放在哪里,

它应该和我的 .py 代码文件在同一个目录中吗?

而且我没有看到我的 .py 代码文件和 logstash.conf 文件之间有任何联系

请帮忙!

您使用的python-logstash lib是一个帮助您将数据发送到logstash的库,它与您粘贴的logstash.conf无关。

你分享的logstash.conf是一个Logstash配置,它应该在Logstash的config目录下,但是这个配置不会发送任何东西到Elasticsearch,你在Kibana中也看不到任何东西,你需要一个配置这将输出到 elasticsearch,像这样。

input {
  udp {
    port => 5959
    codec => json
  }
}
output {
  elasticsearch {
    hosts => ["your-elasticsearch-host:port"]
    index => "your-index-name"
  }
}

您或您公司的某个人需要在 Logstash 中创建一个管道来接收该端口中的数据并将其发送到 Elasticsearch,这样您就可以使用 Kibana 来可视化数据。

您的 python 脚本只需要 logstash 发送数据的端口和主机,除此之外,您的 python 脚本与 logstash 配置之间没有任何联系。