智能运维落地案例:从零搭建服务器监控告警系统

智能运维落地案例:从零搭建服务器监控告警系统

很多刚接手服务器的运维新手都会遇到同一个问题:服务器出故障时总是最后一个知道
手动登录排查既慢又容易遗漏,这就是智能运维要解决的核心痛点。
本文通过一个完整的落地案例,带你从零开始用开源工具搭建一套实用的服务器监控告警系统,适合刚接触运维、想快速构建基础监控能力的读者。
读完你就能在自己的服务器上部署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告警没有数据源。

验证效果:查看监控面板与告警

  1. 在Grafana中添加一个Dashboard,导入官方模板ID(如“1860”),即可看到服务器CPU、内存、磁盘等图表。
  2. 故意给服务器制造负载(如stress --cpu 4 --timeout 60),观察Grafana实时变化,并查看告警是否触发。
  3. 在Alertmanager的web界面(http://服务器IP:9093)查看告警状态。

如果你按照本文步骤完整执行,现在已经拥有一套基础的智能运维监控系统。
实际生产环境还需要根据业务调整指标和告警规则,但框架已经跑通。
遇到异常时,优先检查服务状态和日志(journalctl -u prometheus -f),再对照本文的高频问题部分排查。

分享到:
上一篇
AIOps平台建设:零基础搭建 AIOps 平台
下一篇
零基础搭建服务器AI监控系统:用Netdata实现智能异常告
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意