centos

CentOS Syslog日志过滤技巧有哪些

小樊
48
2025-10-30 06:17:12
栏目: 智能运维

CentOS Syslog日志过滤技巧汇总

CentOS系统中,rsyslog是默认的日志管理工具,支持通过配置文件规则命令行工具实现灵活的日志过滤。以下是具体技巧:

一、基于rsyslog配置文件的过滤规则

rsyslog通过/etc/rsyslog.conf/etc/rsyslog.d/*.conf文件配置过滤逻辑,核心包括属性过滤表达式过滤传统优先级过滤

1. 传统优先级过滤(基础语法)

通过facility.priority组合过滤日志,其中:

2. 属性过滤(精准匹配)

通过日志的属性字段(如msg内容、hostname主机名、programname程序名)进行过滤,语法为:
:PROPERTY, COMPARE_OPERATION, "VALUE"
常用操作:

3. 表达式过滤(复杂逻辑)

使用rsyslog的RainerScript语法构建复杂过滤,支持if-elseand/or等逻辑。示例:

if ($programname == 'nginx' and $syslogseverity <= 3) or ($msg contains 'timeout') then {
    action(type="omfile" file="/var/log/nginx_errors.log")
    stop
}

该规则表示:若日志来自nginx且级别≤3(err及以上),或消息包含timeout,则写入/var/log/nginx_errors.log并停止后续处理(stop)。

二、命令行工具快速过滤

无需修改配置文件,通过命令行工具实时或批量过滤日志:

1. grep:关键字过滤
2. sed:时间范围过滤

通过正则匹配时间戳,过滤特定时间段的日志。示例(过滤2025-10-30的全天日志):

sed -n '/Oct 30 00:00:00/,/Oct 30 23:59:59/p' /var/log/messages

适用于需要分析某时间段日志的场景。

3. awk:多条件组合过滤

通过awk解析日志的设施/级别内容,实现多条件过滤。示例(过滤cron服务的error日志):

awk '/^Oct 30 00:00:00/,/Oct 30 23:59:59/ { if (/\[CRON\].*error/) print }' /var/log/messages

或简化为(若日志格式固定):

awk '/cron.*error/' /var/log/messages

适用于需要提取特定程序或内容的日志。

三、实用技巧增强过滤效率

以上技巧覆盖了CentOS Syslog从基础到高级的过滤需求,可根据实际场景组合使用,提升日志管理效率。

0
看了该问题的人还看了