在 Kubernetes 中使用 Prometheus 进行监控时,可以通过进行配置来指定不监控某个指定 Namespace。具体的操作步骤如下:
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_namespace]
# 排除 namespace 是 "kube-system" 的
not_regex: 'kube-system'
action: keep
- source_labels: [__meta_kubernetes_pod_label_operate_system]
# 仅保留 operate_system=web 的 pod
regex: 'web'
action: keep
- source_labels: [__meta_kubernetes_pod_label_operate_system]
# 丢弃 operate_system!=web 的 pod
regex: '^(?!web).*'
action: drop
-
以上配置文件会对指定的 Namespace 进行过滤,具体方式是使用
not_regex
进行过滤,如果不想监控多个 Namespace,则在- not_regex
后面添加多个 namespace,中间用竖线(|)隔开即可。 -
修改完成后,重新加载 Prometheus 的配置文件即可生效。
补充说明:
除了通过上述的方式进行配置,还可以在 prometheus.yml 文件中通过具体指定 job_name 的方式进行 Namespace 的选择。例如:
- job_name: 'my-job'
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- my-namespace
通过上述配置,就只监控名字为 “my-namespace” 的 Namespace 中的 Endpoints。