我正在尝试设置对我们的Kubernetes集群的监视,但这并不容易。我第一次尝试在专用VM上按照可以在Internet和prometheus.io上找到的配置来抓取所有指标,但是我读了好几次,这并不是最好的方法。我发现使用kube-state-metrics的建议已完成,吊舱正在运行,并且可以从外部访问指标(Azure下文)。因此http://xxx.xxx.xxx.xxx:8080/metrics向我显示了正确的结果。
当我将其添加到配置中时:
- job_name: 'Kubernetes-Nodes'
scheme: http
#tls_config:
#insecure_skip_verify: true
kubernetes_sd_configs:
- api_server: 'http://xxx.xxx.xxx.xxx:8080'
role: endpoints
namespaces:
names: [default]
#tls_config:
#insecure_skip_verify: true
bearer_token: %VERYLONGLINE%
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_service_name]
action: replace
target_label: kubernetes_name
我可以找到的日志是:
Sep 25 06:53:59 monitoring001 prometheus[59005]: level=error ts=2018-09-25T06:53:59.636669498Z caller=main.go:234 component=k8s_client_runtime err="github.com/prometheus/prometheus/discovery/kubernetes/kubernetes.go:288: Failed to list *v1.Pod: serializer for text/html; charset=utf-8 doesn't exist"
有人有想法吗?
谢谢
答案 0 :(得分:1)
终于找到了问题!我的Prometheus位于Kubernetes集群外部的专用VM上。
Kube-state-metrics正在从群集外部的IP公开指标,因此,不必像kubernetes对象那样废弃指标,而只需要像一个简单目标一样废弃指标