繁体   English   中英

只监控一个命名空间 pod - Prometheus & Kube.netes & cadvisor

[英]Monitor only one namespace pods - Prometheus & Kubernetes & cadvisor

我已经在 kube.netes 上部署了 istio,并且我从 istio 插件安装了 prometheus。 我的目标是只监控一个应用程序的某些 pod(例如 bookinfo 应用程序的所有 pod)。 监控 Pod 的作业定义如下:

    - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      job_name: kubernetes-nodes-cadvisor
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      - replacement: kubernetes.default.svc:443
        target_label: __address__
      - regex: (.+)
        replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor
        source_labels:
        - __meta_kubernetes_node_name
        target_label: __metrics_path__
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true

我的问题是我不知道如何只监控一个命名空间的 pod。 例如,我将 bookinfo 应用程序部署在名为 Book 的命名空间中。 我只想要来自命名空间 Book 的 pod 的指标。 但是,prometheus 将收集节点的所有 pod 指标。 我不想更改应用程序的注释,例如Monitor only one namespace metrics - Prometheus with Kube.netes ,我想知道是否有一种方法可以通过更改上面的作业定义来 select 只有一个命名空间。 或者有什么方法可以通过它的标签来选择监控器?

以下将匹配所有目标 pod 与 label: some_label与任何值。

relabel_configs:
  - action: keep
    source_labels: [__meta_kubernetes_pod_label_some_label]
    regex: (.*)

如果您想使用 label: monitor和 value: true保留目标,您将执行以下操作:

relabel_configs:
  - action: keep
    source_labels: [__meta_kubernetes_pod_label_monitor]
    regex: true

所有不匹配的 pod 都将从抓取中删除。

你应该能够对命名空间做同样的事情:

relabel_configs:
  - action: keep
    source_labels: [__meta_kubernetes_namespace]
    regex: Book

编辑 >

有没有办法将 [container_label_io_kubernetes_container_name] 标签更改为“container_name”?

尝试这个:

relabel_configs:
  - action: replace
    source_labels: [container_label_io_kubernetes_container_name]
    target_label: container_name

普罗米修斯文档中有关配置的所有内容都有说明

我在 cadvisor 的文档中找到了一个方法。 https://github.com/google/cadvisor/blob/master/docs/runtime_options.md说我们可以更改参数'--docker_only'和'--raw_cgroup_prefix_whitelist'来选择要监控的容器。

这对我有用。

  - job_name: "kubernetes-cadvisor"
    scheme: https
    metrics_path: /metrics/cadvisor
    tls_config:
      ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      # disable certificate verification by uncommenting the line below.
      # insecure_skip_verify: true
    authorization:
      credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    kubernetes_sd_configs:
      - role: node
    relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
    metric_relabel_configs:
      - action: keep
        source_labels: [namespace]
        regex: tsb. #namespace name you want

暂无
暂无

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

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