Мониторинг кластера 1С, отправка данных в prometheus
Приложение выполняет роль explorer'а для prometheus. На текущий момент приложение собирает метрики:
Используемые клиентские лицензии
Доступную производительность серверов приложений
Количество соединений
Количество сеансов
Текущая память процесса (получается из ОС, пока поддерживается только linux)
Общая загрузка ЦПУ (получается из ОС)
Метрики диска (получается из ОС, пока только linux)
Проверка галки "блокировка регламентных заданий"
Память всего
Память текущая
Чтение/Запись текущее
Время вызова текущее
Время вызова СУБД
Процессорное время текущее
сборка показателей осуществляется через утилиту rac. Каждую из метрик можно ставить на паузу, например такое может потребоваться в процессе обновления ИБ т.к. соединения RAC могут мешать этому процессу. Что бы поставить на паузу нужно отправить GET запрос
http://host:9091/Pause?metricNames=ProcData,SessionsMemory&offsetMin=1
где metricNames это метрики через запятую, offsetMin это пауза в минутах после которой автоматически включается сбор показателей. offsetMin - необязательный, если его не указывать сбор будет приостановлен будет пока явно его не запустить, запуск производится так:
http://host:9091/Continue?metricNames=ProcData,SessionsMemory
Имена метрик можно посмотреть в конфиге settings.yaml
git clone https://github.com/LazarenkoA/prometheus_1C_exporter
, переходим в каталог, выполняем go build -o "1C_exporter"
или go build -o "1C_exporter.exe"
.Linux:
./1C_exporter -port=9095 --settings=/usr/local/bin/settings.yaml
для запуска в качестве службы можно посмотреть пример systemd в каталоге service/linux
Windows:
1C_exporter.exe -port=9095 --settings=C:\settings.yaml
приложение поддерживает работу в режиме службы, пример создания службы можно посмотреть в каталоге service/windows
Если порт не указать по дефолту будет порт 9091
в конфиге прометеуса (prometheus.yml) нужно указать хосты на которых запущен explorer
- job_name: '1C_Metrics'
metrics_path: '/1C_Metrics'
static_configs:
- targets: ['host1:9091', 'host2:9091', 'host3:9091', 'host4:9091']
Все, настраиваем дажборды, умиляемся.
Для данной конфигурации дажбордов (Клиентские лицензии) настройки графаны такие:
sum by (licSRV) (ClientLic{quantile="0.99", licSRV=~"(?i).+sys.+"})
экспортер выдает данные в таком виде
.....
ClientLic{host="CA-N11-APP-1",licSRV="\"ca-sys-1\"",quantile="0.5"} 193
ClientLic{host="CA-N11-APP-1",licSRV="\"ca-sys-1\"",quantile="0.9"} 193
ClientLic{host="CA-N11-APP-1",licSRV="\"ca-sys-1\"",quantile="0.99"} 193
ClientLic_sum{host="CA-N11-APP-1",licSRV="\"ca-sys-1\""} 193
ClientLic_count{host="CA-N11-APP-1",licSRV="\"ca-sys-1\""} 1
ClientLic{host="CA-N11-APP-1",licSRV="HASP",quantile="0.5"} 17
ClientLic{host="CA-N11-APP-1",licSRV="HASP",quantile="0.9"} 17
ClientLic{host="CA-N11-APP-1",licSRV="HASP",quantile="0.99"} 17
ClientLic_sum{host="CA-N11-APP-1",licSRV="HASP"} 17
ClientLic_count{host="CA-N11-APP-1",licSRV="HASP"} 1
ClientLic{host="CA-N11-APP-1",licSRV="soft",quantile="0.5"} 4
ClientLic{host="CA-N11-APP-1",licSRV="soft",quantile="0.9"} 4
ClientLic{host="CA-N11-APP-1",licSRV="soft",quantile="0.99"} 4
ClientLic_sum{host="CA-N11-APP-1",licSRV="soft"} 4
ClientLic_count{host="CA-N11-APP-1",licSRV="soft"} 1
.....
это можно проверить выполнив curl http://localhost:9091/1C_Metrics
соответственно в примере sum by (licSRV) (ClientLic{quantile="0.99", licSRV=~"(?i).+sys.+"})
мы берем метрику ClientLic
ту где quantile="0.99" и licSRV подходит к regexp "(?i).+sys.+"
Другие дажборды настраиваются по аналогии. Другие примеры функций можно посмотреть в
документации prometheus
Пример настройки графаны для дажборда по IOPS диска
sum(disk{ node="$group", host=~"(?i).*app-1", quantile="0.99", metrics="IopsInProgress"})by (metrics)
Ожидание на диске
sum(rate(disk{ node="$group", host=~"(?i).*app-2", quantile="0.99", metrics="WeightedIO"}[5m])) by (metrics)