Прометей не уничтожает конечную точку kubernetes cadvisor - PullRequest
0 голосов
/ 27 марта 2019

У меня установлен кластер minikube kubernetes, который отслеживается с помощью prometheus.Версия kubernetes v1.13.4 и работает непосредственно на хосте vm (- vm-driver = none).Я добавил специальное задание в файл конфигурации Prometheus, чтобы удалить метрики контейнера cadvisor.Проблема в том, что Prometheus не может удалить метрики из конечной точки 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

Но в веб-интерфейсе Prometheus предназначается для веб-интерфейса (http://my_ip:30900/targets) я вижу «kubernetes-cadvisor» в состоянии ВНИЗ со следующим сообщением об ошибке

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

Prometheus targets

kubernetes.default.svc:443 должен быть DNS-сервером кластера по умолчанию, доступным изнутри модуля, но, как и ожидалось, я не могу пропинговать его в модуле prometheus.

К счастью, я заметил, что могу успешно получить все метрики контейнера cadvisor из url:

http://my_dashboard_ip_and_port/api/v1/nodes/minikube/proxy/metrics/cadvisor

журналы в модуле Prometheus:

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."

, но я не знаю, как правильно сконфигурировать YML-файл Prometheus, чтобы иметь возможность получать открытые метрики также черезПрометей.

Большое спасибо заранее.

1 Ответ

0 голосов
/ 27 марта 2019

Полагаю, вам, возможно, придется использовать схему 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, вы можете добавить параметр insecure_skip_verify: true к существующему tls_config:

tls_config:
  ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  insecure_skip_verify: true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...