Syslog-ng下一代系统日志工具

联合创作 · 2023-09-30 00:58

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条消息
  • 但是分类,解析和过滤仍然每秒产生数万条消息
浏览 11
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报