Обнаружение службы Prometheus dns в экземпляре Docker Swarm Rebel - PullRequest
0 голосов
/ 29 июня 2018

Мой вопрос является дополнением к Обнаружению службы Prometheus dns в Docker Swarm .

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

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

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

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

relabel_configs:
- source_labels: [__meta_dns_name]
  target_label: instance

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

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

1 Ответ

0 голосов
/ 30 июня 2018

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

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

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

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

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

...