Общее описание

Система мониторинга сервисов NAICE представляет собой совокупность экспортеров метрик сервисов, системы их хранения и системы их визуализации. В качестве системы хранения метрик и представления их в виде временных рядов выступает сервис Prometheus, в качестве системы визуализации метрик в виде дашбордов - сервис Grafana. Экспортеры метрик уникальны для каждого отслеживаемого сервиса.

Помимо обработки метрик система мониторинга также включает в себя сбор логов docker-контейнеров сервисов NAICE и их хранение в Loki. Визуализация логов также доступна в Grafana.


Установка

Для разворачивания системы мониторинга используется Ansible-плейбук install-monitoring.yml, который входит в состав архива для установки NAICE.

Установка поддержана на те же операционные системы, что и NAICE (см. v1.0_3.1 Системные требования).

Минимальные системные требования к хосту для мониторинга:

Разворачивание мониторинга для standalone установки

Последовательность действий для установки:

  1. Отредактировать файл hosts-monitoring.yml для указания адресов доступа к хостам для установки.

    # Группа хостов для установки системы мониторинга для NAICE
    monitoring:
      hosts:
        node_with_monitoring:
          ansible_host: <IP-адрес хоста для разворачивания системы мониторинга>
          ansible_port: <ssh port, по умолчанию 22>
          ansible_user: <пользователь для подключения к хосту по ssh>
          ansible_ssh_pass: <пароль пользователя>
          ansible_become_password: <пароль для повышения привилегий (sudo)>
    
    nodes_with_naice:
      hosts:
        node_with_naice:
          ansible_host: <IP-адрес хоста, на котором установлен NAICE>
          ansible_port: <ssh port, по умолчанию 22>
          ansible_user: <пользователь для подключения к хосту по ssh>
          ansible_ssh_pass: <пароль пользователя>
          ansible_become_password: <пароль для повышения привилегий (sudo)>
    
    nodes_with_postgres:
      hosts:
        node_with_postgres:
          ansible_host: <IP-адрес хоста, на котором установлен PostgreSQL (при его вынесении отдельно от NAICE)>
          ansible_port: <ssh port, по умолчанию 22>
          ansible_user: <пользователь для подключения к хосту по ssh>
          ansible_ssh_pass: <пароль пользователя>
          ansible_become_password: <пароль для повышения привилегий (sudo)>
  2. Запустить Ansible-плейбук установки мониторинга:

    ansible-playbook install-monitoring-logging.yml -i inventory/hosts-monitoring.yml
     

В результате на хосте  node_who_monitor в директории установкии мониторинга (по умолчанию - /etc/docker-naice/monitoring) будут развернуты сервисы мониторинга: 

$ docker compose ps -a
WARN[0000] /etc/docker-naice/monitoring/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME                IMAGE                               COMMAND                  SERVICE             CREATED         STATUS                   PORTS
cadvisor-exporter   gcr.io/cadvisor/cadvisor:v0.49.2    "/usr/bin/cadvisor -…"   cadvisor-exporter   4 minutes ago   Up 4 minutes (healthy)   0.0.0.0:9200->8080/tcp, [::]:9200->8080/tcp
grafana             grafana/grafana:11.5.0              "/run.sh"                grafana             4 minutes ago   Up 4 minutes (healthy)   0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp
grafana_alloy       grafana/alloy:v1.6.1                "/bin/alloy run --se…"   grafana_alloy       4 minutes ago   Up 4 minutes             0.0.0.0:12345->12345/tcp, [::]:12345->12345/tcp
loki                grafana/loki:3.3.2                  "/usr/bin/loki -conf…"   loki                4 minutes ago   Up 4 minutes (healthy)   0.0.0.0:3100->3100/tcp, [::]:3100->3100/tcp
node_exporter       prom/node-exporter:v1.8.2           "/bin/node_exporter …"   node-exporter       4 minutes ago   Up 4 minutes (healthy)   0.0.0.0:9100->9100/tcp, [::]:9100->9100/tcp
pgwatch2            cybertec/pgwatch2-postgres:1.14.0   "/pgwatch2/docker-la…"   pgwatch2            4 minutes ago   Up 4 minutes (healthy)   5432/tcp, 8081/tcp, 9187/tcp, 0.0.0.0:3001->3000/tcp, [::]:3001->3000/tcp, 0.0.0.0:9080->8080/tcp, [::]:9080->8080/tcp
prometheus          prom/prometheus:v3.1.0              "/bin/prometheus --c…"   prometheus          4 minutes ago   Up 4 minutes (healthy)   0.0.0.0:9090->9090/tcp, [::]:9090->9090/tcp


Разворачивание мониторинга для установки в кластере

