Section |
---|
Архитектура Drawio |
---|
border | true |
---|
viewerToolbar | true |
---|
| |
---|
fitWindow | false |
---|
diagramName | monitoring |
---|
simpleViewer | false |
---|
width | |
---|
diagramWidth | 828 |
---|
revision | 1 |
---|
|
Сервис предназначен для мониторинга состояния модулей проекта SoftWLC, проверки связности между компонентами системы и доступности баз данных, оповещениях о нештатных ситуациях. Состоит из нескольких компонентов: - сервер Prometheus, служит для сбора и хранения метрик.
- Grafana - визуализирует полученные метрики и представляет удобный дашборд для метрик.
- Alertmanager - менеджер уведомлений, служит для отправки алертов.
- Core-checker - сервис для сбора метрик, предоставляет API c метриками состояния модулей SoftWLC.
Модуль Eltex-core-checker устанавливается непосредственно на сервер, где установлены модули SoftWLC. Если архитектура SoftWLC подразумевает многохостовую систему, то пакет core-checker должен быть установлен на каждом сервере. Интерфейс Grafana с настроенными дашбордами доступен по адресу: Без форматирования |
---|
<<ip_address>>:3000/ |
Интерфейс Prometheus доступен по адресу: Без форматирования |
---|
<<ip_address>>:9090/ |
API core-checker: Без форматирования |
---|
<<ip_address>>:8000/metrics |
|
Внешний вид
Section |
---|
Column |
---|
|
![](/download/attachments/76808431/Selection_320.png?version=1&modificationDate=1595224911000&api=v2)
![](/download/attachments/76808431/Selection_321.png?version=1&modificationDate=1595224911000&api=v2)
|
Column |
---|
На главном дашборде сервиса мониторинга отображается состояние каждого модуля проекта SoftWLC. При нормальной работе, панели состояний отображаются зеленым цветом, как только сервис становится недоступен, панель окрашивается красным цветом. Подсказка |
---|
По нажатию на панель, подсвеченная красным цветом, можно перейти на страницу модуля. |
В правом верхнем углу доступны ярлыки с названием модулей. По клику на ярлык, можно перейти в дашборд, где доступна различная информация отслеживаемого модуля: Uptime модуля, максимальное и текущее количество файловых дескрипторов pid, время ответа сервиса, время ответа бд, количество выделенной виртуальной памяти, количество зарезервированной памяти. Для компонента radius так же доступна информация о количестве успешной и неуспешной авторизации enterprise пользователей.(Показывает значение с момента запуска core-checker)
|
|
Описание проверки
Результат выполнения проверки с различными типами метрик, доступен в API, пример метрики gauge(значение можек как увеличиваться, так и уменьшаться):
Без форматирования |
---|
# HELP monitor_apb_mercury_request request_duration_seconds
# TYPE monitor_apb_mercury_request gauge
monitor_apb_mercury_request 0.007621049880981445 |
Пример метрики counter(увеличивается только в положительную сторону):
Без форматирования |
---|
# HELP counter_positive_auth_radius_total positive counter authorization on radius
# TYPE counter_positive_auth_radius_total counter
counter_positive_auth_radius_total 7.0 |
Пример метрики, где всего два состояния(true и false):
Без форматирования |
---|
# HELP apb_state service status
# TYPE apb_state gauge
apb_state{apb_state="true"} 1.0
apb_state{apb_state="false"} 0.0 |
Пример вывода:
- EMS
Проверка сервиса СУ ems.
- Локальная проверка работоспособности northbound, запросом GetVersion;
- Проверка доступности базы данных "eltex-ems" mysql;
- Проверка связности с radius сервером по порту 22;
- Проверка доступности API сервиса PCRF.
- NBI
Проверка сервиса NBI.
- Локальная проверка работоспособности NBI, запросом GetVersion;
- Проверка доступности EMS;
- Проверка доступности по порту и адресу сервиса auth-service;
- Проверка доступности API сервиса PCRF;
- Проверка доступности базы данных mysql и mongo. - Captive Portal
Проверка сервиса portal.
- Проверка работоспособности портала, путем запроса на главную страницу;
- Проверка связности по порту сервиса mercury;
- Проверка доступности базы данных "eltex-portal". - Portal Constructor
Проверка сервиса констуктора портала.
- Проверка работоспособности конструктора портала;
- Проверка доступности базы данных "eltex-portal";
- Проверка доступности сервиза авторизации auth-service - Wi-Fi cab
Проверка личного кабинета.
- Проверка работоспособности личного кабинета;
- Проверка доступа до сервиса NBI, запросом GetVersion;
- Проверка доступности базы данных mongo. - APB
Проверка работоспособности сервиса apb.
- Проверка работоспособности сервиса apb по протоколу websocket;
- Проверка доступности по порту сервиса mercury. - PCRF
Проверка сервиса PCRF.
- Проверка сервиса PCRF, запросом в API;
- Проверка доступности базы данных mysql и mongo;
- Проверка доступности сервиса NBI. - RADIUS
Проверка сервиса авторизации radius.
- Проверка сервиса radius, путем авторизации на сервисе. - NGW
Проверка сервиса отправки сообщений ngw.
- Проверка доступности внешнего email сервиса;
- Проверка доступности внешнего смс шлюза по smpp. - AUTH-SERVICE
Проверка сервиса авторизации b2b клиентов.
- Проверка доступности сервиса, путем авторизации на сервисе. - MERCURY
Проверка доступности сервиса mercury.
- Проверка работоспособности сервиса mercury, путем запроса GetVersion по grpc;
- Проверка доступности базы данных. - BOB
Проверка работоспособности сервиса.
- Проверка работоспособности сервиса bob, запросом GetVersion;
- Провера доступности базы данных mysql. - DOORS
Проверка сервиса doors.
- Проверка работоспособности сервиса, авторизацией на сервисе;
- Проверка доступности базы данных "eltex-doors". - MAC-CHECKER
Проверка сервиса mac-checker.
- Проверка работоспособности сервиса mac-checker;
- Проверка доступности сервиса ems. - DISCONNECT-SERVICE
Проверка сервиса disconnect.
- Проверка работоспособности сервиса disconnect, запросом на сервис;
- Проверка доступности api сервиса pcrf.
Настройка
Конфигурационный файл сервиса core-checker находится по пути /etc/eltex-core-checker/application.conf
1) Для проверки работы сервиса eltex-radius необходимо создать enterprise пользователя с логином "tester", паролем "tester " и выбрать домен root в личном кабинете в разделе пользователи WI-FI.
2) Для работы скрипта проверки авторизации личного кабинета и конструктора портала нужно создать системного пользователя "tester" и паролем "tester" в разделе настройки > "Системные пользователи".
Без форматирования |
---|
[MONITORING]
wait = 5 время опроса сервиса, в секундах
exclude_checkers = disconnect, apb список сервисов, которые не нужно мониторить. Перечеслить через запятую
log = error уровень логирования
[APB]
apb_dir = /etc/eltex-apb/apb.properties конфигурационный файл
apb_address = 127.0.0.1 ip адрес
apb_port = 8090 порт
[EMS]
ems_address = 127.0.0.1
ems_port = 8080
ems_dir = /usr/lib/eltex-ems/conf/config.txt
[PORTAL]
portal_address = 127.0.0.1
portal_dir = /etc/eltex-portal/application.conf
portal_ssid = SSID_name Название SSID
portal_ap_domain = root домен ТД
portal_cp_domain = root домен портала
portal_cp_name = default Название Портала
portal_mac_client = aa:bb:cc:00:11:22
[PCRF]
pcrf_address = 127.0.0.1
pcrf_dir = /etc/eltex-pcrf/eltex-pcrf.json
pcrf_user = javauser
pcrf_password = javapassword
mysql_port = 3306
[MERCURY]
mercury_address = 127.0.0.1
mercury_port = 6565
mercury_dir = /etc/eltex-mercury/application.conf
[RADIUS]
radius_address = 127.0.0.1
radius_secret = testing123 secret
radius_user = tester логин, для проверки enterprise авторизации
radius_password = tester пароль, для проверки enterprise авторизации
radius_domain = root
radius_pattern_pos = Login OK шаблон, по которому определяется успешная авторизация
radius_pattern_neg = Login incorrect шаблон, по которому определяется неуспешная авторизация
radius_pattern_exclude = Login OK: [tester/tester]
[AUTH_SERVICE]
auth_service_address = 127.0.0.1
auth_service_port = 21812
auth_service_secret = eltex
auth_service_user = tester
auth_service_password = tester
[BOB]
bob_address = 127.0.0.1
bob_port = 9190
bob_dir = /etc/eltex-bob/application.properties
[Portal-Constructor]
cp_dir = /etc/eltex-portal-constructor/application.conf
cp_user = tester
cp_password = tester
cp_secret = eltex
cp_auth_port = 21812
[NGW]
ngw_dir = /etc/eltex-ngw/notification.properties
ngw_smpp = /etc/eltex-ngw/smpp_gate.conf
[NBI]
nbi_addr = localhost
nbi_dir = /etc/eltex-radius-nbi/radius_nbi_config.txt
nbi_username = softwlc_service
nbi_password = softwlc
[MAC_CHECKER]
mc_addr = localhost
mc_dir = /etc/eltex-ott-mac-checker/application.conf
[WIFI_CAB]
lk_dir = /etc/eltex-wifi-cab/system.xml
lk_secret = eltex
lk_user = tester
lk_password = tester
[DOORS]
doors_address = localhost
doors_dir = /etc/eltex-doors/application.properties
[DISCONNECT]
disconnect_address = localhost
disconnect_address_doors = localhost
disconnect_user = user
disconnect_password = password
disconnect_dir = /etc/eltex-disconnect-service/application.conf |
Оригинал
https://www.shellhacks.com/ru/prometheus-node-exporter-install-config-ubuntu-centos/
Настройка уведомлений по электронной почте осуществляется в конфигурационном файле alert_config.yml менеджера уведомлений
Без форматирования |
---|
global: блок настройки доступа к электронной почте
smtp_smarthost: 'smtp.yandex.ru:25'
smtp_from: 'user@yandex.ru' учетная запись отправителя
smtp_auth_username: 'user@yandex.ru' учетная запись отправителя
smtp_auth_password: 'password' пароль от уз
resolve_timeout: 10s
route:
receiver: 'abon'
group_interval: 10s
receivers: блок настройки отвечающий кому будет приходить уведомления
- name: 'abon'
email_configs:
- send_resolved: True
to: 'user_all@yandex.ru' адрес электронной почты |
Установка
- Установка модуля мониторинга eltex-core-checher осуществляется пакетным менеджером и выполняется на сервере с установлеными пакетами SoftWLC.
Пример установки:
Блок кода |
---|
|
root@ubuntu:/srv/docker/monitoring# dpkg -i eltex-core-checker.deb |
- Установка и настройка сервиса сбора метрик Prometheus, менеджера отправки уведомлений, а также сервиса визуалиции данных метрик Grafana осуществляется с помощью docker.
На сервере создать два каталога, один непосредственно для проекта мониторинга, второй для конфигурационных файлов.
Блок кода |
---|
|
root@ubuntu:/srv# mkdir -p docker/monitoring/conf |
- Для дальнейшей работы требуется установленный docker-compose. Его можно установить по инструкции https://docs.docker.com/compose/install/
- В каталоге monitoring создать файл docker-compose.yml с набором инструкций для docker-compose, в котором нужно прописать необходимые сервисы, а так же их конфигурацию. Так как для хранения данных Prometheus и Grafana испоьзуют собственные базы данных, то нужно также создать персистентное хранилище, которое позволяет сохранять все свои предыдущие состояния бд. Ниже приведен готовый docker-compose.yml:
Блок кода |
---|
language | yml |
---|
theme | RDark |
---|
title | docker-compose.yml |
---|
collapse | true |
---|
|
version: "3"
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./conf:/etc/prometheus
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=5d'
ports:
- "9090:9090"
grafana:
image: lab3.eltex.loc:5000/eltex-core-checker:latest
container_name: grafana
depends_on:
- prometheus
ports:
- 3000:3000
links:
- alertmanager:alertmanager
volumes:
- grafana_data:/var/lib/grafana
alertmanager:
image: prom/alertmanager:latest
container_name: alertmanager
volumes:
- ./conf:/etc/alertmanager/
ports:
- 9093:9093
command:
- '--config.file=/etc/alertmanager/alert_config.yml'
- '--storage.path=/alertmanager'
depends_on:
- prometheus
node-exporter:
hostname: monitoring-server
image: prom/node-exporter:latest
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- --path.procfs=/host/proc
- --path.sysfs=/host/sys
- --collector.filesystem.ignored-mount-points
- ^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)
ports:
- 9100:9100
volumes:
grafana_data:
prometheus_data: |
Далее в каталог conf следует разместить преднастроенные конфигурационные файлы prometheus, а также alertmanager:
Блок кода |
---|
language | yml |
---|
theme | RDark |
---|
title | prometheus.yml |
---|
collapse | true |
---|
|
scrape_configs:
- job_name: 'core-monitoring'
scrape_interval: 5s
metrics_path: '/metrics'
static_configs:
- targets: ['172.17.0.1:8000']
- job_name: 'monitoring-server'
scrape_interval: 5s
metrics_path: 'metrics'
static_configs:
- targets: ['172.17.0.1:9100']
- job_name: 'alertmanager'
scrape_interval: 5s
metrics_path: '/metrics'
static_configs:
- targets: ['172.17.0.1:9093']
# Alertmanager configuration
alerting:
alertmanagers:
- scheme: http
static_configs:
- targets:
- alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- 'alert.rules' |
Блок кода |
---|
language | yml |
---|
theme | RDark |
---|
title | alert_config.yml |
---|
collapse | true |
---|
|
global:
smtp_smarthost: 'smtp.yandex.ru:25'
smtp_from: 'user@yandex.ru'
smtp_auth_username: 'user@yandex.ru'
smtp_auth_password: 'password'
resolve_timeout: 10s
route:
receiver: 'abon'
group_interval: 10s
receivers:
- name: 'abon'
email_configs:
- send_resolved: True
to: 'user_all@yandex.ru'
# webhook_configs:
# - send_resolved: True
# http_config:
# proxy_url: http://172.17.0.1:8118
# url: 'http://172.17.0.1/alert/-000000000' |
Блок кода |
---|
language | yml |
---|
theme | RDark |
---|
title | alert.rules |
---|
collapse | true |
---|
|
groups:
- name: abon
rules:
- alert: ems_state_pcrf
expr: ems_state_pcrf{ems_state_pcrf="false"} > 0
for: 10s
annotations:
summary: "ems_state_pcrf down"
- alert: nbi_state_pcrf
expr: nbi_state_pcrf{nbi_state_pcrf="false"} > 0
for: 10s
annotations:
summary: "nbi_state_pcrf down"
- alert: apb_state_mercury
expr: apb_state_mercury{apb_state_mercury="false"} > 0
for: 10s
annotations:
summary: "apb_state_mercury down"
- alert: ngw_state_mongo
expr: ngw_state_mongo{ngw_state_mongo="false"} > 0
for: 10s
annotations:
summary: "ngw_state_mongo down"
- alert: nbi_state
expr: nbi_state{nbi_state="false"} > 0
for: 10s
annotations:
summary: "nbi_state down"
- alert: nbi_state_ems
expr: nbi_state_ems{nbi_state_ems="false"} > 0
for: 10s
annotations:
summary: "nbi_state_ems down"
- alert: doors_state_mysql
expr: doors_state_mysql{doors_state_mysql="false"} > 0
for: 10s
annotations:
summary: "doors_state_mysql down"
- alert: nbi_state_mysql
expr: nbi_state_mysql{nbi_state_mysql="false"} > 0
for: 10s
annotations:
summary: "nbi_state_mysql down"
- alert: portal_state_mercury
expr: portal_state_mercury{portal_state_mercury="false"} > 0
for: 10s
annotations:
summary: "portal_state_mercury down"
- alert: nbi_state_auth_service
expr: nbi_state_auth_service{nbi_state_auth_service="false"} > 0
for: 10s
annotations:
summary: "nbi_state_auth_service down"
- alert: mac_checker_state
expr: mac_checker_state{mac_checker_state="false"} > 0
for: 10s
annotations:
summary: "mac_checker_state down"
- alert: portal_state
expr: portal_state{portal_state="false"} > 0
for: 10s
annotations:
summary: "portal_state down"
- alert: pcrf_state
expr: pcrf_state{pcrf_state="false"} > 0
for: 10s
annotations:
summary: "pcrf_state down"
- alert: prcf_state_nbi
expr: prcf_state_nbi{prcf_state_nbi="false"} > 0
for: 10s
annotations:
summary: "prcf_state_nbi down"
- alert: nbi_state_mongo
expr: nbi_state_mongo{nbi_state_mongo="false"} > 0
for: 10s
annotations:
summary: "nbi_state_mongo down"
- alert: lk_state_nbi
expr: lk_state_nbi{lk_state_nbi="false"} > 0
for: 10s
annotations:
summary: "lk_state_nbi down"
- alert: lk_state_auth_service
expr: lk_state_auth_service{lk_state_auth_service="false"} > 0
for: 10s
annotations:
summary: "lk_state_auth_service down"
- alert: pcrf_state_mysql
expr: pcrf_state_mysql{pcrf_state_mysql="false"} > 0
for: 10s
annotations:
summary: "pcrf_state_mysql down"
- alert: mercury_state
expr: mercury_state{mercury_state="false"} > 0
for: 10s
annotations:
summary: "mercury_state down"
- alert: portal_state_mysql
expr: portal_state_mysql{portal_state_mysql="false"} > 0
for: 10s
annotations:
summary: "portal_state_mysql down"
- alert: mercury_state_mysql
expr: mercury_state_mysql{mercury_state_mysql="false"} > 0
for: 10s
annotations:
summary: "mercury_state_mysql down"
- alert: apb_state
expr: apb_state{apb_state="false"} > 0
for: 10s
annotations:
summary: "apb down"
- alert: doors_state
expr: doors_state{doors_state="false"} > 0
for: 10s
annotations:
summary: "doors_state down"
- alert: pcrf_state_mongo
expr: pcrf_state_mongo{pcrf_state_mongo="false"} > 0
for: 10s
annotations:
summary: "pcrf_state_mongo down"
- alert: radius_state
expr: radius_state{radius_state="false"} > 0
for: 10s
annotations:
summary: "radius_state down"
- alert: auth_service_state
expr: auth_service_state{auth_service_state="false"} > 0
for: 10s
annotations:
summary: "auth_service_state down"
- alert: disconnect_state
expr: disconnect_state{disconnect_state="false"} > 0
for: 10s
annotations:
summary: "disconnect_state down"
- alert: lk_state_mongo
expr: lk_state_mongo{lk_state_mongo="false"} > 0
for: 10s
annotations:
summary: "lk_state_mongo down"
- alert: bob_state
expr: bob_state{bob_state="false"} > 0
for: 10s
annotations:
summary: "bob_state down"
- alert: disconnect_state_pcrf
expr: disconnect_state_pcrf{disconnect_state_pcrf="false"} > 0
for: 10s
annotations:
summary: "disconnect_state_pcrf down"
- alert: bob_state_mysql
expr: bob_state_mysql{bob_state_mysql="false"} > 0
for: 10s
annotations:
summary: "bob_state_mysql down"
- alert: cp_state_auth_service
expr: cp_state_auth_service{cp_state_auth_service="false"} > 0
for: 10s
annotations:
summary: "cp_state_auth_service down"
- alert: cp_state_mysql
expr: cp_state_mysql{cp_state_mysql="false"} > 0
for: 10s
annotations:
summary: "cp_state_mysql down"
- alert: mac_checker_state_ems
expr: mac_checker_state_ems{mac_checker_state_ems="false"} > 0
for: 10s
annotations:
summary: "mac_checker_state_ems down"
- alert: ngw_state_smpp
expr: ngw_state_smpp{ngw_state_smpp="false"} > 0
for: 10s
annotations:
summary: "ngw_state_smpp down"
- alert: ngw_state_mail
expr: ngw_state_mail{ngw_state_mail="false"} > 0
for: 10s
annotations:
summary: "ngw_state_mail down"
- alert: ems_state
expr: ems_state{ems_state="false"} > 0
for: 10s
annotations:
summary: "ems_state down"
- alert: ems_state_mysql
expr: ems_state_mysql{ems_state_mysql="false"} > 0
for: 10s
annotations:
summary: "ems_state_mysql down" |
Следующий этап, запуск контейнеров, в корневом каталоге проекта выпонлнить команду:
Блок кода |
---|
|
root@ubuntu:/srv/docker/monitoring# docker-compose up -d |
Далее убедиться в работоспособности сервиса, выполнив:
Блок кода |
---|
|
root@ubuntu:/srv/docker/monitoring# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------
alertmanager /bin/alertmanager --config ... Up 0.0.0.0:9093->9093/tcp
grafana /run.sh Up 0.0.0.0:3000->3000/tcp
monitoring_node-exporter_1 /bin/node_exporter --path. ... Up 0.0.0.0:9100->9100/tcp
prometheus /bin/prometheus --config.f ... Up 0.0.0.0:9090->9090/tcp |
Настройка docker-compose на автостарт при загрузке системы
Создайте файл systemd-сервиса
sudo nano /etc/systemd/system/docker-compose-eltex-softwlc-monitoring.service
Блок кода |
---|
|
[Unit]
Description=Docker Compose Eltex SoftWLC Monitoring
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/srv/docker/monitoring
ExecStart=/usr/bin/docker-compose up -d
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target |
Перезапустите systemd и настройте docker-compose-eltex-softwlc-monitoring на автостарт при загрузке системы
Блок кода |
---|
|
$ sudo systemctl daemon-reload
$ sudo systemctl enable docker-compose-eltex-softwlc-monitoring |
Установка node_exporter на остальные сервера (для могохостовой системы)
Node Exporter - prometheus client от google, который умеет отдавать метрики произвольного линукс хоста (на котором установлен).
Создайте непривилегированного пользователя node_exporter
Блок кода |
---|
$ sudo useradd node_exporter -s /sbin/nologin |
Скачать бинарник https://prometheus.io/download/#node_exporter
Блок кода |
---|
wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
tar xvfz node_exporter-*.*-amd64.tar.gz
sudo cp node_exporter-*.*-amd64/node_exporter /usr/sbin/ |
Создайте файл systemd-сервиса
sudo nano /etc/systemd/system/node_exporter.service
Блок кода |
---|
[Unit]
Description=Node Exporter
[Service]
User=node_exporter
EnvironmentFile=/etc/sysconfig/node_exporter
ExecStart=/usr/sbin/node_exporter $OPTIONS
[Install]
WantedBy=multi-user.target |
Создайте sysconfig файл
Используйте этот файл, чтобы прописать опции передаваемые сервису, например
Блок кода |
---|
sudo mkdir -p /etc/sysconfig
sudo touch /etc/sysconfig/node_exporter
sudo vim /etc/sysconfig/node_exporter
OPTIONS="--collector.textfile.directory /var/lib/node_exporter/textfile_collector" |
Перезапустите systemd и настройте node_exporter на автостарт при загрузке системы
Блок кода |
---|
$ sudo systemctl daemon-reload
$ sudo systemctl enable node_exporter |
Запустите сервис node_exporter
Блок кода |
---|
$ sudo systemctl start node_exporter
|
После установки Node Exporter, проверьте что метрики экспортируются:
Блок кода |
---|
$ curl http://localhost:9100/metrics |
Добавляем новый сервер для мониторинга в конфиг prometheus.yml
Адреса получения метрик прописываются в поле targets
Блок кода |
---|
|
- job_name: 'monitoring-server'
scrape_interval: 5s
metrics_path: 'metrics'
static_configs:
- targets: ['172.17.0.1:9100', '100.110.0.184:9100', '100.110.0.185:9100'] |
В Grafana ищите раздел OS
![](/download/attachments/76808431/Screenshot%20from%202020-03-04%2017-17-35.png?version=1&modificationDate=1595224911000&api=v2)