Развертывание системы мониторинга#

Для внедрения системы мониторинга выполните дополнительные шаги после развертывания Astra Automation.

Требования к сетевой доступности#

Узел мониторинга обращается к компонентам платформы и экспортерам за метриками, а администраторы обращаются к сервисам самого узла мониторинга. Настройте сетевой доступ в обоих направлениях.

Исходящий доступ узла мониторинга к источникам данных:

Источник данных

Порт по умолчанию

Назначение

Gateway

443/TCP

Получение метрик Automation Controller и проверка состояния сервисов

Private Automation Hub

443/TCP

Получение метрик Private Automation Hub

node_exporter

9100/TCP

Получение метрик операционной системы

postgres_exporter

9187/TCP

Получение метрик PostgreSQL

redis_exporter

9121/TCP

Получение метрик Redis

Входящий доступ администраторов к сервисам узла мониторинга:

Сервис

Порт по умолчанию

Назначение

Prometheus

9090/TCP

Доступ к графической консоли и API Prometheus

Alertmanager

9093/TCP

Доступ к графической консоли и API Alertmanager

Grafana

3000/TCP

Доступ к графической консоли Grafana

blackbox_exporter работает локально на узле мониторинга и принимает запросы Prometheus на порту TCP 9115. Сетевой доступ к нему с других узлов не требуется.

Установка ПО#

Пакеты prometheus, prometheus-alertmanager и grafana входят в расширенный репозиторий Astra Linux Special Edition (repository-extended), поэтому перед установкой убедитесь, что этот репозиторий подключен на узле мониторинга.

Для установки необходимого программного обеспечения в операционной системе Astra Linux Special Edition выполните следующие действия на узле мониторинга:

  1. Обновите список доступных пакетов:

    sudo apt-get update
    
  2. Установите Prometheus, Alertmanager и Grafana:

    sudo apt-get install -y prometheus prometheus-alertmanager grafana
    
  3. Включите автоматический запуск Prometheus:

    sudo systemctl enable prometheus
    
  4. Включите автоматический запуск Alertmanager:

    sudo systemctl enable prometheus-alertmanager
    
  5. Включите автоматический запуск Grafana:

    sudo systemctl enable grafana-server
    
  6. Запустите Prometheus:

    sudo systemctl start prometheus
    
  7. Запустите Alertmanager:

    sudo systemctl start prometheus-alertmanager
    
  8. Запустите Grafana:

    sudo systemctl start grafana-server
    
  9. Проверьте состояние Prometheus:

    sudo systemctl status prometheus
    

    Сервис должен находиться в состоянии active (running).

  10. Проверьте состояние Alertmanager:

    sudo systemctl status prometheus-alertmanager
    

    Сервис должен находиться в состоянии active (running).

  11. Проверьте состояние Grafana:

    sudo systemctl status grafana-server
    

    Сервис должен находиться в состоянии active (running).

  12. Проверьте готовность Prometheus:

    curl -s http://127.0.0.1:9090/-/ready
    

    В ответе должна быть строка следующего вида:

    Prometheus Server is Ready.
    
  13. Проверьте готовность Alertmanager:

    curl -s http://127.0.0.1:9093/-/ready
    

    В ответе должна быть строка следующего вида:

    OK
    
  14. Проверьте готовность Grafana:

    curl -s http://127.0.0.1:3000/api/health
    

    В ответе должна быть строка следующего вида:

    "database": "ok"
    

Установка node_exporter#

На каждый узел платформы необходимо установить node_exporter для сбора и передачи метрик операционной системы в систему мониторинга. Пакет prometheus-node-exporter входит в расширенный репозиторий Astra Linux Special Edition (repository-extended), поэтому этот репозиторий должен быть подключен на каждом узле платформы.

Выполните следующие действия на каждом узле Astra Automation:

  1. Обновите список доступных пакетов:

    sudo apt-get update
    
  2. Установите пакет node_exporter:

    sudo apt-get install -y prometheus-node-exporter
    
  3. Включите автоматический запуск сервиса:

    sudo systemctl enable prometheus-node-exporter
    
  4. Запустите сервис:

    sudo systemctl start prometheus-node-exporter
    
  5. Проверьте состояние сервиса:

    sudo systemctl status prometheus-node-exporter
    

    Сервис должен находиться в состоянии active (running).

  6. Проверьте доступность метрик:

    curl -s http://127.0.0.1:9100/metrics | head
    

    В ответе должны отображаться метрики Prometheus.

Установка postgres_exporter#

На узел PostgreSQL необходимо установить postgres_exporter для сбора и передачи метрик базы данных в формате Prometheus. По умолчанию метрики, сформированные сервисом, доступны на порту TCP 9187.

