云服务器上运行的容器越来越多了,想要做个监控,可以随时查看容器的状态,最好可以配置一些告警,出现问题可以发到我的邮箱和微信上。
之前用过的监控主要是zabbix,但是容器环境下推荐的监控是promtheus,今天来部署下这个。
可以通过docker来安装,官方手册 里指引了去哪里下载,怎么配置。
docker拉去镜像如果很慢的话可以看 这个 ,出门在外,有个代理还是很方便的,如果你想购买我同款的可以考虑 这个 注册后购买我也会收到一点佣金,价格还可以
简单了解下prometheus架构,主要分三部分(当然不仅仅分三部分)

promtheus各个组件之间独立性很强,每个镜像有各自的作用,写个docker-compose.yml放一起方便
先创建个目录,所有配置文件都放里面
bashmkdir -pv ~/docker/promtheus
注意
!!!建议先看下文件再运行,我是提前配置了docker网络的
bashservices:
prometheus:
image: prom/prometheus:v3.13.3 #
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml # prom主配置文件
- ./alert.rules.yml:/etc/prometheus/alert.rules.yml # 告警规则文件
- prom_data:/prometheus # 数据持久化
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
#- '--web.enable-lifecycle' # 支持热重载配置 curl -X POST /-/reload
- '--storage.tsdb.retention.time=3d'
- '--storage.tsdb.retention.size=5GB'
- '--storage.tsdb.wal-compression'
networks:
- npm_net
node-exporter:
image: prom/node-exporter:v1.10.2
container_name: node-exporter
restart: unless-stopped
volumes:
- /proc:/host/proc:ro # 宿主机进程信息,只读挂载
- /sys:/host/sys:ro # 宿主机硬件信息,只读挂载
- /:/rootfs:ro # 宿主机根目录,读取磁盘信息
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--path.rootfs=/rootfs'
- '--collector.systemd' # 采集systemd服务状态
- '--collector.tcpstat' # 采集tcp连接指标
networks:
- npm_net
cadvisor:
image: ghcr.nju.edu.cn/google/cadvisor:v0.60.5
container_name: cadvisor
restart: unless-stopped
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
networks:
- npm_net
alertmanager:
image: prom/alertmanager:v0.34.0
container_name: alertmanager
restart: unless-stopped
volumes:
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml # alertmanager配置
- alert_data:/alertmanager
command:
- '--config.file=/etc/alertmanager/alertmanager.yml'
networks:
- npm_net
networks:
npm_net:
external: true
# 持久化卷
volumes:
prom_data: # prometheus时序数据库存储
alert_data: # alertmanager告警状态存储
prometheus.yml
bashglobal:
scrape_interval: 30s # 采集间隔:每15秒拉取一次指标
evaluation_interval: 30s # 告警规则评估周期,每15秒检查一次告警
# 加载告警规则文件
rule_files:
- "alert.rules.yml"
# 告警配置:prometheus把告警推送给alertmanager
alerting:
alertmanagers:
- static_configs:
- targets:
- alertmanager:9093 # 容器名:端口,同网络直接解析
# 采集任务配置
scrape_configs:
# 采集宿主机指标,node-exporter
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
# 采集docker容器指标,cadvisor
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
alert.rules.yml
bashgroups:
- name: host-metrics-alert # 告警组名称
rules:
# 告警名称:主机CPU使用率过高
- alert: HostHighCpuLoad
expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) > 80
for: 1m # 持续超过1分钟才触发告警,防止瞬时抖动
labels:
severity: warning # 告警级别 warning警告 / critical严重
annotations:
summary: "宿主机CPU使用率过高"
description: "实例 {{ $labels.instance }} CPU使用率已超过80%,当前值 = {{ $value }}"
# 告警:磁盘剩余空间不足
- alert: HostDiskSpaceLow
expr: 100 - (100 * (node_filesystem_avail_bytes / node_filesystem_size_bytes)) > 85
for: 2m
labels:
severity: warning
annotations:
summary: "磁盘剩余空间不足"
description: "分区 {{ $labels.mountpoint }} 使用率超过85%,请及时清理"
alertmanager.yml ,配置的告警是邮箱,别的还得研究研究
bashglobal:
resolve_timeout: 5m # 故障恢复后,等待5分钟发送恢复通知
# -------- SMTP邮箱配置 --------
smtp_smarthost: 'smtp.qq.com:465' # QQ邮箱SMTP服务器+SSL端口
smtp_from: 'galen.wang@foxmail.com' # 发件邮箱,就是你的邮箱
smtp_auth_username: 'galen.wang@foxmail.com' # SMTP登录用户名
smtp_auth_password: 'lxxxxxxxxcg' # 填授权码!不是邮箱密码
smtp_require_tls: false # 465端口SSL模式,关闭TLS校验
# 路由规则:告警分组、合并、分发
route:
group_by: ['alertname'] # 根据告警名称分组,相同告警合并消息
group_wait: 10s # 收到第一条告警后,等待10s,收集同组告警一起发送
group_interval: 10s # 同一组告警,连续两次推送最小间隔
repeat_interval: 1h # 同一个告警,重复发送间隔1小时,防止轰炸
receiver: 'email-receiver' # 默认接收者,下面定义的邮件接收器
receivers:
- name: 'email-receiver'
email_configs:
- to: 'galen.wang@foxmail.com' # 收件邮箱,发给自己
send_resolved: true # 告警恢复时,同样发送恢复邮件
# 抑制规则:严重告警触发时,抑制同实例的警告告警,避免短时间大量邮件
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'instance']
检查文件没有问题就执行
bashdocker compuse up -d
本文作者:油炸臭豆腐
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!