Prometheus не получает показатели от cadvisor в GKE

#kubernetes #google-kubernetes-engine #prometheus #cadvisor

#kubernetes #google-kubernetes-engine #prometheus #cadvisor

Вопрос:

Привет,

Я развернул настройку prometheus, grafana, kube-state-metrics, alertmanager и т.д. с использованием kubernetes в GKE версии v1.16.x. Я использовал https://github.com/do-community/doks-monitoring в качестве отправной точки для файлов yaml.

Я пытался отладить ситуацию в течение нескольких дней и был бы очень благодарен за некоторую помощь. Мои узлы prometheus не получают показатели от cadvisor.

  • Все службы и модули в развертываниях запущены. prometheus, kube-state-metrics, узел-экспортер, все запущено — ошибок нет.
  • Цели cadvisor в пользовательском интерфейсе prometheus отображаются как «вверх».
  • Prometheus может собирать другие показатели из кластера, но не метрики использования на уровне pod / контейнера.
  • Я могу видеть показатели cadvisor при запросе kubectl get --raw "/api/v1/nodes/<your_node>/proxy/metrics/cadvisor" , но когда я ищу в prometheus container_cpu_usage или container_memory_usage , данных нет.
  • Моя конфигурация задания очистки cadvisor в prometheus
     - job_name: kubernetes-cadvisor
      honor_timestamps: true
      scrape_interval: 15s
      scrape_timeout: 10s
      metrics_path: /metrics/cadvisor
      scheme: https
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
        - action: labelmap
          regex: __meta_kubernetes_node_label_(. )
  

списано из prometheus / docs/examples.

Я перепробовал целую кучу различных вариантов путей и конфигураций очистки, но безуспешно. Исходя из того факта, что я могу запрашивать метрики с помощью kubectl get (они существуют), мне кажется, проблема в том, что prometheus взаимодействует с целью cadvisor.

Если у кого-нибудь есть опыт настройки этого, я был бы признателен за помощь в отладке.

Приветствия

Комментарии:

1. Здравствуйте. Вы проверили журналы Prometheus модуля? Есть ли какие-либо предупреждения, которые могли бы пролить свет на то, почему вы не можете получить показатели cadvisor?

2. Спасибо за напоминание @DawidKruk. Несколько дней назад я нашел сообщение в блоге, которое помогло мне. Только что опубликовал ответ.

Ответ №1:

Я смог откопать блог, в котором был пример конфигурации, которая сработала для меня. Конечная точка GKE для показателей cadvisor (и kubelet) отличается от стандартных, которые можно найти в примерах документации. Вот выдержка из моих рабочих заданий prometheus:

     - job_name: kubernetes-cadvisor
      honor_timestamps: true
      scrape_interval: 15s
      scrape_timeout: 10s
      metrics_path: /metrics/cadvisor
      scheme: https
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
        - action: labelmap
          regex: __meta_kubernetes_node_label_(. )
        - target_label: __address__
          replacement: kubernetes.default.svc.cluster.local:443
        - source_labels: [__meta_kubernetes_node_name]
          regex: (. )
          target_label: __metrics_path__
          replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
    - job_name: kubernetes-kubelet
      honor_timestamps: true
      scrape_interval: 15s
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: https
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(. )
      - target_label: __address__
        replacement: kubernetes.default.svc.cluster.local:443
      - target_label: __metrics_path__
        source_labels: [__meta_kubernetes_node_name]
        regex: (. )
        replacement: /api/v1/nodes/${1}/proxy/metrics
  

Редактировать: вот ссылка на сообщение в блоге -> https://medium.com/htc-research-engineering-blog/monitoring-kubernetes-clusters-with-grafana-e2a413febefd .

Комментарии:

1. Можете ли вы связать сообщение в блоге?

Ответ №2:

Слишком расстраивает, я копал последние несколько дней.

Проблема возникла после того, как мастер gke обновился с 1.15.12-gke.2 до 1.16.13-gke.401.

Чтобы подтвердить это, сделал то же самое в другом кластере gke, и результат тот же.

и вышеупомянутая конфигурация выдает 403 запрещенных.

введите описание изображения здесь

Комментарии:

1. Привет, я тоже застрял в той же проблеме — KMS, узел-экспортер, linkerd работает. Со вчерашнего дня я развернул Cadvisor и добавил вашу конфигурацию, но теперь я продолжаю получать эту ошибку на панели мониторинга server returned HTTP status 403 Forbidden

2. какое-либо решение, которое вы выяснили?