Развертывание системы мониторинга#
Для внедрения системы мониторинга выполните дополнительные шаги после развертывания Astra Automation.
Требования к сетевой доступности#
Узел мониторинга обращается к компонентам платформы и экспортерам за метриками, а администраторы обращаются к сервисам самого узла мониторинга. Настройте сетевой доступ в обоих направлениях.
Исходящий доступ узла мониторинга к источникам данных:
Источник данных |
Порт по умолчанию |
Назначение |
|---|---|---|
Gateway |
443/TCP |
Получение метрик Automation Controller и проверка состояния сервисов |
Private Automation Hub |
443/TCP |
Получение метрик Private Automation Hub |
|
9100/TCP |
Получение метрик операционной системы |
|
9187/TCP |
Получение метрик PostgreSQL |
|
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 выполните следующие действия на узле мониторинга:
Обновите список доступных пакетов:
sudo apt-get update
Установите Prometheus, Alertmanager и Grafana:
sudo apt-get install -y prometheus prometheus-alertmanager grafana
Включите автоматический запуск Prometheus:
sudo systemctl enable prometheus
Включите автоматический запуск Alertmanager:
sudo systemctl enable prometheus-alertmanager
Включите автоматический запуск Grafana:
sudo systemctl enable grafana-server
Запустите Prometheus:
sudo systemctl start prometheus
Запустите Alertmanager:
sudo systemctl start prometheus-alertmanager
Запустите Grafana:
sudo systemctl start grafana-server
Проверьте состояние Prometheus:
sudo systemctl status prometheus
Сервис должен находиться в состоянии
active (running).Проверьте состояние Alertmanager:
sudo systemctl status prometheus-alertmanager
Сервис должен находиться в состоянии
active (running).Проверьте состояние Grafana:
sudo systemctl status grafana-server
Сервис должен находиться в состоянии
active (running).Проверьте готовность Prometheus:
curl -s http://127.0.0.1:9090/-/ready
В ответе должна быть строка следующего вида:
Проверьте готовность Alertmanager:
curl -s http://127.0.0.1:9093/-/ready
В ответе должна быть строка следующего вида:
Проверьте готовность Grafana:
curl -s http://127.0.0.1:3000/api/health
В ответе должна быть строка следующего вида:
Установка node_exporter#
На каждый узел платформы необходимо установить node_exporter для сбора и передачи метрик операционной системы в систему мониторинга.
Пакет prometheus-node-exporter входит в расширенный репозиторий Astra Linux Special Edition (repository-extended), поэтому этот репозиторий должен быть подключен на каждом узле платформы.
Выполните следующие действия на каждом узле Astra Automation:
Обновите список доступных пакетов:
sudo apt-get update
Установите пакет
node_exporter:sudo apt-get install -y prometheus-node-exporter
Включите автоматический запуск сервиса:
sudo systemctl enable prometheus-node-exporter
Запустите сервис:
sudo systemctl start prometheus-node-exporter
Проверьте состояние сервиса:
sudo systemctl status prometheus-node-exporter
Сервис должен находиться в состоянии
active (running).Проверьте доступность метрик:
curl -s http://127.0.0.1:9100/metrics | head
В ответе должны отображаться метрики Prometheus.
Установка postgres_exporter#
На узел PostgreSQL необходимо установить postgres_exporter для сбора и передачи метрик базы данных в формате Prometheus.
По умолчанию метрики, сформированные сервисом, доступны на порту TCP 9187.
Выполните следующие действия на узле PostgreSQL:
Получите архив с бинарным файлом
postgres_exporterиз доверенного внутреннего репозитория или из официального репозитория проекта, затем распакуйте архив.Используйте версию, утвержденную для своей инфраструктуры.
Скопируйте бинарный файл в каталог
/usr/local/bin/:sudo install -o root -g root -m 0755 postgres_exporter /usr/local/bin/postgres_exporter
Создайте пользователя 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.Создайте отдельный сервис и добавьте его в список компонентов
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.Перечитайте конфигурацию systemd:
sudo systemctl daemon-reload
Включите автоматический запуск сервиса:
sudo systemctl enable postgres_exporter
Запустите сервис:
sudo systemctl start postgres_exporter
Проверьте состояние сервиса:
sudo systemctl status postgres_exporter
Сервис должен находиться в состоянии
active (running).Проверьте доступность метрик:
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:
Скопируйте бинарный файл в каталог
/usr/local/bin/:sudo install -o root -g root -m 0755 redis_exporter /usr/local/bin/redis_exporter
Создайте отдельный сервис и добавьте его в список компонентов
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 включен всегда.Ограничьте права доступа к unit-файлу, поскольку он содержит пароль ACL-пользователя:
sudo chmod 0600 /etc/systemd/system/redis_exporter.service
Перечитайте конфигурацию systemd:
sudo systemctl daemon-reload
Включите автоматический запуск сервиса:
sudo systemctl enable redis_exporter
Запустите сервис:
sudo systemctl start redis_exporter
Проверьте состояние сервиса:
sudo systemctl status redis_exporter
Сервис должен находиться в состоянии
active (running).Проверьте подключение экспортера к 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:
Скопируйте бинарный файл в каталог
/usr/local/bin/:sudo install -o root -g root -m 0755 redis_exporter /usr/local/bin/redis_exporter
Создайте отдельный сервис и добавьте его в список компонентов
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.Ограничьте права доступа к unit-файлу, поскольку он содержит пароль ACL-пользователя:
sudo chmod 0600 /etc/systemd/system/redis_exporter.service
Перечитайте конфигурацию systemd:
sudo systemctl daemon-reload
Включите автоматический запуск сервиса:
sudo systemctl enable redis_exporter
Запустите сервис:
sudo systemctl start redis_exporter
Проверьте состояние сервиса:
sudo systemctl status redis_exporter
Сервис должен находиться в состоянии
active (running).Проверьте подключение экспортера к 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.
Выполните следующие действия на узле мониторинга:
Получите архив с бинарным файлом
blackbox_exporterиз доверенного внутреннего репозитория или из официального репозитория проекта, затем распакуйте архив.Используйте версию, утвержденную для своей инфраструктуры.
Скопируйте бинарный файл в каталог
/usr/local/bin/:sudo install -o root -g root -m 0755 blackbox_exporter /usr/local/bin/blackbox_exporter
Создайте каталог для конфигурации:
sudo mkdir -p /etc/blackbox_exporter
Создайте начальный файл
/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.Создайте учетную запись для запуска сервиса.
Если учетная запись
blackbox_exporterуже существует, не выполняйте команду и перейдите к следующему шагу.sudo useradd --system --no-create-home --shell /usr/sbin/nologin blackbox_exporter
Создайте отдельный сервис и добавьте его в список компонентов
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
Перечитайте конфигурацию systemd:
sudo systemctl daemon-reload
Включите автоматический запуск сервиса:
sudo systemctl enable blackbox_exporter
Запустите сервис:
sudo systemctl start blackbox_exporter
Проверьте состояние сервиса:
sudo systemctl status blackbox_exporter
Сервис должен находиться в состоянии
active (running).Проверьте доступность метрик:
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 и отвечают на служебные запросы. Выполните следующие действия на узле мониторинга перед настройкой сбора метрик:
Убедитесь, что локальные сервисы доступны через стандартные порты TCP:
ss -lntp | grep -E ':9090|:9093|:3000|:9115'
В выводе команды должны быть строки со статусом
LISTENдля портов9090,9093,3000и9115. Если какой-либо порт отсутствует, проверьте состояние соответствующего сервиса с помощьюsystemctl status.Проверьте доступность Prometheus:
curl -s http://127.0.0.1:9090/-/ready
В ответе должна быть строка следующего вида:
Проверьте доступность Alertmanager:
curl -s http://127.0.0.1:9093/-/ready
В ответе должна быть строка следующего вида:
Проверьте доступность Grafana:
curl -s http://127.0.0.1:3000/api/health
В ответе должен быть объект JSON со строкой
"database": "ok". Такая строка означает, что Grafana запущена и подключилась к своей базе данных.Проверьте доступность
blackbox_exporter:curl -s http://127.0.0.1:9115/metrics | head
В ответе должны отображаться строки с метриками Prometheus, например строки
# HELPи# TYPE. Если ответ пустой или соединение не устанавливается, проверьте состояние сервисаblackbox_exporter.