Для предоставления данных системам мониторинга в каждом модуле сформирован экспортер метрик Prometheus.
Реализованы следующие сервисы, предоставляющие метрики мониторинга:
- модуль обмена с брокером mqtt (handler) -
http://HOST:PORT/handler/metrics
- модуль обработки данных (engine) -
http://HOST:PORT/engine/metrics
- модуль rest сервисов (webservices) -
http://HOST:PORT/sem-restservices/metrics
- модуль периодических заданий (periodic) -
http://HOST:PORT/periodic/metrics
- модуль уведомлений о событиях (notifier) -
http://HOST:PORT/metrics
(PORT для sem-notifier по умолчанию = 8549)
По умолчанию, сервисы мониторинга доступны по следующим портам:
- Inspark.Gate.MQTT (handler): 8755
- Inspark.Core сервис оперативной обработки engine: 8746
- Inspark.Core сервис периодических заданий periodic: 8752
- Inspark.Notification сервис уведомлений notification: 8549
- Inspark.Core сервис REST API webservices: 8080
В докер конфигурациях смотрите манифесты, порты могут быть переопределены.
Для проверки доступности метрик, выполните команды:
curl http://<dns-имя engine>:8746/engine/metrics
curl http://<dns-имя msghandler>:8755/handler/metrics
...
curl http://<dns-имя notifier>:8549/metrics
Метрики шины обмена данными Apache Artemis JMS доступны по порту 9404. Пример запроса метрик сервиса jms:
curl http://<dns-имя jms сервера>:9404
Для подключение метрик к системе мониторинга Prometeus необходимо внести данные об узлах мониторинга. Ниже показан пример для helm скрипта Prometeus scrape секции:
extraScrapeConfigs: |
- job_name: 'msghandler'
metrics_path: /msghandler/metrics
static_configs:
- targets:
- <dns имя узла 1>:8080
- <dns имя узла 2>:8080
....
- job_name: 'engine'
metrics_path: /engine/metrics
static_configs:
- targets:
- <dns имя узла 1>:8080
- <dns имя узла 2>:8080
....
- job_name: 'periodic'
metrics_path: /periodic/metrics
static_configs:
- targets:
- <dns имя узла 1>:8080
- <dns имя узла 2>:8080
....
- job_name: 'webservices'
metrics_path: /sem-restservices/metrics
static_configs:
- targets:
- <dns имя узла 1>:8080
- <dns имя узла 2>:8080
....
- job_name: 'notifier'
metrics_path: /metrics
static_configs:
- targets:
- <dns имя узла 1>:8549
- <dns имя узла 2>:8549
....
- job_name: "artemis_jms"
static_configs:
- targets:
- <dns имя узла 1>:9404
- <dns имя узла 2>:9404
В интерфейсе Graphana подключение метрик осуществляется с помощью экспортера (Data Source) Prometeus. Ниже показан пример вывода метрик на виджет Graphana:
На графике выведена метрика модуля engine
Единицы измерения:
- Количество - штук.
- Время - секунд.
¶ 7.2.1. Метрики модуля обмена с брокером mqtt handler
- mqtt_received_count - общее количество полученных MQTT сообщений, из них:
- mqtt_received_measures_total - количество полученных измерений
- mqtt_received_events_total - количество полученных событий
- mqtt_received_unsupported_total - количество неизвестных/не поддерживаемых сообщений
- mqtt_received{quantile=«0.95»,} - среднее время обработки одного сообщения MQTT, в которое укладываются 95% сообщений
- jms_collector_messages_count - количество обработанных сообщений очереди Collector
- jms_collector_messages{quantile=«0.95»,} - среднее время обработки сообщения очереди Collector (квантиль 95%)
- jms_command_messages_count - количество обработанных сообщений очереди Command
- jms_command_messages{quantile=«0.95»,} - среднее время обработки сообщения очереди Command (квантиль 95%)
- measures_processed_count - количество обработанных измерений
- measures_processed{quantile=«0.95»,} - среднее время обработки измерения (квантиль 95%)
- calc_param_jms_send_total - количество сообщений, отправленных в очередь CalcParam (количество параметров для вычисления)
- calc_param_processed_count - количество обработанных вычисляемых параметров
- calc_param_processed{quantile=«0.95»,} - среднее время вычисления параметра (квантиль 95%)
- aggregation_jms_received_count - количество полученных пакетов агрегации (по 32 параметра)
- aggregation_jms_received{quantile=«0.95»,} - среднее время вычисления агрегации пакета из 32-х параметров (квантиль 95%)
- rule_exec_count - количество обработанных серверных правил
- rule_exec{quantile=«0.95»,} - среднее время обработки серверного правила (квантиль 95%)
- event_processed_count - количество обработанных событий
- event_processed{quantile=«0.95»,} - среднее время обработки события (квантиль 95%)
- setvalue_processed_count - количество обработанных сообщений очереди SetValue
- setvalue_processed{quantile=«0.95»,} - среднее время обработки сообщения очереди SetValue (квантиль 95%)
- jms_notifications_sended_total - количество уведомлений, отправленных в очередь обработки уведомлений (Notify)
- event_imported_total - количество импортированных из очереди EventImport событий
- proc_exec - время выполнения КП для одного параметра
- aggregation_jms_sended_count - количество отправленных в JMS пакетов параметров для рассчета агрегации (в пакете 32 параметра)
- aggregation_jms_sended{quantile=«0.95»,} - среднее время отправки пакета параметров (квантиль 95%)
- check_config_count - количество проверенных на актуальность конфигураций контроллеров
- check_config{quantile=«0.95»,} - среднее время проверки на актуальность конфигурации контроллера
- check_schedule_count - количество проверенных на актуальность расписаний контроллеров
- check_schedule{quantile=«0.95»,} - среднее время проверки на актуальность расписания контроллера
- remove_lost_individual_procedures{quantile=«0.95»,} - среднее время выполнения блока удаления не актуальных контрольных процедур
- controller_status_detector{quantile=«0.95»,} - среднее время выполнения кода проверки изменения статуса всех MQTT контроллеров
- command_repeater_read_all{quantile=«0.95»,} - среднее время выполнения поиска всех команд блокировки параметра контроллера, которые нужно повторить
- command_repeater_send_command_count - количество повторно отправленных команд блокировки параметра контроллера
- command_repeater_send_command{quantile=«0.95»,} - среднее время повторной отправки команды блокировки параметра контроллера
- meteo_params_read_and_check_all{quantile=«0.95»,} - среднее время проверки всех метео-параметров на необходимость обновления их значения
- meteo_request_weather_for_coord_count - количество запросов метео-данных у внешних сервисов для определения погоды в координатах
- meteo_request_weather_for_coord{quantile=«0.95»,} - среднее время запроса метео-данных у внешних сервисов для определения погоды в одной координате
- meteo_measures_sended_total - количество отправленных метео-измерений
- object_status_update_count - количество обновленных статусов объектов
- object_status_update{quantile=«0.95»,} - среднее время обновленния статуса объекта
- deferred_state_device_params_read_all{quantile=«0.95»,} - среднее время получения всех идентификаторов вычисляемых параметров с отложенным изменением статуса из редис
- deferred_state_calc_params_read_all{quantile=«0.95»,} - среднее время получения всех идентификаторов вычисляемых параметров с отложенным изменением статуса из редис
- deferred_device_params_processed{quantile=«0.95»,} - среднее время обработки отложенного изменения статуса измеряемого параметра
- deferred_calc_params_processed{quantile=«0.95»,} - среднее время обработки отложенного изменения статуса вычисляемого параметра
- noproc_params_read_all{quantile=«0.95»,} - среднее время чтения всех параметров без КП в статусе отличном от «не контролируется»
- noproc_param_status_update_count - количество параметров без КП переведенных в статус «не контролируется»
- noproc_param_status_update{quantile=«0.95»,} - среднее время перевода параметр без КП в статус «не контролируется»
- redis_update_param_cache{quantile=«0.95»,} - среднее время обновления кеша параметров в редис
- redis_update_param_correction_cache{quantile=«0.95»,} - среднее время обновления кеша журнала корректировки параметров в редис
- redis_remove_obsolete_keys{quantile=«0.95»,} - среднее время удаления устаревших ключей контроллеров и их параметров из редис
- deferred_rule_exec_count - количество выполненных отложенных правил
- deferred_rule_exec{quantile=«0.95»,} - среднее время выполнения отложенного правила
- telegram_verify_accounts{quantile=«0.95»,} - среднее время выполнения задания по верификации аккаунтов Telegram
- slack_verify_accounts{quantile=«0.95»,} - среднее время выполнения задания по верификации аккаунтов Slack
- summary_schedule_build - время построения расписания для одного контроллера из данных БД
- notify_messages_count - общее количество уведомлений, в том числе полученных для повторной отправки
- notify_messages{quantile=«0.95»,} - среднее время отправки уведомления
- expired_messages_count - общее количество просроченных (не отправленных) уведомлений
- expired_messages{quantile=«0.95»,} - среднее время обработки просроченного уведомления
- messages_sended_total - количество успешно отправленных уведомлений
- messages_failed_total - количество ошибок отправки
- unknown_messages_total - количество уведомлений неизвестного типа (отправка не возможна)
- invalid_messages_total - количество не корректных уведомлений (атрибуты не заполнены или заполнены не как надо, отправка не возможна).
- email_messages_sended_total - количество успешно отправленных EMAIL
- email_messages_failed_total - количество ошибок отправки EMAIL
- email_message_time{quantile=«0.95»,} - среднее время отправки EMAIL
- telegram_messages_sended_total - количество успешно отправленных сообщений боту Telegram
- telegram_messages_failed_total - количество ошибок отправки сообщений боту Telegram
- telegram_message_time{quantile=«0.95»,} - среднее время отправки сообщения боту Telegram
- slack_messages_sended_total - количество успешно отправленных сообщений боту Slack
- slack_messages_failed_total - количество ошибок отправки сообщений боту Slack
- slack_message_time{quantile=«0.95»,} - среднее время отправки сообщения боту Slack
- push_messages_sended_total - количество успешно отправленных PUSH уведомлений
- push_messages_failed_total - количество ошибок отправки PUSH уведомлений
- puch_message_time{quantile=«0.95»,} - среднее время отправки PUSH уведомления
- sms_messages_sended_total - количество успешно отправленных сообщений SMS
- sms_messages_failed_total - количество ошибок отправки сообщений SMS
- sms_message_time{quantile=«0.95»,} - среднее время отправки сообщения SMS
- controllers_all - Общее количество контроллеров
- controllers_online - Количество контроллеров в статусе онлайн
- event_reference_update{quantile=«0.95»,} - Среднее время обновления карты соответствия событий виджетам (используется в вэбсокетах виджетов для ускорения поиска).
- param_reference_update{quantile=«0.95»,} - Среднее время обновления карты соответствия параметров виджетам (используется вэбсокетах виджетов для ускорения поиска).
- websocket_widget_sessions - Количество открытых сеансов websocket/widget.
- websocket_widget_incoming_total - Количество не валидных (не обработанных) входящих сообщений websocket/widget.
- websocket_widget_error_total - Количество ошибок обработки входящих сообщений websocket/widget (в процессе обработки произошла ошибка).
- websocket_widget_subscribe_count - Количество подписок на дашборды
- websocket_widget_subscribe{quantile=«0.95»,} - Среднее время подписки на дашборд вэбсокета websocket/widget
- websocket_widget_unsubscribe_count - Количество отписок от дашбордов вэбсокета websocket/widget
- websocket_widget_unsubscribe{quantile=«0.95»,} - Среднее время отписки от дашборда вэбсокета websocket/widget
- websocket_widget_set_param_value_count - Количество установок значения параметра через виджеты вэбсокета websocket/widget.
- websocket_widget_set_param_value{quantile=«0.95»,} - Среднее время установок значения параметра через виджеты вэбсокета websocket/widget.
- websocket_widget_change_param_manual_mode_count - Количество изменений режима ручного управления параметром через виджеты вэбсокета websocket/widget.
- websocket_widget_change_param_manual_mode{quantile=«0.95»,} - Количество изменений режима ручного управления параметром через виджеты вэбсокета websocket/widget.
- websocket_event_sessions - Количество открытых сеансов websocket/event.
- websocket_event_incoming_total - Количество сообщений, принятых в вэбсокет websocket/event.
- websocket_event_sended_count - Количество сообщений, отправленных подписчикам websocket/event.
- websocket_event_sended{quantile=«0.95»,} - Среднее время отправки сообщения подписчикам websocket/event.
Все REST-сервисы формируют метрики вида:
rest_HTTP-МЕТОД_путь_count - количество вызовов метода
rest_HTTP-МЕТОД_путь{quantile="0.95",} - среднее время выполнения метода, секунд
Пример: GET /db/controller сформирует метрики:
rest_get_db_controller_count - количество вызовов
rest_get_db_controller{quantile=«0.95»,} - среднее время выполнения, секунд