智能运维落地案例:从零搭建服务器监控告警系统
智能运维落地案例:从零搭建服务器监控告警系统
很多刚接手服务器的运维新手都会遇到同一个问题:服务器出故障时总是最后一个知道。
手动登录排查既慢又容易遗漏,这就是智能运维要解决的核心痛点。
本文通过一个完整的落地案例,带你从零开始用开源工具搭建一套实用的服务器监控告警系统,适合刚接触运维、想快速构建基础监控能力的读者。
读完你就能在自己的服务器上部署Prometheus收集指标,用Grafana展示数据,并配置告警规则及时收到通知。
你需要准备什么
- 一台Linux服务器(如CentOS 7/8、Ubuntu 20.04/22.04,内存建议2GB以上)
- 基本命令行操作能力(会执行命令、编辑文件即可)
- 能够通过浏览器访问服务器IP(测试Grafana面板)
- 一个邮件或企业微信通知账号(用于接收告警,非必需但推荐)
核心部署:Prometheus + Grafana + Alertmanager
1. 下载并启动Prometheus
以当前稳定版本为例,进入/opt目录,下载并解压:
cd /opt
wget https://github.com/prometheus/prometheus/releases/download/v2.53.0/prometheus-2.53.0.linux-amd64.tar.gz
tar -xzf prometheus-2.53.0.linux-amd64.tar.gz
mv prometheus-2.53.0.linux-amd64 prometheus
创建系统服务(使用systemd)。
新建文件/etc/systemd/system/prometheus.service,内容如下:
[Unit]
Description=Prometheus Server
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml
Restart=always
[Install]
WantedBy=multi-user.target
执行以下命令启动:
systemctl daemon-reload
systemctl enable --now prometheus
验证:访问http://服务器IP:9090,看能否打开Prometheus自带页面。
2. 安装并配置Grafana
Grafana用于可视化监控数据。
直接使用官方仓库安装:
sudo apt-get install -y software-properties-common # Ubuntu
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt-get update
sudo apt-get install grafana
# CentOS:
# sudo yum install -y https://dl.grafana.com/oss/release/grafana-10.4.3-1.x86_64.rpm
启动Grafana:
systemctl enable --now grafana-server
打开浏览器访问http://服务器IP:3000,默认用户名和密码都是admin,登录后按提示修改密码。
添加Prometheus数据源:
- 点击左上角菜单 → Connections → Data sources → Add data source
- 选择Prometheus,在URL框中输入
http://localhost:9090,点击Save & Test。
3. 配置智能告警(Alertmanager)
下载Alertmanager:
cd /opt
wget https://github.com/prometheus/alertmanager/releases/download/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gz
tar -xzf alertmanager-0.27.0.linux-amd64.tar.gz
mv alertmanager-0.27.0.linux-amd64 alertmanager
修改Prometheus配置文件/opt/prometheus/prometheus.yml,在rule_files下增加告警规则文件,并添加alertmanager地址:
rule_files:
- "alert_rules.yml"
alerting:
alertmanagers:
- static_configs:
- targets:
- "localhost:9093"
创建告警规则文件/opt/prometheus/alert_rules.yml,示例:
groups:
- name: server_alerts
rules:
- alert: HighCpuUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "CPU使用率超过80% (instance {{ $labels.instance }})"
重启Prometheus生效:
systemctl restart prometheus
同样为Alertmanager创建systemd服务,启动并设为开机自启。
常见避坑与高频问题解答
Q:Prometheus页面打不开?
检查防火墙是否放行了9090端口。执行systemctl stop firewalld临时关闭测试,确认后配置放行规则。
Q:Grafana一直没数据显示?
大概率是数据源URL填错了,确认Prometheus服务正常且能访问http://localhost:9090。也可以检查服务器是否开启了SELinux,临时setenforce 0测试。
Q:告警没有收到通知?
默认Alertmanager只打印日志,没有配置接收器。你需要配置alertmanager.yml,添加email或webhook。邮件通知示例:
receivers:
- name: 'email'
email_configs:
- to: 'admin@example.com'
from: 'alert@example.com'
smarthost: smtp.example.com:587
auth_username: 'alert@example.com'
auth_password: 'yourpassword'
避坑提醒:
- 千万别在生产环境直接改Prometheus配置,先在测试环境验证规则。
- node_exporter务必在每台被监控的服务器上安装(本文未展开,但建议加上),否则CPU告警没有数据源。
验证效果:查看监控面板与告警
- 在Grafana中添加一个Dashboard,导入官方模板ID(如“1860”),即可看到服务器CPU、内存、磁盘等图表。
- 故意给服务器制造负载(如
stress --cpu 4 --timeout 60),观察Grafana实时变化,并查看告警是否触发。 - 在Alertmanager的web界面(
http://服务器IP:9093)查看告警状态。
如果你按照本文步骤完整执行,现在已经拥有一套基础的智能运维监控系统。
实际生产环境还需要根据业务调整指标和告警规则,但框架已经跑通。
遇到异常时,优先检查服务状态和日志(journalctl -u prometheus -f),再对照本文的高频问题部分排查。