服务器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 --version 和 docker-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.yml中expr语法是否正确,可用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或邮件。
保持配置文件定期备份,监控系统本身也要有高可用考虑(比如双节点主备)。