TCP-зонд Prometheus Blackbox Exporter возвращает значение 0, даже если порт открыт (сервер Iperf3)

У меня есть странная проблема, над которой я копался последние пару дней.

Установка

У меня есть сервер Iperf3, работающий в Docker по этому внутреннему адресу и порту:

У меня также есть Prometheus и Grafana, работающие в Docker, для мониторинга различных сервисов.

Все работает, включая экспортер конечных точек Prometheus и экспортер Prometheus Blackbox для HTTP и HTTPS.

Однако я также хочу отслеживать этот сервер Iperf3, используя простой TCP-зонд с экспортером Blackbox.

Вот мои файлы конфигурации как для Prometheus в целом, так и для экспортера Blackbox.

Prometheus.yml: (Задание Blackbox в конфигурациях очистки)

        - job_name: 'blackbox-tcp'
    scrape_interval: 60s
    metrics_path: /probe
    params:
      module: [tcp_connect]  # Look for TCP response
    static_configs:
      - targets:
        - http://10.10.2.2:5201       # Iperf3 server
        - http://10.10.2.4:9201       # Portainer agent
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 10.10.2.4:9095  # The blackbox exporter's real hostname:port.

: (Определенные модули)

      modules:
  http_2xx:
    prober: http
    http:
      method: GET
  http_post_2xx:
    prober: http
    http:
      method: POST
  tcp_connect:
    prober: tcp
    timeout: 5s
  pop3s_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^+OK"
      tls: true
      tls_config:
        insecure_skip_verify: false
  ssh_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^SSH-2.0-"
  icmp:
    prober: icmp

Просто чтобы продемонстрировать, что Prometheus запущен и работает, вот раздел HTTP- и TCP-зондов, подключенных к экспортеру:

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

      $ if nc -w 3 -z 10.10.2.2 5201; then echo "1"; fi
1

$ if echo -e '\x1dclose\x0d' | telnet 10.10.2.2 5201 > /dev/null; then echo "1"; fi
1

Проблема

И вот беда: Когда я пытаюсь следить за целью10.10.2.2:5201в Grafana он показывает значение запроса, также известное как Down.

Кроме того, когда я пытаюсь запустить инспектор запросов или выполнить запрос непосредственно в Prometheus, я получаю подтверждение, что он возвращает значение0.

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

Я просто не понимаю, как заставить Прометея возвращать значение запроса1, что указывает на то, что порт открыт и служба Iperf3 в данном случае запущена?

Я задавался вопросом, есть ли какие-нибудьsendиexpectкоманды, которые мне нужно добавитьBlackbox.ymlподquery_response, но мне не повезло. Любой вклад и помощь очень ценятся!

0 ответов

Другие вопросы по тегам