Как интегрировать / Hashmod единый список целей от одного сервера Prometheus до нескольких идентичных экспортеров? - PullRequest
0 голосов
/ 15 декабря 2018

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

Я думаю, что я мог бы объединить и запустить несколько одинаковых экземпляров Prom с экспортером на каждом (например, моей текущей настройкой) и передать их в экземпляр Leader Prom.Однако я очищаю один длинный список целей, и экземпляр Prom не использует много ресурсов, экспортер использует гораздо больше ресурсов (85% ресурсов используется экспортером).Поэтому может иметь смысл установить несколько идентичных экспортеров, каждый на свой сервер, а затем использовать мой единственный экземпляр Prom для отправки 1/3 целей из списка на каждый сервер экспортеров.

Этонемного отличается от случая использования федерации, потому что я предпочел бы не запускать несколько серверов Prom.Кроме того, создается файл со списком целей, и его трудно разделить на несколько файлов, в противном случае я мог бы просто создать разные задания в файле prometheus.yml, где каждое задание использует файл file_sd_configs, указывающий на уникальный файл, содержащий 1/3цели (например, target1.json, target2.json, target3.json)

В идеале, я хотел бы иметь один файл для file_sd_configs, "target.json", а затем использовать relbeling / hashmod (или что-то еще?) разделить их поровну и отправить подмножество на определенный сервер.Это возможно?

1 Ответ

0 голосов
/ 16 декабря 2018

Добавьте это к вашей конфигурации relbel:

- source_labels: [instance]
  modulus:       4    # 4 replicas
  target_label:  __tmp_hash
  action:        hashmod
- source_labels: [__tmp_hash]
  regex:         ^1$  # This is the 2nd replica
  action:        keep

С одним на реплику и разными __address__ для каждого.

Другой вариант - использование балансировщика нагрузки.

...