背景
prometheus 通过helm chart部署在k8s 集群上,因为很长时间没有升级了,目前计划在原来的基础上添加一个联邦功能,以让多个Prometheus的集群能统一报警配置和grafana展示。
如果不使用helm升级,怎么修改主Prometheus server的配置(主动抓取的Prometheus)这块走了很多弯路(弯路略过),最终看了prometheus operator 知道需要修改2个地方,operator 可以把被抓取Prometheus server 能添加到主Prometheus server的配置(当然这里需要重启才能主动拉到最新的配置)
配置过程
这个配置可以分为这样几步(如果已经到了解决这个问题的步骤,前面的基础配置你一定是已经完成了,这里略过)
*
1. 修改抓取配置
# 本配置来自prometheus 官网,但是按照这个配置会有很多指标抓取不到
scrape_configs:
- job_name: 'federate'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
# 这里最好修改成 - '{__name__=~".+"}' 可以抓取到所有指标,其他的两行都可以去掉
- '{job="prometheus"}'
- '{__name__=~"job:.*"}'
static_configs:
- targets:
- 'source-prometheus-1:9090'
- 'source-prometheus-2:9090'
- 'source-prometheus-3:9090'
将上面的配置转换成operator可识别的配置
operator 需要识别secret类型的配置,通过temple你可以看到其实就是进行了base64编码。
为了更好的适配我没有直接把我是先把helm chart这个下载到本地,因为我在前面弯路的时候发现有个动作是gzip搞了一把,当时花了我很多时间,防止出现幺蛾子
按照helm chart的格式把上面的配置转化到values.yml
把下面的配置添加到values.yml中
prometheus:
prometheusSpec:
additionalScrapeConfigs:
- job_name: 'prometheus-nas'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{__name__=~".+"}'
static_configs:
- targets:
- 'demo.local.host:30090'
生产base64编码的secret
# 这里只是展示怎么使用helm 生成一个secret
helm install -f values.yaml kube-prometheus-stack-1 kube-prometheus-stack --namespace=monitoring --dry-run | grep kube-prometheus-stack-1-prometheus-scrape-confg -C20
apiVersion: v1
kind: Secret
metadata:
name: kube-prometheus-stack-1-prometheus-scrape-confg
namespace: monitoring
labels:
app: kube-prometheus-stack-prometheus-scrape-confg
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/instance: kube-prometheus-stack
app.kubernetes.io/version: "65.3.1"
app.kubernetes.io/part-of: kube-prometheus-stack
chart: kube-prometheus-stack-65.3.1
release: "kube-prometheus-stack-1"
heritage: "Helm"
data:
additional-scrape-configs.yaml: "thisfnldfdfafhhfgjh4864h5gh5d4fhghsaglksdglkdsfgnfglksfgsfhgkjsf"
将这个资源提交到集群
kubectl apply -f genera-secret.yaml
修改配置,让operator 能够读取配置
use@server# kubectl get prometheus
NAME VERSION DESIRED READY RECONCILED AVAILABLE AGE
kps v2.47.1 1 4 True True 366d
kubectl edit prometheus kps
# 在spec这里添加需要加载的配置,就可以将这个配置添加到prometheus server的配置里面了
#--------------------
spec:
additionalScrapeConfigs:
key: additional-scrape-configs.yaml
name: kps-prometheus-scrape-confg