Как пинговать цели с помощью blackbox_exporter с prometheus

Я пытаюсь проверить список целей, используя blackbox_exporter с prometheus, но, похоже, я могу проверить только blackbox_exporters, а не реальные цели, которые я хочу проверить.

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

Это мой конфиг blackbox_exporter

 modules:
  icmp:
    prober: icmp
    timeout: 5s
    icmp:
      preferred_ip_protocol: ip4

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

modules:
  icmp:
    prober: icmp
    timeout: 5s
    http:
      ip_protocol_fallback: true
    tcp:
      ip_protocol_fallback: true
    icmp:
      preferred_ip_protocol: ip4
      ip_protocol_fallback: true
    dns:
      ip_protocol_fallback: true

А это мой конфиг прометея

global:
  scrape_interval:     15s
  evaluation_interval: 15s

  - job_name: 'blackbox'
    metrics_path: /probe
    params:
      module: [icmp]
    static_configs:
      - targets:
        - icmp-target1 # supposed to be a switch, router, pc or anything that responds to ping
        - icmp-target2

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

Фактический результат: Prometheus отправляет пробный запрос через HTTP для каждой цели, указанной в его списке целей.


person Hannes Kindströmmer    schedule 04.04.2019    source источник


Ответы (1)


Хотя это немного сбивает с толку, README blackbox_exporter действительно объясняет, как его настроить, см. Раздел Конфигурация Prometheus.

Ваша конфигурация черного ящика правильная.

Для вашей конфигурации Prometheus вам понадобится что-то вроде следующего. Я предполагаю, что экспортер черного ящика и Прометей размещены в одном месте (отсюда localhost), иначе адаптируются.

# this is to scrape blackbox itself (this is optional)
- job_name: blackbox
  static_configs:
  - targets: ['localhost:9115']


- job_name: blackbox-ping
  metrics_path: /probe
  params:
    module: [icmp]
  static_configs:
    - targets:
      - 192.168.1.1   # <== Put here your targets
  relabel_configs:    # <== This comes from the blackbox exporter README
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: localhost:9115 # Blackbox exporter.

Другая запутывающая часть - это ответ на вопрос: «Как использовать экспортер черного ящика для нескольких протоколов, скажем, ICMP и HTTP?» В этом случае есть разные варианты, но более ясный - иметь одну секцию для каждого протокола. Вот почему я вызываю зонды ICMP blackbox-ping. Скажем, мы хотели бы иметь также HTTP-зонды, мы бы добавили еще один раздел:

- job_name: blackbox-http
  metrics_path: /probe
  params:
    module: [http_2xx]
  static_configs:
    - targets:
      - https://www.google.com  # <== your targets here
  relabel_configs:              # <== This comes from the blackbox exporter README
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: localhost:9115 # Blackbox exporter.

Вам также понадобится соответствующая конфигурация черного ящика:

modules:
  http_2xx:        # <== This is the new section for HTTP
    prober: http
    timeout: 10s   # <== This depends on what you want to do
    http:
      valid_status_codes: []  # Defaults to 2xx
      method: HEAD              # <== This depends on what you want to do
      no_follow_redirects: true # <== this depends on what you want to do
  icmp:                         # <== this is the one you already have
    prober: icmp
    timeout: 10s                # <== This depends on what you want to do
    icmp:
      preferred_ip_protocol: ip4
person marco.m    schedule 06.04.2019