我正在尝试设置对Kubernetes集群的监控,但这并不容易。第一次,我尝试在一个专用的虚拟机上删除所有的指标,如下配置,我可以在互联网和prometheus.io上找到,但我读了好几次,这不是最好的方法。我发现了一个使用kube-state-metrics的建议,它完成了,pod正在运行,指标可以从外部访问(Azure infra)。所以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"有谁有主意吗?
谢谢,
发布于 2018-10-02 16:10:23
终于找到问题所在了!我的Prometheus位于Kubernetes集群之外的专用VM上。
Kube-state-metrics公开来自集群外部IP的指标,因此,没有必要像kubernetes对象那样废弃指标,只需要像简单的目标一样废弃指标
https://stackoverflow.com/questions/52492278
复制相似问题