Архитектура
Сервис предназначен для мониторинга состояния модулей проекта 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
Внешний вид
На главном дашборде сервиса мониторинга отображается состояние каждого модуля проекта 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) Для работы скрипта проверки авторизации личного кабинета и конструктора портала(AUTH_SERVICE, Portal-Constructor, WIFI_CAB) нужно создать системного пользователя "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:
Далее в каталог conf следует разместить преднастроенные конфигурационные файлы prometheus, а также alertmanager:
Следующий этап, запуск контейнеров, в корневом каталоге проекта выпонлнить команду:
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: 'node_exporter' 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