Skip to main content

python 日志处理程序将数据发送到具有 SSL/TLS 支持的 Logstash 服务器

项目描述

logstashpy:支持 SSL/TLS 的 python 日志记录处理程序

执照 图片 图片 图片 图片

图片

这个存储库的灵感来自原始项目python-logstash,许多代码和待处理的 PR 也集成在这里,其中一些像 SSL/TLS 支持。此外,它计划支持更多的序列化格式,如 logstash 编解码器所支持的那样。目前 msgpack 已集成。

一些旧的格式化程序已经发货,但 ELK 堆栈现在促进了 ECS 的使用。查看ecs-logging 以获取最新更新。对于所有处理程序,默认格式化程序现在是来自 ecs_logging 的 StdlibFormatter,但您始终可以选择其他格式化程序或旧格式化程序。

__all__目前,__init__.py由于 API 将来可能会更改,因此目前没有公开任何类。

安装

要安装 logstashpy,只需使用一直以来最喜欢的 pip 并输入:

$ pip install logstashpy✨

用法

>>> from logstash.handlers.tcp_handler import TCPLogstashHandler
>>> from ecs.logger 
>>> host = 'localhost'
>>> logger = logging.getLogger(__name__)
>>> logger.setLevel(logging.INFO)
>>> handler = TCPLogstashHandler(host, 5959, ssl=False, serializer='msgpack')
>>> logger.addHandler(handler)

>>> # 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'],
>>> }
>>> logger.info('python-logstash: test extra fields', extra=extra)

SSL/TLS 支持

默认情况下启用 SSL。禁用ssl=FalseHandler 的构造函数中的传递。

要快速设置 SSL/TLS 相关证书,请遵循以下命令:

为证书颁发机构生成证书(用于自签名证书)

生成 CA 密钥(有点像 CA 的私钥,会提示输入密码,保持安全)

openssl genrsa -des3 -out localCA.key 2048

生成 CA pem 文件(类似于 CA 的公钥)

openssl req -x509 -new -nodes -key localCA.key -sha256 -days 1024 -out localCA.pem

现在我们有一个本地证书颁发机构准备签署一些证书。

让我们为我们的本地 logstash 服务器生成一些私钥以及 CSR(证书签名请求),这些私钥将由我们的本地证书颁发机构签名。您可以在此处传递一些其他配置,但为简单起见。

openssl req -new -sha256 -nodes -out logserver.csr -newkey rsa:2048 -keyout logserver.key

让我们将我们的 CSR 提交给我们的本地 CA 并获取证书(受保护,您将被提示输入之前设置的密码)

openssl x509 -req -in server.csr -CA localCA.pem -CAkey localCA.key -CAcreateserial -out logserver.crt -days 1000 -sha256

您将获得一个 logserver.crt,logstash 服务器可以将其呈现给其客户端,有效期为 1000 天。

Python 版本支持

logstashpy 支持 python3

示例 Logstash 配置

通过 TCP 从 logstashpy 接收事件的示例 Logstash 配置 ( logstash.conf)(如果不需要,则省略 ssl 相关字段):

input {
  tcp {
    port => 5959
    codec => json
    ssl_enable => true
    ssl_cert => "/path/to/server.crt"
    ssl_key => "/path/to/server.key"
    ssl_verify => false
  }
}
output {
   stdout {
     codec => rubydebug
   }
}

文档

快来了。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

logstashpy-0.0.1.tar.gz (3.6 kB 查看哈希

已上传 source

内置分布

logstashpy-0.0.1-py3-none-any.whl (7.8 kB 查看哈希

已上传 py3