Prometheus 库伯内特斯不会被普罗米修斯刮伤

Prometheus 库伯内特斯不会被普罗米修斯刮伤,prometheus,minikube,cadvisor,Prometheus,Minikube,Cadvisor,我安装了一个minikube-kubernetes集群,通过普罗米修斯进行监控。kubernetes版本是v1.13.4,直接在vm主机上运行(--vm driver=none)。我在Prometheus配置文件中添加了一个特定的作业,以便获取cadvisor容器度量。问题是普罗米修斯无法从cadvisor端点获取度量 我在prometheus.yml中包含了以下配置 - job_name: 'kubernetes-cadvisor' kubernetes_sd_configs: - r

我安装了一个minikube-kubernetes集群,通过普罗米修斯进行监控。kubernetes版本是v1.13.4,直接在vm主机上运行(--vm driver=none)。我在Prometheus配置文件中添加了一个特定的作业,以便获取cadvisor容器度量。问题是普罗米修斯无法从cadvisor端点获取度量

我在prometheus.yml中包含了以下配置

- job_name: 'kubernetes-cadvisor'
  kubernetes_sd_configs:
  - role: node
  relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_node_label_(.+)
  - target_label: __address__
    replacement:  kubernetes.default.svc:443
  - source_labels: [__meta_kubernetes_node_name]
    regex: (.+)
    target_label: __metrics_path__
    replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
但在普罗米修斯的目标是网络用户界面(http://my_ip:30900/targets)我看到“kubernetes cadvisor”处于关闭状态,并显示以下错误消息

http://kubernetes.default.svc:443/api/v1/nodes/minikube/proxy/metrics/cadvisor: context deadline exceeded

kubernetes.default.svc:443应该是默认的集群DNS,可以从pod中访问,但正如预期的那样,我无法在prometheus pod中ping它

幸运的是,我注意到我可以成功地从url获取所有cadvisor容器度量:

http://my_dashboard_ip_and_port/api/v1/nodes/minikube/proxy/metrics/cadvisor
普罗米修斯吊舱内的原木包括:

kubectl logs prometheus-deployment-6f64ff68f9-8c9xm
level=info ts=2019-03-29T14:33:18.939973334Z caller=main.go:285 msg="no time or size retention was set so using the default time retention" duration=15d
level=info ts=2019-03-29T14:33:18.940326462Z caller=main.go:321 msg="Starting Prometheus" version="(version=2.8.1, branch=HEAD, revision=4d60eb36dcbed725fcac5b27018574118f12fffb)"
level=info ts=2019-03-29T14:33:18.94039376Z caller=main.go:322 build_context="(go=go1.11.6, user=root@bfdd6a22a683, date=20190328-18:04:08)"
level=info ts=2019-03-29T14:33:18.940455316Z caller=main.go:323 host_details="(Linux 4.15.0 #1 SMP Tue Mar 26 02:53:14 UTC 2019 x86_64 prometheus-deployment-6f64ff68f9-8c9xm (none))"
level=info ts=2019-03-29T14:33:18.94050961Z caller=main.go:324 fd_limits="(soft=1048576, hard=1048576)"
level=info ts=2019-03-29T14:33:18.940570849Z caller=main.go:325 vm_limits="(soft=unlimited, hard=unlimited)"
level=info ts=2019-03-29T14:33:18.941555805Z caller=main.go:640 msg="Starting TSDB ..."
level=info ts=2019-03-29T14:33:18.941946171Z caller=web.go:418 component=web msg="Start listening for connections" address=0.0.0.0:9090
level=info ts=2019-03-29T14:33:18.946861683Z caller=main.go:655 msg="TSDB started"
level=info ts=2019-03-29T14:33:18.947193152Z caller=main.go:724 msg="Loading configuration file" filename=/etc/prometheus/prometheus.yml
level=info ts=2019-03-29T14:33:18.948922627Z caller=kubernetes.go:191 component="discovery manager scrape" discovery=k8s msg="Using pod service account via in-cluster config"
level=info ts=2019-03-29T14:33:18.950164896Z caller=kubernetes.go:191 component="discovery manager scrape" discovery=k8s msg="Using pod service account via in-cluster config"
level=info ts=2019-03-29T14:33:18.951281382Z caller=kubernetes.go:191 component="discovery manager scrape" discovery=k8s msg="Using pod service account via in-cluster config"
level=info ts=2019-03-29T14:33:18.952276845Z caller=main.go:751 msg="Completed loading of configuration file" filename=/etc/prometheus/prometheus.yml
level=info ts=2019-03-29T14:33:18.952303937Z caller=main.go:609 msg="Server is ready to receive web requests."
但我不知道如何正确配置Prometheus yml文件,以便能够通过Prometheus获取公开的度量


非常感谢。

我想您可能必须使用HTTPS模式来删除HTTP请求,这似乎仍保留在您的配置中:

- job_name: 'kubernetes-cadvisor'

  scheme: https

  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token

  kubernetes_sd_configs:
  - role: node

  relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_node_label_(.+)
  - target_label: __address__
    replacement: kubernetes.default.svc:443
  - source_labels: [__meta_kubernetes_node_name]
    regex: (.+)
    target_label: __metrics_path__
    replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
为了跳过API服务器证书验证,您可以将
unsecure\u skip\u verify:true
参数添加到现有的
tls\u config

tls_config:
  ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  insecure_skip_verify: true

我想您可能必须使用HTTPS模式来对HTTP进行刮取请求,这似乎仍保留在您的配置中:

- job_name: 'kubernetes-cadvisor'

  scheme: https

  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token

  kubernetes_sd_configs:
  - role: node

  relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_node_label_(.+)
  - target_label: __address__
    replacement: kubernetes.default.svc:443
  - source_labels: [__meta_kubernetes_node_name]
    regex: (.+)
    target_label: __metrics_path__
    replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
为了跳过API服务器证书验证,您可以将
unsecure\u skip\u verify:true
参数添加到现有的
tls\u config

tls_config:
  ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  insecure_skip_verify: true

谢谢你的帮助!我将kubernetes版本升级到v1.14.0,以便有一个更稳定的环境,并在virtualbox版本5上部署了minikube,以避免所有(--vm driver=none)的次要影响。在您建议的配置中,我收到响应
服务器返回的HTTP状态403禁止
消息,带有以下https端点()。有什么额外的建议吗?您是否对普罗米修斯服务帐户应用了
ClusterRole
ClusterRoleBinding
,如前所述?我的略有不同。我还尝试了重新开始的rbac示例,并返回了相同的错误消息:-(你能分享普罗米修斯吊舱的日志以评估
403
问题的原因吗?刚刚用普罗米修斯吊舱日志更新了我的问题。我没有看到任何奇怪的日志消息感谢你的帮助!我将kubernetes版本升级到v1.14.0,以便有一个更稳定的环境,我还将minikube部署在virtualbox版本5上以避免所有(--vm driver=none)次要影响。在您建议的配置中,我得到响应
服务器返回HTTP status 403 NOBLINED
消息,带有以下https端点().有什么额外的建议吗?您是否对普罗米修斯服务帐户应用了
ClusterRole
ClusterRoleBinding
,如前所述?我的建议略有不同。我还尝试了重新启动的rbac示例,并返回了相同的错误消息:-(您能否共享普罗米修斯吊舱的日志,以评估
403
问题的原因?刚刚用普罗米修斯吊舱日志更新了我的问题。我没有看到任何奇怪的日志消息。)