使用tcp和可选tls的快速、高效和有用的syslog收集器
pysyslog的Python项目详细描述
pysyslog
使用TCP和可选TLS的快速、高效和有用的系统日志收集器
- 自由软件:GNU通用公共许可v3
- 文档:https://pysyslog.readthedocs.io。
功能
- TLS支持
- 持久TCP连接
- 灵活的日志配置(由Python的日志模块驱动)
- 快
关于
为了达到要求的速度,我们做了一些妥协 值得注意的一点是,我们不试图遵守任何RFC。我们没有 解析任何消息,也不提供任何特定于syslog的功能。那个 也就是说,由于syslog只是传输上的纯文本,我们应该 可与大多数(如果不是全部)系统日志客户端互操作。
安装
您可以使用安装:
$ pip install pysyslog
使用量
要启动本地系统日志收集器(侦听TCP 127.0.0.1:514),可以 发出以下命令:
$ pysyslog
如果要自定义侦听主机和端口,可以将它们作为 位置参数。例如,如果你想听 端口8000的所有可用接口您可以发出以下命令:
$ pysyslog 0.0.0.0 8000
如果要启用TLS,必须提供密钥和证书的路径 (必须为PEM格式)您可以发出以下命令:
$ pysyslog --cert /path/to/cert.pem --key /path/to/key.pem
如果密钥和证书包含在同一个文件中,则必须传递该文件 指向键和证书的路径:
$ pysyslog --cert /path/to/key-and-cert.pem --key /path/to/key-and-cert.pem
所有日志消息都将发送到stdout。如果您想自定义 目的地,您必须提供json格式的日志配置:
$ pysyslog --logging-config /path/to/logging.json
在logging.json中,类似这样的东西会将所有内容发送到stdout 并将127.0.0.1中的所有内容发送到文件/localhost.log:
{ "version": 1, "root": { "level": "DEBUG", "propagate": true, "handlers": ["stdout"] }, "formatters": { "brief": { "format": "%(asctime)s %(message)s" } }, "handlers": { "stdout": { "class": "logging.StreamHandler", "formatter": "brief", "level": "DEBUG", "stream": "ext://sys.stdout" }, "localhost-file": { "class": "logging.FileHandler", "formatter": "brief", "level": "DEBUG", "filename": "./localhost.log", "delay": true } }, "loggers": { "127.0.0.1": { "handlers": ["localhost-file"], "level": "DEBUG", "propagate": true } } }
有关日志配置格式的详细信息,请参阅 https://docs.python.org/3/library/logging.config.html#configuration-dictionary-schema
架构
python的socketserver模块提供了tcp服务器功能。什么时候? 一个客户端连接,一个线程生成,套接字将被轮询以获取数据。 这些连接在接收到一条消息后不会关闭,而是利用 TCP的流式传输功能,使这些连接保持打开状态,因此我们不 需要多次执行我们的三方握手,除非客户关闭 连接。
一旦建立了连接,接收到的每一行都将放在队列中。这个 队列由单独的写入程序进程读取。然后将消息提交给 python日志系统通过以 远程对等。这允许细粒度配置,其中输出可以是 发送到许多目的地,如文件、stdout甚至其他系统日志 收藏家。
学分
这个包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。
历史记录
0.1.0(2018-07-20)
- pypi上的第一个版本。