服务器7乘24小时监控告警搭建:零基础搭建服务器7x24小时

为什么你的服务器急需7x24小时监控告警

服务器宕机、磁盘写满、CPU跑满……如果只能在上班时间发现,损失已经造成。
搭建一套7x24小时监控告警系统,就是给服务器装上一个永不休息的“体检医生”。
当资源使用率超过阈值或服务不可达时,它能秒级推送告警到你的手机(钉钉、微信或邮件),让你哪怕在半夜也能及时处理。

准备工作:一台服务器 + Docker环境

你需要一台Linux服务器(CentOS 7/Ubuntu 20.04以上),并确保已安装Docker和Docker Compose。
如果没有装,先执行以下命令(CentOS为例):

# 安装Docker
curl -fsSL https://get.docker.com | bash
sudo systemctl enable --now docker

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

确认版本:docker --versiondocker-compose --version
如果你的服务器内存小于1GB,建议先关闭不必要服务,否则监控组件可能跑不起来。

核心步骤:用Docker Compose一键部署监控栈

在服务器任意目录(如/opt/monitor)新建文件docker-compose.yml,内容如下:

version: '3'
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    restart: always

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    ports:
      - "9100:9100"
    restart: always

  alertmanager:
    image: prom/alertmanager:latest
    container_name: alertmanager
    ports:
      - "9093:9093"
    volumes:
      - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
    restart: always

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin123
    volumes:
      - grafana_data:/var/lib/grafana
    restart: always

volumes:
  prometheus_data:
  grafana_data:

同时创建prometheus.yml配置文件:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

rule_files:
  - "alert-rules.yml"

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - alertmanager:9093

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets:
        - node-exporter:9100

再创建alert-rules.yml,定义一条简单告警规则(CPU使用率超过80%持续1分钟):

groups:
  - name: node_alerts
    rules:
      - alert: HighCPUUsage
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) > 80
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "Instance {{ $labels.instance }} CPU usage > 80%"
          description: "CPU usage is at {{ $value }}%"

最后创建alertmanager.yml配置钉钉通知(以钉钉机器人为例):

route:
  receiver: 'dingtalk'
receivers:
  - name: 'dingtalk'
    webhook_configs:
      - url: 'https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN'
        send_resolved: true

docker-compose.yml同目录下放入以上三个配置文件,然后执行:

docker-compose up -d

等待镜像拉取并启动,使用docker-compose ps确认所有容器状态为“Up”。

避坑指南:常见错误与调整

  • 磁盘空间不足:Docker镜像和Prometheus数据会占用几GB空间,建议监控数据保留7天,可在prometheus.yml中增加storage.tsdb.retention.time=7d
  • 钉钉Token失效:钉钉自定义机器人必须开启“安全设置”,推荐使用IP地址(服务器公网IP)白名单,否则告警发不出去。
  • 端口占用:确保9000(Prometheus)、9093(Alertmanager)、3000(Grafana)、9100(Node Exporter)未被占用。如果冲突,修改docker-compose.yml的端口映射。
  • 告警规则不生效:检查alert-rules.ymlexpr语法是否正确,可用Prometheus内置的表达式浏览器测试:访问http://服务器IP:9090/graph

效果验证:从Grafana看板到手机告警

打开浏览器访问http://服务器IP:3000,用账号admin密码admin123登录Grafana。
添加数据源:选择Prometheus,URL填http://prometheus:9090,保存并测试。
然后导入Node Exporter官方看板(ID:1860),就能看到CPU、内存、磁盘、网络等实时图表。

模拟CPU高负载来验证告警:在服务器上执行stress --cpu 4 --timeout 120(需先安装stress工具)。
等待约2分钟,你的钉钉就会收到“HighCPUUsage”告警消息。
此时返回Grafana,你能看到CPU曲线冲高。
一切正常,说明7x24小时监控告警搭建成功。

后续建议:添加更多规则(磁盘使用率、内存不足、服务健康检查),还可以对接企业微信、Slack或邮件。
保持配置文件定期备份,监控系统本身也要有高可用考虑(比如双节点主备)。

分享到:
上一篇
服务器全自动备份与恢复方案教程
下一篇
服务器负载均衡配置提升并发:服务器负载均衡配置与并发提升实操
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意