五味茶 发表于 2023-2-18 20:19:33

Linux 服务 | rsyslog

rsyslog 是实现日志功能的服务,用来采集日志信息。
主配置文件/etc/rsyslog.conf中,可以设置日志的处理方式。

MODULES


[*]默认开启的两个 imuxsock、imjournal
[*]imuxsock 提供对本地系统日志记录的支持
[*]imjournal 提供对systemd日志的访问
[*]imudp 提供 UDP 方式系统日志接收
[*]imtcp 提供 TCP 方式系统日志接收

RULES


[*]规则设置的格式是filter action
[*]将filter过滤后的日志,送到action处理
[*]多个 rule 用分号隔开*.info;mail.none
过滤器 filter


[*]基于设施.优先级的过滤器。例:kern.*/dev/console

[*]kern是产生日志的设施,*是日志优先级
[*]设施类型(facility)
kern 内核信息
user 用户程序产生的相关信息
mail 邮件系统信息
daemon 守护进程产生的信息
auth pam认证系统信息
syslog 日志系统自身信息
authpriv ssh、ftp等登录信息
cron 系统执行定时任务产生的信息
lpr 打印相关信息
mark 服务内部的信息,时间标识
uucp Unix-to-Unix Copy 两个unix之间的相关通信
local0-local7 保留,本地使用

[*]多个设施用,隔开
[*]*表示所有设施

[*]日志优先级(priority)

[*]debug (7) , info (6) , notice (5) , warning (4) , err (3) , crit (2) , alert (1) , emerg (0)
[*]none会记录没有指定级别的信息
[*]*记录所有级别信息
[*]多个级别用,隔开

[*]记录日志内容的设置
. 等级高于符号后面的信息会记录
.= 只有符号后面等级的信息会记录
.! 除了符号后面等级,其他的都会记录(注意前面需要先有其他过滤规则,否则什么不记录)

[*]基于属性的过滤器。例:msg, contains, "error"

[*]:msg是要比较的日志属性,contains是要执行的比较操作,"error"是比较的值
[*]比较操作

[*]contains 匹配提供的字符串值是否是属性的一部分,如果不区分大小写,使用contains_i
[*]isequal 比较属性和值是否相等
[*]startswith 属性是否以指定字符串开始(startswith_i)
[*]regex 正则表达式(POSIX BRE 基本正则)匹配
[*]ereregex 正则表达式(POSIX ERE 扩展正则)匹配
[*]isempty 判断属性是否为空,不需要 value


[*]基于表达式的过滤器

[*]使用了 rsyslog 自定义的脚本语言RainerScript构建复杂的 filter。


执行操作 action

多个 action 用&连接
action 后面加;模板名可以使用模板格式化日志

[*]日志保存到日志文件。例cron.* /var/log/cron.log

[*]表示所有 cron 执行的日志都放在 cron.log 中
[*]通常生成日志时会同步到日志文件。前面加-则忽略同步
[*]可以动态生成日志文件,用预定义输出路径模板,并在文件名前加?

[*]通过网络发送日志信息
*.* @192.168.0.1      # 使用 UDP 发送,默认端口514

*.* @@example.com:18    # 使用 TCP 发送到端口18, 默认10514

*.* @(z9)# UDP, ipv6,使用zlib级别9压缩

[*]@表示用 UTP 协议发送
[*]@@表示用 TCP 协议发送
[*]z9表示用 zlib 压缩日志级别,可设置 1-9。可以不设置压缩

[*]丢弃日志,例cron.* ~

[*]使用~


模板 template

所有系统日志都可以用指定模板进行格式化

[*]创建模板
$template TEMPLATE_NAME,"text %PROPERTY% more text",

[*]TEMPLATE_NAME为模板名称
[*]"text %PROPERTY% more text"为模板内容
[*]OPTION为模板功能,可设置sql和stdsql,数据库存储时用到

[*]生成动态文件名
$template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log"
*.* ?DynamicFile

[*]timegenerated属性从日志信息中提取出信息时间戳

[*]属性

[*]属性放在两个%之间,可以取得日志信息中的内容。
[*]可用的属性列表man rsyslog.conf


服务确认


[*]修改配置后重启服务
systemctl restart rsyslog.service
[*]写入测试 log
logger -p syslog.info -t test "this is a test log."
[*]在系统日志文件/var/log/messages中确认写入的测试 log

rsyslog 能满足几乎所有的日志处理。
以后有用到其他内容再来补充

来源:https://www.cnblogs.com/rendd/p/17133192.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Linux 服务 | rsyslog