在Linux服务器上搭建容器编排平台后,配置高可用的监控系统能够有效避免单点故障,确保监控数据不丢失、告警服务持续可用,为集群稳定运行提供保障。本文以Kubernetes作为容器编排平台示例,介绍基于Prometheus和Grafana的高可用监控配置方法。

监控架构设计
高可用监控架构需要避免核心组件单点故障,整体设计如下:
- Prometheus采用多实例部署,通过Prometheus Operator实现配置管理和服务发现
- 使用Thanos实现Prometheus数据的统一存储和查询,支持多Prometheus实例数据聚合
- Grafana部署多实例,通过负载均衡对外提供服务,配置统一的数据源指向Thanos Query
- 监控数据持久化到分布式存储,避免节点故障导致数据丢失
前置环境准备
首先确保Linux节点满足以下条件:
- 已部署Kubernetes集群,版本不低于1.20
- 节点至少2核4G配置,推荐3个及以上Master节点实现高可用
- 已安装kubectl命令行工具,且能正常访问集群
- 集群已配置持久化存储类,支持动态卷申请
部署Prometheus高可用实例
使用Prometheus Operator部署多组Prometheus实例,每组实例监控不同的集群资源,同时保证单组实例故障不影响整体监控。
创建Prometheus实例配置
首先创建第一个Prometheus实例的自定义资源定义:
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus-ha-1
namespace: monitoring
spec:
replicas: 2 # 每个Prometheus实例部署2个副本
serviceAccountName: prometheus
serviceMonitorSelector:
matchLabels:
team: infra
resources:
requests:
memory: 2Gi
storage:
volumeClaimTemplate:
spec:
storageClassName: ceph-rbd # 替换为你的存储类名称
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 50Gi
再创建第二个Prometheus实例,修改metadata.name为prometheus-ha-2,调整serviceMonitorSelector匹配不同的监控目标,实现监控负载拆分。
部署Prometheus Operator
执行以下命令部署Prometheus Operator:
# 下载Prometheus Operator部署文件 wget https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/bundle.yaml # 修改bundle.yaml中的namespace为monitoring,然后部署 kubectl create namespace monitoring kubectl apply -f bundle.yaml -n monitoring # 部署上面创建的两个Prometheus实例配置 kubectl apply -f prometheus-ha-1.yaml -n monitoring kubectl apply -f prometheus-ha-2.yaml -n monitoring
部署Thanos实现数据统一存储
Thanos可以将多个Prometheus实例的数据聚合,提供统一的查询入口,同时支持数据长期存储。
部署Thanos Sidecar
为每个Prometheus实例配置Thanos Sidecar,将Prometheus数据同步到对象存储:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: prometheus-ha-1-thanos-sidecar
namespace: monitoring
spec:
serviceName: prometheus-ha-1-thanos-sidecar
replicas: 2
selector:
matchLabels:
app: prometheus-ha-1-thanos-sidecar
template:
metadata:
labels:
app: prometheus-ha-1-thanos-sidecar
spec:
containers:
- name: thanos-sidecar
image: thanosio/thanos:v0.31.0
args:
- sidecar
- --prometheus.url=http://prometheus-ha-1:9090
- --objstore.config-file=/etc/thanos/objstore.yaml
volumeMounts:
- name: objstore-config
mountPath: /etc/thanos
volumes:
- name: objstore-config
configMap:
name: thanos-objstore-config # 对象存储配置文件
部署Thanos Query
Thanos Query提供统一的查询接口,聚合所有Prometheus实例的数据:
apiVersion: v1
kind: Service
metadata:
name: thanos-query
namespace: monitoring
spec:
ports:
- port: 9090
targetPort: 9090
selector:
app: thanos-query
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: thanos-query
namespace: monitoring
spec:
replicas: 3 # 多副本实现高可用
selector:
matchLabels:
app: thanos-query
template:
metadata:
labels:
app: thanos-query
spec:
containers:
- name: thanos-query
image: thanosio/thanos:v0.31.0
args:
- query
- --store=dnssrv+thanos-sidecar.monitoring.svc.cluster.local:9091 # 自动发现所有Sidecar
ports:
- containerPort: 9090
部署高可用Grafana
Grafana用于展示监控数据,部署多实例并通过负载均衡提供服务:
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana
namespace: monitoring
spec:
replicas: 3 # 多副本避免单点故障
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
containers:
- name: grafana
image: grafana/grafana:9.5.0
ports:
- containerPort: 3000
env:
- name: GF_DATABASE_TYPE
value: postgres # 使用PostgreSQL存储Grafana配置,实现多实例配置同步
- name: GF_DATABASE_HOST
value: postgres-ha:5432
- name: GF_DATABASE_USER
value: grafana
- name: GF_DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: grafana-db-secret
key: password
volumeMounts:
- name: grafana-storage
mountPath: /var/lib/grafana
volumes:
- name: grafana-storage
persistentVolumeClaim:
claimName: grafana-pvc
---
apiVersion: v1
kind: Service
metadata:
name: grafana-lb
namespace: monitoring
spec:
ports:
- port: 3000
targetPort: 3000
selector:
app: grafana
type: LoadBalancer
部署完成后,访问Grafana负载均衡地址,添加数据源时选择Prometheus,地址填写Thanos Query的Service地址http://thanos-query:9090,即可查看所有Prometheus实例聚合后的监控数据。
配置告警高可用
告警组件也需要实现高可用,避免告警丢失:
- 部署多个Alertmanager实例,组成集群,通过Gossip协议同步告警状态
- Prometheus实例配置所有Alertmanager实例地址,实现告警发送负载均衡
- 告警规则统一通过Prometheus Operator的PrometheusRule资源进行管理,自动同步到所有Prometheus实例
验证高可用能力
完成部署后,可以通过以下方式验证高可用:
- 停止其中一个Prometheus实例,检查Thanos Query是否仍能查询到完整数据,Grafana监控面板是否正常展示
- 停止其中一个Grafana实例,检查负载均衡是否将请求转发到其他正常实例
- 模拟节点故障,检查存储数据是否完整,服务是否自动迁移到其他节点
通过以上配置,即可在Linux上实现容器编排平台的高可用监控,保障监控系统自身的稳定性,为容器集群提供可靠的监控保障。
Linux容器编排平台高可用监控PrometheusGrafana修改时间:2026-07-18 07:36:36