Обнаружение службы Prometheus DNS в экземпляре docker swarm relabel

Мой вопрос - дополнение к обнаружению службы Prometheus dns в рое докеров.

Я определяю цели очистки Prometheus следующим образом:

- job_name: 'node-exporter'
  dns_sd_configs:
  - names:
    - 'tasks.nodeexporter'
    type: 'A'
    port: 9100

Это работает нормально, но приводит к тому, что prometheus использует IP-адрес контейнера докеров в качестве метки экземпляра.

Я попытался изменить метку экземпляра следующим образом:

relabel_configs:
- source_labels: [__meta_dns_name]
  target_label: instance

Но в результате все экземпляры узла-экспортера будут иметь одинаковую метку "tasks.nodeexporter".

Можно ли каким-то образом изменить метку экземпляра на что-то вроде tasks.nodexporter_1, tasks.nodeexporter_2, ...?


person Yannic Klem    schedule 29.06.2018    source источник


Ответы (1)


Обнаружение сервисов для настроек роя докеров плохо поддерживается в Prometheus, так как на стороне роя отсутствует множество функций.

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

  • нет возможности предоставить дополнительную информацию, например с использованием записей SRV
  • нет информации о том, сколько экземпляров должно быть запущено
  • поскольку DNS перечисляет только работоспособные задачи, количество целей очистки уменьшается, когда одна задача больше не считается работоспособной, что затрудняет оповещение о неправильно функционирующих контейнерах
  • когда контейнеры умирают и перезапускаются, вы увидите новые экземпляры, поскольку нет такой информации, как доступный слот задачи

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

Если вы действительно привязаны к использованию docker swarm, вам следует подумать о создании более устойчивого решения, заполнив программный запрос docker api и используя механизм обнаружения службы file_sd Prometheus. Для справки см. Этот документ от containerolutions: https://github.com/ContainerSolutions/prometheus-swarm-discovery

person Andreas Jägle    schedule 30.06.2018
comment
Спасибо за подсказку. Я посмотрю и подумаю. На данный момент это звучит как лучший подход и даже решает мою проблему, поскольку имя задачи докера уже включено в метки. Этот ответ будет принят после того, как я попытаюсь его реализовать. - person Yannic Klem; 30.06.2018