Syslog-ng下一代系统日志工具
syslog-ng的一个设计原则就是建立更好的消息过滤粒度。syslog-ng能够进行基于内容和优先权/facility的过滤。另一个设计原则是更容易进行不同防火墙网段的信息转发,它支持主机链,即使日志消息经过了许多计算机的转发,也可以找出原发主机地址和整个转发链。最后的一个设计原则就是尽量使配置文件强大和简洁。
快速开始
最简单的配置从/ dev / log(从应用程序或systemd转发)接受系统日志,并将所有内容写入单个文件:
@version: 3.28
@include "scl.conf"
log {
source { system(); };
destination { file("/var/log/syslog"); };
};
这另外处理来自网络的日志(默认情况下为TCP / 514):
@version: 3.28
@include "scl.conf"
log {
source {
system();
network();
};
destination { file("/var/log/syslog"); };
};
此配置设计用于结构化/应用程序日志记录,通过JSON使用本地提交,并以key = value格式输出:
@version: 3.28
@include "scl.conf"
log {
source { system(); };
destination { file("/var/log/app.log" template("$(format-welf --subkeys .cim.)\n")); };
};
要使用提交结构化日志logger
,您可以运行:
$ logger '@cim: {"name1":"value1", "name2":"value2"}'
在这种情况下,结果消息将是:
name1=value1 name2=value2
有关配置syslog-ng应用程序的简短介绍,请参见快速入门指南。
特征
- 接收和发送RFC3164 和RFC5424样式的系统日志消息
- 接收和发送JSON格式的消息
- 处理任何类型的非结构化数据
- 使用内置解析器(csv-parser(),db-parser(),kv-parser()等)对日志进行分类和结构化
- 在日志流过系统时对其进行规范化,处理和处理
- 使用文件,消息队列(例如AMQP)或数据库(例如 PostgreSQL或 MongoDB)来移交日志以进行进一步处理
- 将日志转发到大数据工具(例如Elasticsearch, Apache Kafka或 Apache Hadoop)
性能
- syslog-ng在单个节点上运行时可提供与大型群集相当的性能水平
- 在最简单的用例中,它每秒可扩展至600-800k条消息
- 但是分类,解析和过滤仍然每秒产生数万条消息
评论