Как организовать мониторинг сервера, с которого запрещены исходящие соединения (outbound traffic)?

«Как организовать мониторинг сервера, с которого запрещены исходящие соединения (outbound traffic)?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Стандартное решение на стеке Prometheus:

  1. На целевом сервере (без исходящих):

    • Устанавливаем и запускаем экспортеры (например, node_exporter для системных метрик). Они работают как веб-серверы на локальном порту.
      ./node_exporter --web.listen-address="0.0.0.0:9100"
  2. На сервере мониторинга (который имеет доступ к целевому серверу):

    • В конфигурации Prometheus (prometheus.yml) добавляем таргет.
      scrape_configs:
      - job_name: 'isolated-node'
      static_configs:
        - targets: ['<IP_целевого_сервера>:9100']  # Prometheus сам подключается к этому адресу

Если прямой доступ к порту 9100 с сервера мониторинга тоже запрещен, используем SSH-туннель как временный или аварийный канал:

# Выполняем на сервере мониторинга:
ssh -N -L 9100:localhost:9100 user@<IP_целевого_сервера>
# Теперь Prometheus может скрапить localhost:9100

Для более сложных сценариев (например, когда исходящий трафик разрешен по расписанию) можно использовать:

  • Pushgateway: Краткосрочные задачи (например, cron jobs) могут отправлять (push) свои метрики в Pushgateway, который уже находится в доступной сети. Однако это не для долгоживущих процессов.
  • Агенты с кэшированием: Такие как Telegraf, которые можно настроить на сбор метрик и их буферизацию, с последующей отправкой раз в N часов через разрешенный временной интервал.

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