Прометей не соскабливает дополнительные царапины - PullRequest
0 голосов
/ 11 декабря 2019

Я использую Prometheus, используя стабильную / операторскую карту. Он установлен в monitoring пространстве имен. В пространстве имен default у меня есть модуль с именем my-pod с тремя репликами. Этот модуль выводит метрики на порт 9009 (я проверил это, выполнив k port-forward и проверив, отображаются ли метрики в localhost: 9009). Я бы хотел, чтобы прометей-оператор очистил эти метрики. Поэтому я добавил конфигурацию ниже к values.yaml

prometheus:
  prometheusSpec:
    additionalScrapeConfigs:
    - job_name: 'my-pod-job'
      scrape_interval: 15s
      kubernetes_sd_configs:
      - role: pod
        namespaces:
          names:
          - default
      relabel_configs:
      - source_labels: [__meta_kubernetes_pod_name]
        action: keep   
        regex: 'my-pod'  

. Затем я устанавливаю prometheus, используя следующую команду:

helm upgrade --install prometheus stable/prometheus-operator \
--set kubeEtcd.enabled=false \
--set kubeControllerManager.enabled=false \
--set kubeScheduler.enabled=false \
--set prometheusOperator.createCustomResource=true \
--set grafana.smtp.existingSecret=smtp-secret \
--set kubelet.serviceMonitor.https=true \
--set kubelet.enabled=true \
-f values.yaml --namespace monitoring

Однако, когда я перехожу к /service-discover, я вижу

my-pod-job (0/40 active targets)

Вопрос

Как я могу настроить Prometheus таким образом, чтобы он собирал метрики из модулей, работающих в пространстве имен по умолчанию, и выплевывал метрики на порт 9009?

Ответы [ 2 ]

0 голосов
/ 17 декабря 2019

Как уже упоминалось @gears, если вы хотите очистить метрики от определенного модуля или службы, то к ним обязательно добавьте аннотации для очистки прометея. Например:

...
spec:
  replicas: 1
  template:
    metadata:
      annotations:
        prometheus.io/path: <path_to_scrape>
        prometheus.io/port: "80"
        prometheus.io/scrape: "true"
...

Однако, как уже было сказано:

Оператор Prometheus не поддерживает обнаружение служб на основе аннотаций с использованием serviceMonitor CRDвместо него, поскольку он предоставляет гораздо больше параметров конфигурации.

Теперь, если я вас правильно понимаю, объект ServiceMonitor должен быть создан в том же пространстве имен, в котором находится приложение. Вам необходимо убедиться, чточто serviceMonitorNamespaceSelector выбирает это пространство имен и что сервер Prometheus имеет соответствующие разрешения для доступа к объектам Service / Endpoints / Pod в этом пространстве имен.

Пожалуйста, дайте мне знать, если это помогло.

0 голосов
/ 11 декабря 2019

Чтобы Прометей очистил стручки, добавьте эти аннотации:

...
  template:
    metadata:
      annotations:
        prometheus.io/scrape: 'true'
        prometheus.io/port: '9009'
...