Выполните следующие действия на узле PostgreSQL:

  1. Получите архив с бинарным файлом postgres_exporter из доверенного внутреннего репозитория или из официального репозитория проекта, затем распакуйте архив.

    Используйте версию, утвержденную для своей инфраструктуры.

  2. Скопируйте бинарный файл в каталог /usr/local/bin/:

    sudo install -o root -g root -m 0755 postgres_exporter /usr/local/bin/postgres_exporter
    
  3. Создайте пользователя PostgreSQL для сбора метрик:

    sudo -u postgres psql <<'SQL'
    CREATE USER postgres_exporter PASSWORD '<postgres_exporter_password>';
    GRANT pg_monitor TO postgres_exporter;
    SQL
    

    Здесь <postgres_exporter_password> – пароль пользователя postgres_exporter.

  4. Создайте отдельный сервис и добавьте его в список компонентов systemd:

    sudo tee /etc/systemd/system/postgres_exporter.service >/dev/null <<'EOF'
    [Unit]
    Description=Prometheus PostgreSQL Exporter
    After=network.target
    
    [Service]
    User=postgres
    Group=postgres
    Environment=DATA_SOURCE_NAME=postgresql://postgres_exporter:<postgres_exporter_password>@127.0.0.1:5432/postgres?sslmode=disable
    ExecStart=/usr/local/bin/postgres_exporter
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
    

    Здесь <postgres_exporter_password> – пароль пользователя postgres_exporter, созданного на предыдущем шаге. Конструкция <<'EOF' записывает содержимое буквально, поэтому после создания файла замените заменитель фактическим паролем. Специальные символы в пароле закодируйте в формате URL, поскольку значение входит в строку подключения DATA_SOURCE_NAME.

  5. Перечитайте конфигурацию systemd:

    sudo systemctl daemon-reload
    
  6. Включите автоматический запуск сервиса:

    sudo systemctl enable postgres_exporter
    
  7. Запустите сервис:

    sudo systemctl start postgres_exporter
    
  8. Проверьте состояние сервиса:

    sudo systemctl status postgres_exporter
    

    Сервис должен находиться в состоянии active (running).

  9. Проверьте доступность метрик:

    curl -s http://127.0.0.1:9187/metrics | head
    

    В ответе должны отображаться метрики PostgreSQL.

Установка redis_exporter#

На узлы Redis необходимо установить redis_exporter для сбора и передачи метрик Redis в формате Prometheus. По умолчанию метрики, сформированные сервисом, доступны на порту TCP 9121.

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

Способ подключения экспортера зависит от узла и от параметров, заданных при развертывании платформы:

  • На узлах Private Automation Hub работает локальный экземпляр Redis, который при установке по умолчанию (redis_disable_tls=false) принимает только подключения TLS на локальном адресе 127.0.0.1:6380. Сокет Unix /var/run/redis/redis.sock создается только при установке с параметром redis_disable_tls=true.

  • На узлах Gateway и Event-Driven Automation Redis принимает подключения TLS на локальном адресе 127.0.0.1:6379.

  • Список управления доступом (Access Control List, ACL) Redis включен при любых параметрах установки. На узлах Private Automation Hub, Gateway и Event-Driven Automation пользователь Redis default отключен, поэтому для подключения экспортеру необходимы название и пароль ACL-пользователя соответствующего компонента.

Примечание

В топологии уровня предприятия узлы Private Automation Hub входят в кластер Redis вместе с узлами Gateway и Event-Driven Automation. Локальный экземпляр Redis (127.0.0.1:6380) на узлах Private Automation Hub при этом сохраняется, а для мониторинга кластерного экземпляра настройте redis_exporter так же, как на узлах Gateway и Event-Driven Automation.

Установка redis_exporter на узел PAH#