Последовательность действий для установки:

  1. Отредактировать файл hosts-cluster-monitoring.yml для указания адресов доступа к хостам для установки.

    ---
    # Группа хостов для установки системы мониторинга для NAICE
    monitoring:
      hosts:
        node_with_monitoring:
          ansible_host: <IP-адрес хоста для разворачивания системы мониторинга>
          ansible_port: <ssh port, по умолчанию 22>
          ansible_user: <пользователь для подключения к хосту по ssh>
          ansible_ssh_pass: <пароль пользователя>
          ansible_become_password: <пароль для повышения привилегий (sudo)>
    
    nodes_with_naice:
      hosts:
        first_node_with_naice:
          ansible_host: <IP-адрес первого хоста кластера NAICE>
          ansible_port: <ssh port, по умолчанию 22>
          ansible_user: <пользователь для подключения к хосту по ssh>
          ansible_ssh_pass: <пароль пользователя>
          ansible_become_password: <пароль для повышения привилегий (sudo)> 
        second_node_with_naice:
          ansible_host: <IP-адрес второго хоста кластера NAICE>
          ansible_port: <ssh port, по умолчанию 22>
          ansible_user: <пользователь для подключения к хосту по ssh>
          ansible_ssh_pass: <пароль пользователя>
          ansible_become_password: <пароль для повышения привилегий (sudo)>  
    
    nodes_with_postgres:
      hosts:
        first_node_with_postgres:
          ansible_host: 192.168.0.100
          ansible_port: <ssh port, по умолчанию 22>
          ansible_user: <пользователь для подключения к хосту по ssh>
          ansible_ssh_pass: <пароль пользователя>
          ansible_become_password: <пароль для повышения привилегий (sudo)>  
          forwarded_postgresql_port: 5432
          name_prefix_for_pgwatch2: "primary_"
        second_node_with_postgres:
          ansible_host: 192.168.0.101
          ansible_port: <ssh port, по умолчанию 22>
          ansible_user: <пользователь для подключения к хосту по ssh>
          ansible_ssh_pass: <пароль пользователя>
          ansible_become_password: <пароль для повышения привилегий (sudo)>  
          forwarded_postgresql_port: 5432
          name_prefix_for_pgwatch2: "secondary_"
  2. Запустить Ansible-плейбук установки мониторинга:

    ansible-playbook install-monitoring-logging.yml -i inventory/hosts-cluster-monitoring.yml
     

В результате на хосте  node_who_monitor в директории установкии мониторинга (по умолчанию - /etc/docker-naice/monitoring) будут развернуты сервисы мониторинга: 

$ docker compose ps -a
WARN[0000] /etc/docker-naice/monitoring/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME                IMAGE                               COMMAND                  SERVICE             CREATED          STATUS                    PORTS
cadvisor-exporter   gcr.io/cadvisor/cadvisor:v0.49.2    "/usr/bin/cadvisor -…"   cadvisor-exporter   34 minutes ago   Up 12 minutes (healthy)   0.0.0.0:9200->8080/tcp, [::]:9200->8080/tcp
grafana             grafana/grafana:11.5.0              "/run.sh"                grafana             34 minutes ago   Up 12 minutes (healthy)   0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp
loki                grafana/loki:3.3.2                  "/usr/bin/loki -conf…"   loki                34 minutes ago   Up 12 minutes (healthy)   0.0.0.0:3100->3100/tcp, [::]:3100->3100/tcp
node_exporter       prom/node-exporter:v1.8.2           "/bin/node_exporter …"   node-exporter       34 minutes ago   Up 12 minutes (healthy)   0.0.0.0:9100->9100/tcp, [::]:9100->9100/tcp
pgwatch2            cybertec/pgwatch2-postgres:1.14.0   "/pgwatch2/docker-la…"   pgwatch2            34 minutes ago   Up 12 minutes (healthy)   5432/tcp, 8081/tcp, 9187/tcp, 0.0.0.0:3001->3000/tcp, [::]:3001->3000/tcp, 0.0.0.0:9080->8080/tcp, [::]:9080->8080/tcp
prometheus          prom/prometheus:v3.1.0              "/bin/prometheus --c…"   prometheus          34 minutes ago   Up 12 minutes (healthy)   0.0.0.0:9090->9090/tcp, [::]:9090->9090/tcp


Просмотр

Для получения доступа к дашборду Grafana необходимо открыть браузер и перейти по адресу http://<IP-адрес хоста мониторинга>:<порт Grafana>. Номер порта, на котором работает Grafana, задается во время установки сервиса, по умолчанию - 3000.

Логин и пароль пользователя по умолчанию - admin / admin. После авторизации будет предложено изменить пароль по умолчанию. Если в этом нет необходимости, внизу под полями ввода пароля можно нажать кнопку skip.

Чтобы просмотреть доступные дашборды, надо нажать на надпись Dashboards в списке в верней левой части экрана:

Откроется окно со списком доступных дашбордов:

Всего доступно 15 дашбордов: