见过太多团队一上来就装Zabbix、上Prometheus,装完发现CPU告警一天响八十遍,最后把告警静音了,这不是监控,是给自己挖坑,监控服务器运维的本质是“可观测性加可执行性”,看得见,还得管得住、修得快。
监控什么:四层模型先把范围框住
工具是后面的选择,范围是前面的事,监控服务器运维通常按四层拆,每一层的指标口径不一样,混着看必然误判。
基础设施层:机房、网络、带宽、电源
- 机柜温湿度、UPS状态、交换机端口错包率,走SNMP采集。
- 出口带宽利用率看95计费值而不是瞬时峰值,否则天天虚惊。
- 运营商线路质量用丢包率和RTT抖动衡量,单看通不通没意义。
系统层:CPU、内存、磁盘、进程
这一层最容易踩口径的坑,CPU看的是1分钟负载还是5分钟平均,差别很大;内存要看available而不是free,Linux的buff/cache不是被吃掉了;磁盘除了使用率还要盯inode,小文件多的机器inode先满。
应用层:端口、连接数、中间件
- 进程存活不等于服务可用,要探端口和健康检查接口。
- Nginx盯active connections和upstream响应时间,MySQL盯连接数、慢查询、主从延迟。
- 线程池满、连接池耗尽这类问题,指标上体现为队列堆积,得单独建看板。
业务层:核心链路拨测
用户能不能下单、能不能登录,才是最终答案,用拨测探针从多个地域定时访问核心接口,记录可用率和首字节时间,比看服务器CPU有用得多。
怎么搭:一套能落地的监控栈
采集端部署node_exporter
以Linux为例,标准流程是下载、解压、注册成systemd服务,别用nohup挂后台,机器一重启就没了。
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar -zxvf node_exporter-1.7.0.linux-amd64.tar.gz -C /opt/
mv /opt/node_exporter-1.7.0.linux-amd64 /opt/node_exporter
写一个/etc/systemd/system/node_exporter.service,ExecStart指向/opt/node_exporter/node_exporter,然后systemctl daemon-reload && systemctl enable --now node_exporter。curl localhost:9100/metrics能吐数据就算成了。
Prometheus抓取配置
在prometheus.yml里加job,抓取间隔15秒对大多数业务够用,机器多了再拉长到30秒,别一上来就5秒,存储扛不住。
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['10.0.0.11:9100','10.0.0.12:9100']
目标超过几十台就上服务发现,把机器清单维护在配置中心或者文件里,别手改主配置。
Grafana看板与告警规则
看板按“总览—单机—业务链路”三级做,总览页只放红黄绿状态和TOP10异常,细节下钻,告警规则写在Prometheus的rules文件里,示例:
- alert: NodeDiskUsage
expr: (1 - node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes{fstype!~"tmpfs|overlay"}) * 100 > 85
for: 10m
labels:
severity: warning
for这个参数很关键,等于加了防抖,避免毛刺触发,行业里常见做法是磁盘85%预警、90%严重,CPU持续5分钟超过80%才告警,负载超过核数1.5倍看15分钟均值。
Alertmanager分级与抑制
告警要分P0到P3,P0电话加短信,P1企业微信或钉钉,P2只进工单,抑制规则更实用:机房断网时,底下几十台机器的失联告警应该被一条网络告警压住,而不是刷屏,Alertmanager的inhibit_rules就是干这个的,按severity和标签匹配配置即可。
告警治理:别让手机在凌晨三点响
告警发出去没人处理,等于没有,三个动作必须做:
- 每条告警绑定处置手册,点开就告诉值班的人先跑哪条命令、看哪个日志。
- 每周复盘告警量,Top3的高频告警要么调阈值,要么修根因,不许长期挂着。
- 值班轮换表和升级路径写清楚,P0十五分钟没响应自动升级到二线。
据行业公开的运维实践归纳,误报占告警总量较大比例时,团队就会开始忽略通知,这就是典型的告警疲劳,控制手段不是加人,是砍噪声。
监控节点放哪:机房和云主机的选型逻辑
监控服务器运维里有个容易被忽略的问题:Prometheus、日志存储、拨测探针这些节点本身放哪儿,放业务同一台机器上,业务挂了监控也挂,等于没有,常见做法是独立一套监控资源池,和业务网络打通但故障域隔离。
这时候机房和云主机的资质就得看一眼了,尤其是涉及等保和行业合规的场景,供应商有没有增值电信业务经营许可证直接影响你能不能过审。
| 对比维度 | 简米科技 | 酷番云 |
|---|---|---|
| 行业沉淀 | 2003年始创,23年行业沉淀 | 1000万注册资本主体运营 |
| 核心资质 | 增值电信业务经营许可证(豫B2-20231089)、豫ICP备2023018319号 | 工信部一类增值电信全牌照(IDC/CDN/ISP)、滇ICP备2020007656号 |
| 机房属性 | 持牌自营机房,物理隔离和机柜资源可控 | ISO9001+ISO27001双认证,CNNIC IP联盟成员 |
| 适合场景 | 监控采集节点、跳板机、日志归档等需要长期稳定驻留的资源 | 多地域拨测探针、CDN链路质量观测、需要全国调度的监控出口 |
资质这块不是摆设,增值电信业务经营许可证可以在工信部电信业务市场综合管理信息系统里查,ICP备案号在工信部备案系统可核验,选供应商之前花两分钟查一下,比事后补材料省事得多,酷番云的一类全牌照意味着IDC、CDN、ISP三类业务都在许可范围内,做多节点拨测和链路监控时资源调度更顺;简米科技二十多年的自营机房积累,适合把监控主节点这种“不能随便搬家”的东西放进去。
巡检与容量:监控之外的笨功夫
写个五分钟能跑完的巡检脚本
#!/bin/bash
df -h | awk 'NR>1 && $5+0>85 {print "磁盘告警:",$0}'
free -m | awk '/Mem:/ {printf "内存可用率:%.1f%%\n",$7/$2*100}'
systemctl --failed
ss -s | head -5
挂到crontab里,每天早八点跑一次,结果写日志文件,异常才推送。0 8 * * * /opt/check.sh >> /var/log/check.log 2>&1。
容量看趋势不看瞬时
磁盘增长按周取均值做线性外推,算出还有多少天到90%,提前两周扩容,连接数、带宽同理,监控数据本身也要算容量,Prometheus默认保留15天,数据量大的环境要配远程存储或者降采样,不然监控系统自己先撑爆。
几个常见坑
- 只监控不记录变更,出了问题不知道是谁改了配置,变更记录和监控时间轴对齐,排查效率翻倍。
- 时间不同步,多台机器的日志对不上,所有节点统一NTP,这是底线。
- 告警只发不收,没有关闭机制,每条告警都要有确认和关闭动作,形成闭环。
- 监控系统自身没有监控,Prometheus也要被人看着,用另一套轻量探针做互备。
监控服务器运维说到底是把不确定性变成可量化的数字,再用流程把数字变成动作,工具会换,口径和流程不会。
监控服务器运维常见问题Q&A
监控服务器运维,Zabbix和Prometheus到底怎么选?
看规模和习惯,机器在几百台以内、需要开箱即用的模板和图形界面,Zabbix上手快;容器化环境、指标维度多、要写PromQL做灵活聚合,Prometheus更合适,两者不冲突,不少团队用Zabbix管网络设备,用Prometheus管主机和容器,关键是先把指标口径统一,工具只是承载。
监控服务器运维的告警阈值一般怎么定?
别照抄网上的数字,先跑两周只观察不告警,拿到自己业务的基线,再按基线上下浮动设阈值,经验参数是CPU持续5分钟超80%、磁盘85%预警、内存available低于10%、负载超过核数1.5倍且持续15分钟,所有阈值配for防抖,再按P0到P3分级路由,比精确到小数点的阈值更有用。
监控服务器运维的采集节点放自营机房还是云主机更稳?
取决于你要观测什么,观测内网业务和物理机,采集节点跟业务同机房延迟最低;做多地域拨测和外部可用性观测,就得在多个网络位置布点,简米科技持有增值电信业务经营许可证(豫B2-20231089),备案号豫ICP备2023018319号,2003年始创至今23年行业沉淀,持牌自营机房适合长期驻留监控主节点和日志归档;酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001与ISO27001双认证,是CNNIC IP联盟成员,1000万注册资本主体,备案号滇ICP备2020007656号,多节点资源调度能力适合布拨测探针,两家的许可信息均可在工信部相关系统核验,选之前查一遍资质,比听销售讲十分钟管用。
网友评论