Коляска Stackdriver Prometheus с диаграммой руля Prometheus Operator - PullRequest
0 голосов
/ 18 июня 2020

Мы настроили Prometheus + Grafana на нашем кластере GKE, используя stable / prometheus-operator helm chart. Теперь мы хотим экспортировать некоторые метрики в Stackdriver, потому что мы установили адаптер Stackdriver для пользовательских метрик. Мы уже используем некоторые показатели Pub / Sub от Stackdriver для автомасштабирования нескольких развертываний. Теперь мы также хотим использовать некоторые метрики Prometheus (в основном nginx частота запросов) при автомасштабировании других развертываний.

Итак, мой первый вопрос: можем ли мы использовать адаптер Prometheus параллельно с адаптером Stackdriver для автомасштабирования в тот же кластер?

Если нет, нам нужно будет установить Stackdriver Prometheus Sidecar для экспорта метрик Prometheus в Stackdriver, а затем использовать их для автомасштабирования через адаптер Stackdriver.

Из инструкций здесь , похоже, нам нужно установить Sidecar Stackdriver на тот же модуль, на котором работает Prometheus. Я попробовал. Когда я запустил сценарий patch.sh, я получил сообщение: statefulset.apps/prometheus-prom-operator-prometheus-o-prometheus patched, но когда я снова проверил набор состояний, в нем не было контейнера Sidecar Stackdriver. Поскольку этот набор состояний создается диаграммой Helm, мы, вероятно, не сможем изменить его напрямую. Есть ли рекомендуемый способ сделать это в Helm?

1 Ответ

2 голосов
/ 24 июня 2020

Благодаря этому комментарию на GitHub я разобрался. Эта диаграмма Helm принимает так много параметров конфигурации, что я пропустил ее при чтении документации.

Итак, оказывается, что эта диаграмма Helm принимает параметр конфигурации prometheus.prometheusSpec.containers. Его описание в docs гласит: «Контейнеры позволяют внедрять дополнительные контейнеры. Это предназначено для добавления прокси аутентификации в модуль Prometheus». Но очевидно, что это не ограничивается прокси-сервером аутентификации, и вы можете передать здесь любой контейнер spe c, и он будет добавлен в Prometheus StatefulSet, созданный этой диаграммой Helm.

Вот пример конфигурации, которую я использовал. Некоторые ключевые моменты:

  1. Замените значения в угловых скобках вашими фактическими значениями.
  2. Не стесняйтесь удалять аргумент --include. Я добавил его, потому что nginx_http_requests_total - это единственный Prometheus metri c, который я хочу отправить в Stackdriver. Отметьте Управление затратами для метрик, производных от Prometheus , чтобы получить более подробную информацию об этом.
  3. Чтобы выяснить имя тома для использования в volumeMounts:
    1. Перечислите StatefulSets в Пространство имен Оператора Прометея. Предполагая, что вы установили его в пространстве имен monitoring: kubectl get statefulsets -n monitoring
    2. Опишите Prometheus StatefulSet, предполагая, что его имя prometheus-prom-operator-prometheus-o-prometheus: kubectl describe statefulset prometheus-prom-operator-prometheus-o-prometheus -n monitoring
    3. В деталях этого StatefulSet найдите контейнер назван prometheus. Обратите внимание на значение, переданное ему в arg --storage.tsdb.path
    4. Найдите том, который смонтирован в этом контейнере по тому же пути. В моем случае это было prometheus-prom-operator-prometheus-o-prometheus-db, поэтому я установил тот же том и в свой контейнер Stackdriver sidecar.
prometheus:
  prometheusSpec:
    containers:
      - name: stackdriver-sidecar
        image: gcr.io/stackdriver-prometheus/stackdriver-prometheus-sidecar:0.7.5
        imagePullPolicy: Always
        args:
          - --stackdriver.project-id=<GCP PROJECT ID>
          - --prometheus.wal-directory=/prometheus/wal
          - --stackdriver.kubernetes.location=<GCP PROJECT REGION>
          - --stackdriver.kubernetes.cluster-name=<GKE CLUSTER NAME>
          - --include=nginx_http_requests_total
        ports:
          - name: stackdriver
            containerPort: 9091
        volumeMounts:
          - name: prometheus-prom-operator-prometheus-o-prometheus-db
            mountPath: /prometheus

Сохраните этот yaml в файл. Предположим, вы сохранили его в prom-config.yaml

Теперь найдите имя выпуска, которое вы использовали для установки диаграммы Prometheus Operator Helm в своем кластере:

helm list

Предполагается, что имя выпуска prom-operator, вы можете обновить этот выпуск в соответствии с конфигурацией, составленной выше, выполнив эту команду:

helm upgrade -f prom-config.yaml prom-operator stable/prometheus-operator

Надеюсь, вы нашли это полезным.

...