OpenShift-Prometheus使用集群外部Prometheus级联的方法实现多集群统一监控告警
背景
大家知道OpenShfit官方通过Prometheus Operator可以快速构建高可用的监控告警平台,它不仅能够收集集群本身的监控指标,还可以通过ServiceMonitor扩展以监控应用自身的指标,实现单集群内部的统一监控。但是生产实践中,我们并不会只采用一个OpenShift部署应用,还会部署非容器应用,在非容器环境下也可能会部署Prometheus来监控相关服务(特别是现在Prometheus已经成为了监控的一个标配),甚至有可能会在不同的网络区部署多个集群,由于不同网络的隔离特性显然一组Prometheus是无法满足所有平台及应用的监控的。这就使得生产中会有很多套Prometheus集群需要管理与维护,查看监控指标也很分散,也就让我们想到必须采用一种办法能够将各处的指标统一收集,实现多集群多Prometheus服务的统一监控。
目前实现这种要求的方法主要有两个,一个是通过Prometheus联邦 Federate,另一个是通过Thanos。今天主要介绍集群外部如何使用Prometheus联邦机制收集OpenShift内部Prometheus服务的监控指标。
操作
实现其实很简单,主要就是配置外部Prometheus的prometheus.yml文件来实现Prometheus联邦。具体配置如下,后面有相关重要配置的详细说明
1 | global: |
'match[]'= '{__name__=~".+"}'
表示所有的指标都收集,如果只需要收集部分的话,可以通过类似- '{job="node-exporter"}'
格式筛选Label
指定。- 除了使用bearer_token的方式认证,也可以使用basic_auth的方式认证,openshift默认安装的Prometheus支持这两种方式认证,basic_auth的用户名:
internal
与密码在secret grafana-datasources中,具体获取方式如下:1
2
3#用户名为 internal
#获取密码脚本
oc get secret grafana-datasources -o yaml -n openshift-monitoring | grep prometheus | awk '{print $2}' | base64 -d | grep basicAuthPassword | awk -F\" '{print $4}' 通过创建一个serviceaccount来获取它的Token 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18apiVersion: v1
kind: ServiceAccount
metadata:
name: prom-fed
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: prom-fed
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: prom-fed
namespace: kube-system1
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep prom-fed | awk '{print $1}')
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论