0

0

Linux系统监控策略设计_关键告警解析【教程】

冷炫風刃

冷炫風刃

发布时间:2026-01-03 10:04:02

|

592人浏览过

|

来源于php中文网

原创

必须设告警的指标包括:1. load average 持续高于 CPU 核数×1.5;2. MemAvailable 低于总内存5%;3. 某挂载点 df -P Use%≥90%且连续3次未回落;4. ss 统计 ESTABLISHED 连接突增或 LISTEN 端口消失;5. journalctl 按 unit 和时间窗捕获关键错误日志。

linux系统监控策略设计_关键告警解析【教程】

哪些指标必须设告警,而不是“看着办”

CPU、内存、磁盘使用率这类基础指标,单独看阈值容易误报。真正该触发告警的是:load average 持续高于 CPU 核数 × 1.5、/proc/meminfo 中的 MemAvailable 低于 5% 总内存、df -P 显示某挂载点 Use% ≥ 90% 且连续 3 次采样未回落。

  • load average 高但 CPU idle 高?可能是 I/O 等待,需同步查 iostat -x 1 3%utilawait
  • 内存告警必须基于 MemAvailable,而非 FreeBuffers+Cached,否则容器场景下几乎必误报
  • 磁盘告警要排除临时文件系统(如 tmpfs)、容器 overlay2 目录,过滤命令加 | grep -vE "(tmpfs|overlay)"

systemd 做进程存活告警最稳的方式

别依赖定时脚本轮询 pssystemd 自带健康检查更可靠。关键在服务单元文件里配对三行:

[Service]
Restart=on-failure
RestartSec=10
StartLimitIntervalSec=60

这表示:进程异常退出后等 10 秒重启;1 分钟内失败超 5 次(默认 StartLimitBurst=5)就停服并触发 systemctl is-failed 可捕获的状态。

  • 必须显式设置 Type=simpleType=notify,否则 Restart=on-failure 不生效
  • 想让告警包含具体退出码,加 ExecStopPost=/usr/local/bin/alert.sh %N %L %s,其中 %s 是 exit code
  • 避免用 Restart=always,它连 kill -9 都拦不住,会掩盖真实故障

netstat 已过时,用 ss 查连接数告警才准

netstat 在高并发下性能差、结果不准,ss 是唯一可信赖的替代。监控 ESTABLISHED 连接突增,执行:

ss -tan state established | wc -l

但注意:这个数字含 TIME_WAIT,真要盯活跃连接,得加 -o 看计时器,或用 ss -tn src :80 | wc -l 锁定特定端口

MedPeer
MedPeer

AI驱动的一站式科研服务平台

下载
  • ss -s 输出的 tcp: 行里 estab 字段才是当前 ESTABLISHED 数,比管道统计快一个数量级
  • 查 LISTEN 端口是否被意外关闭,用 ss -tln | grep ":22" | wc -l,返回 0 就该告警
  • 不要用 netstat -an | grep ESTAB | wc -l,在万级连接时延迟可达秒级,错过告警窗口

日志关键词告警别硬匹配,先过 journalctl 过滤

直接 tail -f /var/log/messages | grep "OOM" 会漏 systemd-journald 的二进制日志,且无法按服务单位隔离。正确做法是:

journalctl -u nginx --since "2 minutes ago" | grep -q "failed\|timeout" && echo "NGINX health issue"

关键在 -u 按 unit 过滤、--since 控制时间窗,避免全量扫描。

  • 高频日志(如 auditd)要用 --priority 限级别,否则 journalctl -n 1000 可能卡住
  • 匹配关键词优先用 journalctl -g "Out of memory",比外部 grep 快 3–5 倍
  • 别把 journalctl 放 cron 里每分钟跑一次,改用 SYSTEMD_LOG_LEVEL=4 journalctl --follow --output=json 流式消费

监控策略最常被忽略的不是阈值设多高,而是采样周期和告警抑制没对齐——比如磁盘清理脚本每 5 分钟跑一次,而告警检测间隔设成 30 秒,结果连续 10 次告警全是虚惊。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

403

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

529

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

308

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

74

2025.09.10

alert怎么实现换行
alert怎么实现换行

alert通过使用br标签来实现换行。更多关于alert相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

489

2023.11.07

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1345

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

700

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

热门下载

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

精品课程

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

共48课时 | 6.5万人学习

Git 教程
Git 教程

共21课时 | 2.4万人学习

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

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