如何在Linux上配置高可用的容器监控

来源:站长工具作者:松本一香头衔:网络博主
导读:本期聚焦于小伙伴创作的《如何在Linux上配置高可用的容器监控》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上配置高可用的容器监控》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统上运行容器化服务时,单节点的监控方案容易出现单点故障,导致监控数据中断,无法及时感知容器异常。高可用的容器监控架构可以解决这一问题,保障监控服务的持续可用。

核心组件选型

我们选用以下组件搭建高可用监控架构:

  • Prometheus:负责采集容器和宿主机的监控指标,支持多实例部署实现高可用
  • Grafana:负责监控数据的可视化展示,支持多实例负载均衡
  • Alertmanager:负责告警规则触发和告警通知,支持集群部署
  • Node Exporter:采集Linux宿主机的基础指标
  • cAdvisor:采集容器的运行指标

基础环境准备

准备两台配置相同的Linux服务器,假设IP分别为192.168.0.10和192.168.0.11,安装Docker和Docker Compose,确保两台服务器之间网络互通。

部署高可用Prometheus集群

Prometheus本身不支持原生的集群模式,我们可以通过联邦采集或者多实例采集相同目标的方式实现高可用,这里采用多实例采集相同目标的方案。

配置Prometheus实例

在192.168.0.10上创建Prometheus配置文件prometheus.yml

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: "node_exporter"
    static_configs:
      - targets: ["192.168.0.10:9100", "192.168.0.11:9100"]
  - job_name: "cadvisor"
    static_configs:
      - targets: ["192.168.0.10:8080", "192.168.0.11:8080"]
  - job_name: "alertmanager"
    static_configs:
      - targets: ["192.168.0.10:9093", "192.168.0.11:9093"]

在192.168.0.11上创建相同的prometheus.yml配置文件,内容一致即可。

启动Prometheus实例

两台服务器分别执行以下Docker命令启动Prometheus:

# 192.168.0.10执行
docker run -d --name prometheus 
  -p 9090:9090 
  -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml 
  prom/prometheus:latest 
  --config.file=/etc/prometheus/prometheus.yml 
  --storage.tsdb.path=/prometheus

# 192.168.0.11执行
docker run -d --name prometheus 
  -p 9090:9090 
  -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml 
  prom/prometheus:latest 
  --config.file=/etc/prometheus/prometheus.yml 
  --storage.tsdb.path=/prometheus

部署Node Exporter和cAdvisor

两台服务器都需要部署Node Exporter和cAdvisor,用于采集宿主机和容器指标。

启动Node Exporter

docker run -d --name node_exporter 
  -p 9100:9100 
  -v /proc:/host/proc:ro 
  -v /sys:/host/sys:ro 
  -v /:/rootfs:ro 
  prom/node-exporter:latest

启动cAdvisor

docker run -d --name cadvisor 
  -p 8080:8080 
  -v /:/rootfs:ro 
  -v /var/run:/var/run:rw 
  -v /sys:/sys:ro 
  -v /var/lib/docker/:/var/lib/docker:ro 
  gcr.io/cadvisor/cadvisor:latest

部署高可用Alertmanager集群

Alertmanager支持原生的集群模式,通过Gossip协议实现节点间状态同步。

配置Alertmanager

创建alertmanager.yml配置文件,两台服务器使用相同配置:

global:
  resolve_timeout: 5m

route:
  group_by: ["alertname"]
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: "webhook"

receivers:
  - name: "webhook"
    webhook_configs:
      - url: "http://127.0.0.1:5000/alert"
        send_resolved: true

cluster:
  peer: "192.168.0.10:9094,192.168.0.11:9094"

启动Alertmanager实例

192.168.0.10执行:

docker run -d --name alertmanager 
  -p 9093:9093 
  -p 9094:9094 
  -v /path/to/alertmanager.yml:/etc/alertmanager/alertmanager.yml 
  prom/alertmanager:latest 
  --config.file=/etc/alertmanager/alertmanager.yml 
  --cluster.listen-address=192.168.0.10:9094

192.168.0.11执行:

docker run -d --name alertmanager 
  -p 9093:9093 
  -p 9094:9094 
  -v /path/to/alertmanager.yml:/etc/alertmanager/alertmanager.yml 
  prom/alertmanager:latest 
  --config.file=/etc/alertmanager/alertmanager.yml 
  --cluster.listen-address=192.168.0.11:9094

部署高可用Grafana

Grafana通过连接多个Prometheus实例实现数据源高可用,前端可以通过负载均衡分发请求到多个Grafana实例。

启动Grafana实例

两台服务器分别执行:

docker run -d --name grafana 
  -p 3000:3000 
  -v grafana-storage:/var/lib/grafana 
  grafana/grafana:latest

配置Grafana数据源

登录任意一台Grafana控制台,添加Prometheus数据源,地址填写两个Prometheus实例的地址,格式为http://192.168.0.10:9090,http://192.168.0.11:9090,Grafana会自动尝试连接可用的实例。

验证高可用效果

可以手动停止其中一台服务器的Prometheus实例,观察Grafana是否还能正常展示监控数据;停止其中一台Alertmanager实例,触发告警规则观察是否能正常收到告警通知,验证高可用架构是否生效。

注意事项

  • 生产环境建议为Prometheus配置远程存储,避免本地存储数据丢失
  • 可以在两台服务器前端添加Nginx做负载均衡,提升访问稳定性
  • 定期备份Prometheus的配置文件和Grafana的仪表盘配置

PrometheusGrafanacontainer_monitoringhigh_availability修改时间:2026-07-15 01:00:40

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。