0

0

Linux 日志告警规则设计与实现

舞姬之光

舞姬之光

发布时间:2026-02-28 09:48:31

|

852人浏览过

|

来源于php中文网

原创

告警规则分别写在 rsyslog 的 /etc/rsyslog.d/ 和 syslog-ng 的 /etc/syslog-ng/conf.d/;rsyslog 用 if $msg contains 或 re_match() 匹配,需加 $programname 等上下文过滤;输出链路需检查权限、防火墙和本地落地验证;必须配置 rate-limit 防止洪峰告警。

linux 日志告警规则设计与实现

告警规则写在哪儿?rsyslogsyslog-ng 路径不同

Linux 系统日志告警不是靠“加个插件”就能生效,得先确认你用的是哪个日志守护进程。大多数 CentOS/RHEL 7+ 默认用 rsyslog,而 Debian/Ubuntu 22.04+ 开始默认切到 syslog-ng——两者的规则语法、配置位置、加载机制完全不同,混用必失效。

  • rsyslog 规则写在 /etc/rsyslog.d/ 下的 .conf 文件里,比如 /etc/rsyslog.d/99-alert.conf;必须以 $ActionFileDefaultTemplatetemplate 定义输出格式,再用 if $msg contains 'Failed password' then ... 这类条件触发
  • syslog-ng 规则写在 /etc/syslog-ng/conf.d/(或主配置里的 filter + destination + log 三段式),匹配靠正则:filter f_ssh_fail { message(".*Failed password.*"); };
  • 改完配置后,rsyslogsudo systemctl reload rsyslogsyslog-ng 必须用 sudo syslog-ng-ctl reloadsystemctl reload 在某些版本不生效)

if $msg contains 为什么总漏报?匹配逻辑太粗糙

rsyslogcontains 是纯子串匹配,不支持正则,也不区分大小写(除非显式加 ignorecase),更不会跨行。实际日志里,“authentication failure” 可能出现在第二行,或者被缩写成 auth fail,又或者带时间戳前缀干扰匹配。

  • 优先换 re_match($msg, "Failed password for invalid user|Connection closed by"),它支持 PCRE 正则,且可一次写多个模式
  • 避免只匹配关键词,比如 "error"——内核日志、cron、journal 都会刷这个,告警爆炸是常态
  • 加上下文过滤:用 $programname == 'sshd'$syslogfacility-text == 'auth' 限定来源,比单靠消息体可靠得多

告警发出去了,但收不到?action 输出链路常断在三处

写好规则只是第一步,真正卡住的地方往往在“怎么送出去”。常见的是本地命令执行失败、网络请求超时、或权限不足导致写入临时文件失败。

AI Room Planner
AI Room Planner

AI 室内设计工具,免费为您的房间提供上百种设计方案

下载
  • omprog 调外部脚本时,脚本必须有可执行权限(chmod +x),且第一行 #!/usr/bin/env bash 路径要真实存在;rsyslog 默认以 syslog 用户运行,不能直接 curl 写入需认证的 Webhook
  • omfwd 发 TCP/UDP 到告警平台时,务必检查防火墙:sudo ss -tuln | grep :514 看端口是否监听,sudo tcpdump -i lo port 514 确认包发出没
  • 测试阶段别省事:在规则末尾加一行 *.* /var/log/debug_alert.log,把所有匹配日志落地,比盲等邮件/钉钉强十倍

为什么凌晨三点批量告警?rate limit 不设等于自扰

一条 SSH 暴力破解日志每秒刷几十条,没限流规则的话,一分钟能触发上千次告警。不是规则没写对,是压根没防住洪峰。

  • rsyslog$SystemLogRateLimitInterval 60$SystemLogRateLimitBurst 5 控制全局速率(单位:秒 + 条数),但这是针对整个 rsyslog 进程,不够精细
  • 更稳妥的是在规则里嵌套限流:用 call rate_limit 定义模板,再配合 if $msg re_match ... and not (rate_limit()) then ...
  • syslog-ng 原生支持 rate-limit(5) 参数,直接写在 log 块里,比 rsyslog 清晰不少

真正的麻烦不在语法,而在日志格式本身——不同服务输出结构不一,同一服务升级后字段可能变动,靠固定字符串匹配迟早翻车。留个心眼:关键告警规则上线前,先用 journalctl -u sshd -n 100 --no-pager 抽样看原始日志长什么样,别光盯着文档抄示例。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

835

2023.08.22

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

452

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

183

2023.10.30

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

391

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

349

2023.10.25

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

638

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

218

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1560

2023.10.24

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

0

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.8万人学习

Git 教程
Git 教程

共21课时 | 3.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号