Часто встречающиеся проблемы и пути их устранения#

Устранение неполадок мониторинга: недоступность пользовательских метрик#

Ресурсы ServiceMonitor позволяют определить, как использовать метрики, предоставляемые службой, в определяемых пользователем проектах. Выполните действия, описанные в сценарии, если при создании ServiceMonitor не появилось соответствующих метрик в пользовательском интерфейсе.

Предварительные условия#

  • доступ к кластеру с ролью администратора;

  • установлен инструмент CLI (oc);

  • включен и настроен мониторинг для определяемых пользователем рабочих нагрузок;

  • создан user-workload-monitoring-config ConfigMap-объект;

  • создан ресурс ServiceMonitor.

Последовательность выполнения#

  1. Убедитесь, что соответствующие метки совпадают в конфигурациях службы и ServiceMonitor. Получите метку, определенную в сервисе. В следующем примере запрашивается служба prometheus-example-app в проекте ns1:

    oc -n ns1 get service prometheus-example-app -o yaml
    

    Пример вывода:

      labels:
        app: prometheus-example-app
    
  2. Убедитесь, что метка matchLabels app в конфигурации ресурса ServiceMonitor соответствует выходной метке на предыдущем шаге:

    oc -n ns1 get servicemonitor prometheus-example-monitor -o yaml
    

    Пример вывода:

    spec:
      endpoints:
      - interval: 30s
        port: web
        scheme: http
      selector:
        matchLabels:
          app: prometheus-example-app
    
  3. Просмотрите журналы Prometheus Operator в проекте openshift-user-workload-monitoring:

    oc -n openshift-user-workload-monitoring get pods
    

    Пример вывода:

    NAME                                   READY   STATUS    RESTARTS   AGE
    prometheus-operator-776fcbbd56-2nbfm   2/2     Running   0          132m
    prometheus-user-workload-0             5/5     Running   1          132m
    prometheus-user-workload-1             5/5     Running   1          132m
    thanos-ruler-user-workload-0           3/3     Running   0          132m
    thanos-ruler-user-workload-1           3/3     Running   0          132m
    
  4. Получите журналы из контейнера prometheus-operator в pod prometheus-operator.

  5. Запустите эту команду, чтобы увидеть, существует ли ConfigMap в кластере DropApp. Например:

    oc -n openshift-user-workload-monitoring logs prometheus-operator-776fcbbd56-2nbfm -c prometheus-operator
    
  6. Просмотрите целевой статус проекта непосредственно в пользовательском интерфейсе Prometheus.

    • Установите переадресацию портов на экземпляр Prometheus в openshift-user-workload-monitoring:

    oc port-forward -n openshift-user-workload-monitoring pod/prometheus-user-workload-0 9090
    
    • Откройте http://localhost:9090/targets в браузере и просмотрите состояние цели проекта непосредственно в пользовательском интерфейсе Prometheus. Проверьте сообщения об ошибках, относящиеся к цели.

  7. Настройте ведение журнала отладки для оператора Prometheus.

    • Отредактируйте объект user-workload-monitoring-config в проекте openshift-user-workload-monitoring:

    oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
    
    • Добавьте logLevel: debug для prometheusOperator в data/config.yaml, чтобы установить уровень ведения журнала debug:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: user-workload-monitoring-config
        namespace: openshift-user-workload-monitoring
      data:
        config.yaml: |
          prometheusOperator:
           logLevel: debug
    
    • Сохраните файл, чтобы применить изменения.

    • Убедитесь, что уровень журнала debug был применен к развертыванию prometheus-operator в проекте openshift-user-workload-monitoring:

    oc -n openshift-user-workload-monitoring get deploy prometheus-operator -o yaml |  grep "log-level"
    

    Пример вывода:

     - --log-level=debug
    

    В журнале уровня отладки будут показаны все вызовы, сделанные оператором Prometheus.

    • Убедитесь, что pod prometheus-operatorм работает:

    oc -n openshift-user-workload-monitoring get pods
    

Решение#

Пользовательские метрики доступны.