繁体   English   中英

如何在Prometheus-operator上重新标记刮削作业?

[英]How to relabel scraping jobs on Prometheus-operator?

我第一次尝试使用Prometheus-operator,但仍在通过该方法管理Prometheus的差异中苦苦挣扎。

部署非常简单,编辑规则也很简单,但是当使用Prometheus-operator尝试使用static_configs重新标记出口商时,我找不到自己的方式。

我过去曾经做过的工作是自定义prometheus.yml并添加static_configs以包括每个出口商工作名称的标签。

我了解在Prometheus-operator的幕后,我们具有与通常相同的设置,但是我不确定如何使用该操作符从static_config配置中获得相同的结果。

据我了解,我现在必须在与出口商相关的服务监视器上设置重新标签,但是我尝试过的所有配置都没有结果:

尝试使用metricRelabelings如问题1166所述 )和StaticConfigs (如问题1086中所述),没有任何运气。

例如,这是我以前为kubernetes-cadvisor导出程序在static_config上设置标签而执行的操作,以便我的自定义标签显示在我的导出程序在摄取时间收集的所有度量标准上:

scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
kubernetes_namespace: kube-system
cluster_name: mycluster01

并在每个导出器作业上添加relabel_configs


- job_name: 'kubernetes-cadvisor'
scheme: https
tls_config:
  ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
  - target_label: cluster_name
    replacement: mycluster01
  - target_label: kubernetes_namespace
    replacement: kube-system
  - action: labelmap
    regex: __meta_kubernetes_node_label_(.+)
  - target_label: __address__
    replacement: kubernetes.default.svc:443
  - source_labels: [__meta_kubernetes_node_name]
    regex: (.+)
    target_label: __metrics_path__
    replacement: /api/v1/nodes/${1}:10250/proxy/metrics

这是一个在Prometheus-operator上使用metricRelabelings实现相同效果的metricRelabelings ,但仍然对我不起作用:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    k8s-app: node-exporter
  name: node-exporter
  namespace: monitoring
spec:
  endpoints:
  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
    interval: 30s
    port: https
    scheme: https
    tlsConfig:
      insecureSkipVerify: true
  jobLabel: k8s-app
  selector:
    matchLabels:
      k8s-app: node-exporter
  metricRelabelings:
    sourceLabels: __meta_kubernetes_node_name
    targetLabel: node

我希望实现的目标是在导出器上创建一个静态标签,以便所有度量标准都带有我在抓取时定义的自定义标签,而不必手动为集群中的所有部署定义自定义标签。

在此先感谢您的帮助!

让我们看一下它是如何工作的。 首先,部署示例应用程序的四个实例,这些实例在端口8080上侦听并公开指标。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: example-application
spec:
  replicas: 4
  template:
    metadata:
      labels:
        app: example-application
    spec:
      containers:
      - name: example-application
        image: fabxc/instrumented_app
        ports:
        - name: backend
          containerPort: 8080

ServiceMonitor具有标签选择器,可以选择服务及其基础的Endpoint对象。 示例应用程序的Service对象通过具有示例应用程序值的应用程序标签选择Pod。 服务对象还指定公开度量标准的端口。

kind: Service
apiVersion: v1
metadata:
  name: example-application
  labels:
    app: example-application
spec:
  selector:
    app: example-application
  ports:
  - name: backend
    port: 8080

该Service对象由ServiceMonitor发现,后者以相同的方式进行选择。 应用标签必须具有值example-application。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: example-application
  labels:
    team: backend-team
spec:
  selector:
    matchLabels:
      app: example-application
  endpoints:
  - port: backend

Prometheus对象定义serviceMonitorSelector来指定应包括哪些ServiceMonitors。 在标签team: backend-team上方team: backend-team指定了team: backend-team ,这就是Prometheus对象选择的依据。

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  name: prometheus
spec:
  serviceMonitorSelector:
    matchLabels:
      team: backend-team
  resources:
    requests:
      memory: 400Mi

这使后端团队可以创建新的ServiceMonitor和服务,从而可以动态地重新配置Prometheus。

您也可以在此站点上阅读以在Prometheus Operator中阅读有关ServiceMonitor的更多信息。

似乎我错过了Operator信息库中的说明。...仔细查看后,我发现了一些非常不错的示例...看来,我的问题的答案是作为秘密创建额外的抓取配置,类似于以下链接中的示例: Additional-scrape-configs.yaml

还可以在以下位置找到一些其他步骤: Additional-scrape-config

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM