Linux syslog如何设置日志过滤规则

873
2025/4/7 21:32:05
栏目: 智能运维
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Linux系统中,syslog是一个用于记录系统消息的守护进程。要设置日志过滤规则,您可以使用rsyslog或syslog-ng这两个常见的syslog实现。下面是针对这两个实现的日志过滤规则设置方法:

  1. 使用rsyslog设置日志过滤规则:

编辑rsyslog配置文件,通常位于/etc/rsyslog.conf/etc/rsyslog.d/目录下。使用文本编辑器打开配置文件,例如:

sudo nano /etc/rsyslog.conf

在配置文件中,您可以添加过滤规则。例如,如果您只想记录来自特定IP地址的日志,可以使用以下规则:

if $fromhost-ip == '192.168.1.100' then /var/log/ip_192_168_1_100.log
& stop

这个规则表示,如果日志来自IP地址192.168.1.100,则将其记录到/var/log/ip_192_168_1_100.log文件中,并停止进一步处理该日志。

您还可以根据其他属性设置过滤规则,例如程序名、设施等。以下是一个更复杂的示例:

if $programname == 'nginx' and $syslogseverity-text == 'crit' then /var/log/nginx_crit.log
& stop

这个规则表示,如果日志来自名为nginx的程序,并且严重性级别为crit,则将其记录到/var/log/nginx_crit.log文件中,并停止进一步处理该日志。

保存并关闭配置文件,然后重启rsyslog服务以应用更改:

sudo systemctl restart rsyslog
  1. 使用syslog-ng设置日志过滤规则:

编辑syslog-ng配置文件,通常位于/etc/syslog-ng/syslog-ng.conf。使用文本编辑器打开配置文件,例如:

sudo nano /etc/syslog-ng/syslog-ng.conf

在配置文件中,您可以添加过滤规则。例如,如果您只想记录来自特定IP地址的日志,可以使用以下规则:

filter f_ip { ip(192.168.1.100); };
destination d_ip { file("/var/log/ip_192_168_1_100.log"); };
log { source(s_src); filter(f_ip); destination(d_ip); };

这个规则表示,如果日志来自IP地址192.168.1.100,则将其记录到/var/log/ip_192_168_1_100.log文件中。

您还可以根据其他属性设置过滤规则,例如程序名、设施等。以下是一个更复杂的示例:

filter f_nginx_crit { program("nginx") and level(crit); };
destination d_nginx_crit { file("/var/log/nginx_crit.log"); };
log { source(s_src); filter(f_nginx_crit); destination(d_nginx_crit); };

这个规则表示,如果日志来自名为nginx的程序,并且严重性级别为crit,则将其记录到/var/log/nginx_crit.log文件中。

保存并关闭配置文件,然后重启syslog-ng服务以应用更改:

sudo systemctl restart syslog-ng

这些示例仅用于演示如何设置日志过滤规则。您可以根据自己的需求调整规则。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: linux怎么查看mysql数据库