Как переназначить парсеры на Прометей-операторе?

Я впервые пробую использовать Prometheus-operator и все еще борюсь с различиями в управлении Prometheus через это.

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

Раньше я настраивал prometheus.yml и добавлял static_configs, чтобы включить метки для каждого имени задания экспортера.

Я понимаю, что под капотом оператора Prometheus у нас те же настройки, что и обычно, но я не уверен, как добиться таких же результатов от конфигурации static_config с помощью оператора.

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

попробовал с metricRelabelings, как описано по проблеме 1166, и StaticConfigs, как описано на проблема 1086 безуспешно.

Например, это то, что я делал для kubernetes-cadvisor экспортера, чтобы установить метку на static_config, чтобы моя пользовательская метка отображалась на всех метриках, собранных моими экспортерами во время загрузки:

scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
kubernetes_namespace: kube-system
cluster_name: mycluster01

А также добавьте relabel_configs на каждую из моих вакансий экспортеров:


- 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:
  - target_label: cluster_name
    replacement: mycluster01
  - target_label: kubernetes_namespace
    replacement: kube-system
  - 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}:10250/proxy/metrics

И это пример достижения того же с помощью metricRelabelings в операторе Prometheus, который у меня все еще не работает:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    k8s-app: node-exporter
  name: node-exporter
  namespace: monitoring
spec:
  endpoints:
  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
    interval: 30s
    port: https
    scheme: https
    tlsConfig:
      insecureSkipVerify: true
  jobLabel: k8s-app
  selector:
    matchLabels:
      k8s-app: node-exporter
  metricRelabelings:
    sourceLabels: __meta_kubernetes_node_name
    targetLabel: node

Я ожидаю создать статическую метку для моих экспортеров, чтобы все метрики несли настраиваемую метку, которую я определяю во время очистки, вместо того, чтобы вручную определять настраиваемые метки для всех развертываний в моем кластере.

Заранее благодарю за любую помощь!


person silveiralexf    schedule 09.08.2019    source источник


Ответы (2)


Посмотрим на примере, как это работает. Сначала разверните четыре экземпляра примера приложения, которое прослушивает и предоставляет метрики на порту 8080.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: example-application
spec:
  replicas: 4
  template:
    metadata:
      labels:
        app: example-application
    spec:
      containers:
      - name: example-application
        image: fabxc/instrumented_app
        ports:
        - name: backend
          containerPort: 8080

ServiceMonitor имеет селектор меток для выбора служб и лежащих в их основе объектов конечных точек. Объект Service для примера приложения выбирает модули по метке приложения, имеющей значение example-application. Объект Service также указывает порт, на котором отображаются метрики.

kind: Service
apiVersion: v1
metadata:
  name: example-application
  labels:
    app: example-application
spec:
  selector:
    app: example-application
  ports:
  - name: backend
    port: 8080

Этот объект службы обнаруживается ServiceMonitor, который выбирает таким же образом. Ярлык приложения должен иметь значение example-application.

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: example-application
  labels:
    team: backend-team
spec:
  selector:
    matchLabels:
      app: example-application
  endpoints:
  - port: backend

Объект Prometheus определяет serviceMonitorSelector, чтобы указать, какие ServiceMonitors следует включить. Выше была указана метка team: backend-team, поэтому объект Prometheus выбирает по ней.

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  name: prometheus
spec:
  serviceMonitorSelector:
    matchLabels:
      team: backend-team
  resources:
    requests:
      memory: 400Mi

Это позволяет бэкэнд-группе создавать новые ServiceMonitors и Services, которые позволяют динамически реконфигурировать Prometheus.

Вы также можете посетить этот сайт, чтобы получить дополнительную информацию о ServiceMonitor в Prometheus Operator. .

person Ines    schedule 12.08.2019
comment
Привет @abielak, спасибо за подробный ответ, но моя проблема в том, как добавить метки метрики времени приема, без оператора я мог бы просто изменить настройки очистки в prometheus.yml. В репозитории нашел нужную документацию для этого ... кажется, теперь нужно добавить дополнительные конфигурации очистки в секрете, как описано в документация по оператору. Но еще раз большое спасибо за помощь! - person silveiralexf; 15.08.2019

Похоже, я пропустил инструкции в репозитории Operator .... После внимательного изучения я нашел несколько очень хороших примеров ... кажется, ответ на мой вопрос - создать дополнительную конфигурацию очистки в качестве секрета, аналогично пример по следующей ссылке: additional-scrape-configs.yaml

Некоторые дополнительные шаги также можно найти по адресу: дополнительная-очистка-конфигурация

person silveiralexf    schedule 15.08.2019