icmp-запросы не работают после обновления до 24.04 (prometheus / blackbox-exporter)

Вопрос или проблема

У меня есть сервер, который мониторит множество устройств с помощью Prometheus. В основном используются tcp_connect пробы, но также есть несколько icmp (ping) проб.

Я обновил Ubuntu до 24.04 LTS, и все работает, ЗА ИСКЛЮЧЕНИЕМ icmp проб, которые теперь всегда терпят неудачу. Прямой вызов команды ping для того же IP возвращает успех.

Логи показывают Unable to do unprivileged listen on socket, will attempt privileged" err="socket: permission denied", но я действительно не понимаю, что это значит и почему это не работает в Ubuntu 24.04, когда ping работает. Может кто-нибудь предложить совет по исправлению или дальнейшей отладке?

Логи для пробы:
ts=2024-10-23T15:46:55.373812878Z caller=main.go:181 module=icmp target=172.19.0.30 level=info msg="Начало пробы" probe=icmp timeout_seconds=9.5
ts=2024-10-23T15:46:55.373965744Z caller=icmp.go:91 module=icmp target=172.19.0.30 level=info msg="Разрешение адреса цели" target=172.19.0.30 ip_protocol=ip6
ts=2024-10-23T15:46:55.373999349Z caller=icmp.go:91 module=icmp target=172.19.0.30 level=info msg="Адрес цели разрешен" target=172.19.0.30 ip=172.19.0.30
ts=2024-10-23T15:46:55.374024623Z caller=handler.go:120 module=icmp target=172.19.0.30 level=info msg="Создание сокета"
ts=2024-10-23T15:46:55.374072447Z caller=handler.go:120 module=icmp target=172.19.0.30 level=debug msg="Невозможно выполнить непривилегированное прослушивание на сокете, будет предпринята привилегированная попытка" err="socket: permission denied"
ts=2024-10-23T15:46:55.374125943Z caller=handler.go:120 module=icmp target=172.19.0.30 level=error msg="Ошибка прослушивания сокета" err="listen ip4:icmp 0.0.0.0: socket: операция не разрешена"
ts=2024-10-23T15:46:55.374155274Z caller=main.go:181 module=icmp target=172.19.0.30 level=error msg="Проба завершилась неудачей" duration_seconds=0.000273796
  • версия prometheus 2.45.3
  • версия blackbox-exporter 0.24.0

Это может быть та же проблема, что и эта нерешенная проблема на github Prometheus.

Ответ или решение

Проблема с неработающими ICMP пробами после обновления Ubuntu до 24.04 связана с изменениями в управлении разрешениями и политиками безопасности, которые могут повлиять на использование сокетов ICMP в Blackbox Exporter. Давайте разберёмся с основной причиной, логами и возможными решениями.

Причина проблемы

ICMP (Internet Control Message Protocol) является важным протоколом, который часто использует ping и другие утилиты для диагностики сетевых проблем. Однако его использование требует специальных разрешений, поскольку отправка ICMP-пакетов может быть расценена как потенциально вредоносное поведение.

Согласно логам:

Unable to do unprivileged listen on socket, will attempt privileged

Blackbox Exporter пытается создать сокет для отправки ICMP-запросов, но не имеет для этого достаточных привилегий. Это связано с тем, что на более новых версиях Ubuntu могут применяться более строгие настройки безопасности, такие как ограничения на использование низкоуровневых сокетов для процессов, запущенных от имени непривилегированного пользователя.

Возможные решения

  1. Изменение метода запуска Blackbox Exporter:
    Чтобы использовать ICMP-пробы, Blackbox Exporter должен иметь возможность открывать сокеты с привилегиями. Один из способов сделать это — запустить его от имени суперпользователя.

    Например, если вы запускаете Blackbox Exporter как службу, попробуйте изменить конфигурацию службы, чтобы она работала с привилегиями root.

  2. Использование setcap для предоставления прав:
    Вы можете предоставить вашему бинарному файлу Blackbox Exporter необходимые права на использование сокетов через команду setcap. Выполните следующую команду:

    sudo setcap cap_net_raw,cap_net_admin=eip /path/to/blackbox_exporter

    Замените /path/to/blackbox_exporter на актуальный путь к вашему бинарному файлу. Это позволит вашему процессу использовать ICMP-пробы без необходимости запускать его от имени root.

  3. Проверка и модификация конфигурации:
    Убедитесь, что в конфигурации Prometheus и Blackbox Exporter правильно настроены параметры ICMP-проб. Проверьте, чтобы используемый IP-адрес был доступен для пинга и не имел блокировок (например, фаерволов).

  4. Отладка сетевых подключений:
    Используйте инструменты, такие как tcpdump или wireshark, для отслеживания, что происходит на уровне пакетов при попытке отправки ICMP-запросов. Это поможет убедиться, что пакеты действительно покидают ваш хост и не блокируются на пути.

  5. Обновления и патчи:
    Иногда проблемы могут быть связаны с конкретными версиями программного обеспечения. Убедитесь, что у вас установлены последние версии Prometheus и Blackbox Exporter. Просмотрите соответствующие репозитории GitHub на предмет известных проблем и исправления ошибок.

Заключение

После выполнения указанных шагов ICMP-пробы в Blackbox Exporter должны начать работать корректно. Если проблема сохранится, рекомендуется обратиться к сообществу Prometheus или обратиться в службу поддержки для получения более детальной информации и устранения неполадок. Не забывайте, что преобразования в операционной системе могут значительно менять поведение сетевых сервисов, и понимание данных изменений поможет избежать подобной ситуации в будущем.

Оцените материал
Добавить комментарий

Капча загружается...