Выполните следующие действия на каждом узле Private Automation Hub:

  1. Скопируйте бинарный файл в каталог /usr/local/bin/:

    sudo install -o root -g root -m 0755 redis_exporter /usr/local/bin/redis_exporter
    
  2. Создайте отдельный сервис и добавьте его в список компонентов systemd:

    sudo tee /etc/systemd/system/redis_exporter.service >/dev/null <<'EOF'
    [Unit]
    Description=Prometheus Redis Exporter
    After=network.target
    
    [Service]
    User=redis
    Group=redis
    Environment=REDIS_ADDR=rediss://127.0.0.1:6380
    Environment=REDIS_USER=<redis_user>
    Environment=REDIS_PASSWORD=<redis_password>
    Environment=REDIS_EXPORTER_TLS_CLIENT_CERT_FILE=/etc/astra-automation/redis-standalone/client_certs/client.crt
    Environment=REDIS_EXPORTER_TLS_CLIENT_KEY_FILE=/etc/astra-automation/redis-standalone/client_certs/client.key
    Environment=REDIS_EXPORTER_SKIP_TLS_VERIFICATION=true
    ExecStart=/usr/local/bin/redis_exporter --web.listen-address=0.0.0.0:9121
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
    

    Здесь:

    • <redis_user> – название ACL-пользователя Redis компонента Private Automation Hub; по умолчанию hub, задается параметром установки automationhub_redis_username;

    • <redis_password> – пароль этого пользователя, задается параметром установки automationhub_redis_password.

    Конструкция <<'EOF' записывает содержимое буквально, поэтому после создания файла замените заменители фактическими значениями. Клиентский сертификат client.crt и ключ client.key создаются при развертывании платформы и используются для подключения с проверкой подлинности клиента (mTLS). Сертификат Redis выпускается для служебного имени узла, поэтому при подключении по адресу 127.0.0.1 проверка имени в сертификате отключена параметром REDIS_EXPORTER_SKIP_TLS_VERIFICATION.

    Если платформа установлена с параметром redis_disable_tls=true, Redis на узлах Private Automation Hub доступен только через сокет Unix. В этом случае вместо строк REDIS_ADDR и REDIS_EXPORTER_TLS_* укажите:

    Environment=REDIS_ADDR=unix:///var/run/redis/redis.sock
    

    Строки REDIS_USER и REDIS_PASSWORD необходимы в обоих вариантах, поскольку ACL Redis включен всегда.

  3. Ограничьте права доступа к unit-файлу, поскольку он содержит пароль ACL-пользователя:

    sudo chmod 0600 /etc/systemd/system/redis_exporter.service
    
  4. Перечитайте конфигурацию systemd:

    sudo systemctl daemon-reload
    
  5. Включите автоматический запуск сервиса:

    sudo systemctl enable redis_exporter
    
  6. Запустите сервис:

    sudo systemctl start redis_exporter
    
  7. Проверьте состояние сервиса:

    sudo systemctl status redis_exporter
    

    Сервис должен находиться в состоянии active (running).

  8. Проверьте подключение экспортера к Redis:

    curl -s http://127.0.0.1:9121/metrics | grep '^redis_up'
    

    Команда должна вывести строку redis_up 1. Если команда выводит redis_up 0, проверьте адрес подключения, учетные данные ACL-пользователя и параметры TLS.

Установка redis_exporter на узел Gateway или EDA#

Выполните следующие действия на каждом узле Gateway и Event-Driven Automation:

  1. Скопируйте бинарный файл в каталог /usr/local/bin/:

    sudo install -o root -g root -m 0755 redis_exporter /usr/local/bin/redis_exporter
    
  2. Создайте отдельный сервис и добавьте его в список компонентов systemd:

    sudo tee /etc/systemd/system/redis_exporter.service >/dev/null <<'EOF'
    [Unit]
    Description=Prometheus Redis Exporter
    After=network.target
    
    [Service]
    User=redis
    Group=redis
    Environment=REDIS_ADDR=rediss://127.0.0.1:6379
    Environment=REDIS_USER=<redis_user>
    Environment=REDIS_PASSWORD=<redis_password>
    Environment=REDIS_EXPORTER_TLS_CLIENT_CERT_FILE=/etc/astra-automation/redis/server.crt
    Environment=REDIS_EXPORTER_TLS_CLIENT_KEY_FILE=/etc/astra-automation/redis/server.key
    Environment=REDIS_EXPORTER_SKIP_TLS_VERIFICATION=true
    ExecStart=/usr/local/bin/redis_exporter --web.listen-address=0.0.0.0:9121
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
    

    Здесь:

    • <redis_user> – название ACL-пользователя Redis компонента: по умолчанию gateway на узле Gateway (параметр установки automationgateway_redis_username) или eda на узле Event-Driven Automation (параметр установки automationedacontroller_redis_username);

    • <redis_password> – пароль этого пользователя, задается параметрами установки automationgateway_redis_password и automationedacontroller_redis_password соответственно.

    Конструкция <<'EOF' записывает содержимое буквально, поэтому после создания файла замените заменители фактическими значениями. Для подключения с проверкой подлинности клиента (mTLS) используются сертификат и ключ экземпляра Redis, доступные пользователю redis.

  3. Ограничьте права доступа к unit-файлу, поскольку он содержит пароль ACL-пользователя:

    sudo chmod 0600 /etc/systemd/system/redis_exporter.service
    
  4. Перечитайте конфигурацию systemd:

    sudo systemctl daemon-reload
    
  5. Включите автоматический запуск сервиса:

    sudo systemctl enable redis_exporter
    
  6. Запустите сервис:

    sudo systemctl start redis_exporter
    
  7. Проверьте состояние сервиса:

    sudo systemctl status redis_exporter
    

    Сервис должен находиться в состоянии active (running).

  8. Проверьте подключение экспортера к Redis:

    curl -s http://127.0.0.1:9121/metrics | grep '^redis_up'
    

    Команда должна вывести строку redis_up 1. Если команда выводит redis_up 0, проверьте адрес подключения, учетные данные ACL-пользователя и параметры TLS.

