首页主机资讯CentOS Syslog日志过滤技巧有哪些

CentOS Syslog日志过滤技巧有哪些

时间2025-10-30 09:02:03发布访客分类主机资讯浏览1097
导读:CentOS Syslog日志过滤技巧汇总 CentOS系统中,rsyslog是默认的日志管理工具,支持通过配置文件规则和命令行工具实现灵活的日志过滤。以下是具体技巧: 一、基于rsyslog配置文件的过滤规则 rsyslog通过/etc/...

CentOS Syslog日志过滤技巧汇总

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

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

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

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

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

  • facility:日志来源(如kern内核、mail邮件、cron定时任务);
  • priority:日志级别(如emerg紧急、err错误、info信息)。
    常用格式:
  • kern.*:记录内核所有级别的日志;
  • mail.crit:记录邮件服务严重及以上级别(crit、alert、emerg)的日志;
  • cron.!info,!debug:排除cron服务的infodebug日志,记录其余级别。
2. 属性过滤(精准匹配)

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

  • contains:包含指定字符串(如:msg, contains, "error");
  • isequal:等于指定值(如:hostname, isequal, "web01");
  • regex:正则匹配(如:msg, regex, "fatal .* error");
  • !:取反(如:msg, !contains, "debug")。
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:关键字过滤
  • 基本过滤grep 'error' /var/log/messages(查找messages文件中包含error的行);
  • 实时过滤tail -f /var/log/messages | grep 'error'(实时监控新增的error日志);
  • 排除过滤grep -v 'debug' /var/log/messages(排除debug级别的日志)。
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

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

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

  • 停止日志传播:在配置文件规则末尾添加& stop,防止日志被后续规则重复处理(如cron.* /var/log/cron.log & stop);
  • 日志轮转:通过logrotate配置(如/etc/logrotate.conf)定期压缩、删除旧日志,避免磁盘空间耗尽;
  • 远程转发:使用omfwd模块将过滤后的日志发送到远程服务器(如*.* action(type="omfwd" Target="192.168.1.100" Port="514" Protocol="tcp")),实现集中管理。

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS Syslog日志过滤技巧有哪些
本文地址: https://pptw.com/jishu/738552.html
CentOS Syslog如何设置告警通知 CentOS Syslog如何集成ELK Stack

游客 回复需填写必要信息