仅监控一个命名空间 pods - Prometheus & Kubernetes & cadvisor
Monitor only one namespace pods - Prometheus & Kubernetes & cadvisor
我已经在 kubernetes 上部署了 istio,并且我从 istio 插件安装了 prometheus。我的目标是只监控一个应用程序的某些 pods(例如 bookinfo 应用程序的所有 pods)。监控pods的作业定义如下:
- 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//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
我的问题是我不知道如何只监控一个命名空间的 pods。例如,我将 bookinfo 应用程序部署在名为 Book 的命名空间中。我只想要来自命名空间 Book 的 pods 的指标。但是,prometheus 将收集节点的所有 pods 指标。我不想像 Monitor only one namespace metrics - Prometheus with Kubernetes 那样更改应用程序的注释,而是想知道是否有一种方法可以通过更改上面的作业定义来 select 只有一个命名空间。或者有什么方法可以通过标签选择显示器 pods?
以下将匹配所有目标 pods 与标签:some_label
与任何值。
relabel_configs:
- action: keep
source_labels: [__meta_kubernetes_pod_label_some_label]
regex: (.*)
如果你想保留带有标签的目标:monitor
和值:true
你会这样做:
relabel_configs:
- action: keep
source_labels: [__meta_kubernetes_pod_label_monitor]
regex: true
所有不匹配的pods将从抓取中删除。
您应该能够对命名空间执行相同的操作:
relabel_configs:
- action: keep
source_labels: [__meta_kubernetes_namespace]
regex: Book
编辑 >
is there a way to change the [container_label_io_kubernetes_container_name] labels into "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
我已经在 kubernetes 上部署了 istio,并且我从 istio 插件安装了 prometheus。我的目标是只监控一个应用程序的某些 pods(例如 bookinfo 应用程序的所有 pods)。监控pods的作业定义如下:
- 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//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
我的问题是我不知道如何只监控一个命名空间的 pods。例如,我将 bookinfo 应用程序部署在名为 Book 的命名空间中。我只想要来自命名空间 Book 的 pods 的指标。但是,prometheus 将收集节点的所有 pods 指标。我不想像 Monitor only one namespace metrics - Prometheus with Kubernetes 那样更改应用程序的注释,而是想知道是否有一种方法可以通过更改上面的作业定义来 select 只有一个命名空间。或者有什么方法可以通过标签选择显示器 pods?
以下将匹配所有目标 pods 与标签:some_label
与任何值。
relabel_configs:
- action: keep
source_labels: [__meta_kubernetes_pod_label_some_label]
regex: (.*)
如果你想保留带有标签的目标:monitor
和值:true
你会这样做:
relabel_configs:
- action: keep
source_labels: [__meta_kubernetes_pod_label_monitor]
regex: true
所有不匹配的pods将从抓取中删除。
您应该能够对命名空间执行相同的操作:
relabel_configs:
- action: keep
source_labels: [__meta_kubernetes_namespace]
regex: Book
编辑 >
is there a way to change the [container_label_io_kubernetes_container_name] labels into "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