Установка blackbox_exporter#

На узел мониторинга необходимо установить blackbox_exporter для проверки доступности сервисов. blackbox_exporter – экспортер Prometheus, который выполняет сетевые проверки HTTP, HTTPS и TCP и передает их результат в виде метрик. По умолчанию метрики, сформированные сервисом, доступны на порту TCP 9115.

Выполните следующие действия на узле мониторинга:

  1. Получите архив с бинарным файлом blackbox_exporter из доверенного внутреннего репозитория или из официального репозитория проекта, затем распакуйте архив.

    Используйте версию, утвержденную для своей инфраструктуры.

  2. Скопируйте бинарный файл в каталог /usr/local/bin/:

    sudo install -o root -g root -m 0755 blackbox_exporter /usr/local/bin/blackbox_exporter
    
  3. Создайте каталог для конфигурации:

    sudo mkdir -p /etc/blackbox_exporter
    
  4. Создайте начальный файл /etc/blackbox_exporter/blackbox.yml со следующим содержимым:

    sudo tee /etc/blackbox_exporter/blackbox.yml >/dev/null <<'EOF'
    ---
    modules:
      http_2xx:
        prober: http
        timeout: 10s
        http:
          valid_status_codes: []
          tls_config:
            insecure_skip_verify: true
    EOF
    

    На этом этапе создается только модуль http_2xx для проверок без авторизации. Модуль http_2xx_bearer добавляется после создания токена доступа к Automation Controller.

  5. Создайте учетную запись для запуска сервиса.

    Если учетная запись blackbox_exporter уже существует, не выполняйте команду и перейдите к следующему шагу.

    sudo useradd --system --no-create-home --shell /usr/sbin/nologin blackbox_exporter
    
  6. Создайте отдельный сервис и добавьте его в список компонентов systemd:

    sudo tee /etc/systemd/system/blackbox_exporter.service >/dev/null <<'EOF'
    [Unit]
    Description=Prometheus Blackbox Exporter
    After=network.target
    
    [Service]
    User=blackbox_exporter
    Group=blackbox_exporter
    ExecStart=/usr/local/bin/blackbox_exporter \
      --config.file=/etc/blackbox_exporter/blackbox.yml \
      --web.listen-address=0.0.0.0:9115
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
  7. Перечитайте конфигурацию systemd:

    sudo systemctl daemon-reload
    
  8. Включите автоматический запуск сервиса:

    sudo systemctl enable blackbox_exporter
    
  9. Запустите сервис:

    sudo systemctl start blackbox_exporter
    
  10. Проверьте состояние сервиса:

    sudo systemctl status blackbox_exporter
    

    Сервис должен находиться в состоянии active (running).

  11. Проверьте доступность метрик:

    curl -s 'http://127.0.0.1:9115/probe?target=https://<gateway_address>/api/eda/v1/status/&module=http_2xx' | head
    

    Здесь <gateway_address> – IP-адрес или FQDN Gateway.

    В ответе должны отображаться метрики проверки доступности.

Проверка установленных компонентов#

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

  1. Убедитесь, что локальные сервисы доступны через стандартные порты TCP:

    ss -lntp | grep -E ':9090|:9093|:3000|:9115'
    

    В выводе команды должны быть строки со статусом LISTEN для портов 9090, 9093, 3000 и 9115. Если какой-либо порт отсутствует, проверьте состояние соответствующего сервиса с помощью systemctl status.

  2. Проверьте доступность Prometheus:

    curl -s http://127.0.0.1:9090/-/ready
    

    В ответе должна быть строка следующего вида:

    Prometheus Server is Ready.
    
  3. Проверьте доступность Alertmanager:

    curl -s http://127.0.0.1:9093/-/ready
    

    В ответе должна быть строка следующего вида:

    OK
    
  4. Проверьте доступность Grafana:

    curl -s http://127.0.0.1:3000/api/health
    

    В ответе должен быть объект JSON со строкой "database": "ok". Такая строка означает, что Grafana запущена и подключилась к своей базе данных.

  5. Проверьте доступность blackbox_exporter:

    curl -s http://127.0.0.1:9115/metrics | head
    

    В ответе должны отображаться строки с метриками Prometheus, например строки # HELP и # TYPE. Если ответ пустой или соединение не устанавливается, проверьте состояние сервиса blackbox_exporter.