Openshift:可靠的Kubernetes发行版

OpenShift Prometheus使用集群外部Promet

2020-11-25  本文已影响0人  潘晓华Michael
OpenShift 和 Prometheus

背景

大家知道OpenShfit官方通过Prometheus Operator可以快速构建高可用的监控告警平台,它不仅能够收集集群本身的监控指标,还可以通过ServiceMonitor扩展以监控应用自身的指标,实现单集群内部的统一监控。但是生产实践中,我们并不会只采用一个OpenShift部署应用,还会部署非容器应用,在非容器环境下也可能会部署Prometheus来监控相关服务(特别是现在Prometheus已经成为了监控的一个标配),甚至有可能会在不同的网络区部署多个集群,由于不同网络的隔离特性显然一组Prometheus是无法满足所有平台及应用的监控的。这就使得生产中会有很多套Prometheus集群需要管理与维护,查看监控指标也很分散,也就让我们想到必须采用一种办法能够将各处的指标统一收集,实现多集群多Prometheus服务的统一监控。
目前实现这种要求的方法主要有两个,一个是通过Prometheus联邦 Federate,另一个是通过Thanos。今天主要介绍集群外部如何使用Prometheus联邦机制收集OpenShift内部Prometheus服务的监控指标。

操作

实现其实很简单,主要就是配置外部Prometheus的prometheus.yml文件来实现Prometheus联邦。具体配置如下,后面有相关重要配置的详细说明

global:
  evaluation_interval: 15s
  scrape_interval: 15s
  scrape_timeout: 10s

- job_name: prometheus_test
  honor_labels: true
  metrics_path: '/federate'
  params:
    'match[]':
      - '{__name__=~".+"}'
  scheme: https
  tls_config:
    insecure_skip_verify: true
#basic_auth:
#  username: 'internal'
#  password: <PASSWORD>
  bearer_token: <TOKEN>
  static_configs:
  - targets: ['prometheus-k8s-openshift-monitoring.app.group.domain:443']
    labels:
      env: test
$ #用户名为 internal
$ #获取密码脚本
$ oc get secret grafana-datasources -o yaml -n openshift-monitoring | grep prometheus | awk '{print $2}' | base64 -d | grep basicAuthPassword | awk F\" '{print $4}'
apiVersion: 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-system
$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep prom-fed | awk '{print $1}')
监控Targets 联邦Prometheus上展示监控指标
上一篇下一篇

猜你喜欢

热点阅读