Описание

Ряд модулей SoftWLC поддерживает метрики в формате Prometheus. Для отображения и анализа полученных метрик используется Grafana.

СервисАдрес получения метрик
eltex-apbhttp://<IP-адрес сервера>:8090/apb/api/metrics
eltex-brucehttp://<IP-адрес сервера>:8008/actuator/prometheus
eltex-jobshttp://<IP-адрес сервера>:9696/actuator/prometheus
eltex-emshttp://<IP-адрес сервера>:9091/metrics
eltex-mercuryhttp://<IP-адрес сервера>:6564/mercury/prometheus
eltex-ngwhttp://<IP-адрес сервера>:8040/actuator/prometheus
eltex-pcrf

http://<IP-адрес сервера>:7070/metrics/prometheus

eltex-radiushttp://<IP-адрес сервера>:9812/metrics
eltex-radius-nbi

http://<IP-адрес сервера>:9010/

eltex-papayahttp://<IP-адрес сервера>:9098/actuator/prometheus
eltex-portalhttp://<IP-адрес сервера>:9000/eltex_portal/api/metrics
eltex-portal-constructorhttp://<IP-адрес сервера>:9001/epadmin/actuator/prometheus
eltex-wifi-cabhttp://<IP-адрес сервера>:8085/actuator/prometheus
eltex-wifi-sahttp://<IP-адрес сервера>:8042/metrics/meter
eltex-ott-paulhttp://<IP-адрес сервера>:8097/actuator/prometheus


node_exporterhttp://<IP-адрес сервера>:9991/metrics

Для мониторинга производительности сервера, на котором работает комплекс SoftWLC предполагается использование утилиты node_exporter.

Подготовка к развертыванию системы

Развертывать систему мониторинга рекомендуется на отдельном хосте, характеристики 4Gb RAM, 1 CPU, 100Gb HDD.

Так же на данный хост требуется установить пакеты docker, docker-compose.

Установка Node_Exporter

Node-Exporter может быть запущен в докере или как служба.

Пакет должен быть установлен на каждом сервере, используемом для функционирования SoftWLC или его компонентов.Установка описана в документации

Запуск Node_Exporter в докере

Обратим внимание, что используется не дефолтный порт сервиса, а 9991.

Создать папку:

sudo mkdir /opt/node_exporter/

В данной папке создать файл docker-compose.yml:

version: '3.4'

services:
  node-exporter:
    container_name: node_exporter
    image: prom/node-exporter:v1.3.1
    ports:
      - "9991:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    restart: unless-stopped

Выполнить запуск сервиса командой:

sudo docker compose up -d

По умолчанию в eltex-radius не отдает информацию о метриках. 

Для сбора метрик сервиса Radius и передачи их в Prometheus, необходимо установить дополнительную утилиту eltex-radius-exporter   на сервер SoftWLC.

Утилита запускается в контейнере. Для возможности получения информации о состоянии потребуется предварительная настройка eltex-radius.

Настройка и запуск eltex-radius-exporter.

Запуск eltex-radius-exporter выполняется в контейнере, все параметры конфигурации задаются в файле "docker-compose.yml".

Пример конфигурации docker-compose.yml:

docker-compose.yml
version: '3'
 
services:
  eltex-radius-exporter:
    container_name: eltex-radius-exporter
    image: hub.eltex-co.ru/softwlc/eltex-radius-exporter:<SoftWLC version>-<tag>   
    ports:
      - "9812:9812/tcp"
    environment:
      - RADIUS_ADDRESS=eltex-radius:18123
      - RADIUS_SECRET=eltex
      - RADIUS_TIMEOUT=1000
      - TZ=Asia/Novosibirsk

Настройка и запуск если eltex-radius запущен в контейнере:

Контейнеры eltex-radius и eltex-radius-exporter работают на одном хосте 

В случае запуска eltex-radius и eltex-radius-exporter на одном хосте рекомендуется использовать один файл конфигурации "docker-compose.yml".

Особенностями конфигурации в этом случае является использование режима "network_mode: host", что бы была возможность реализовать взаимодействие через адрес 127.0.0.1 (localhost). 

Добавить конфигурацию eltex-radius-exporter в файл "docker-compose.yml":

docker-compose.yml
version: '3'
 
services:
  eltex-radius:
    container_name: eltex-radius
    network_mode: host
    image: hub.eltex-co.ru/softwlc/eltex-radius:<SoftWLC version>-<tag>
    env_file: eltex-radius.env
    volumes:
      # Eltex OUI list
      - /usr/share/oui-base/oui-freeradius.txt:/usr/share/oui-base/oui-freeradius.txt:ro
      # Eltex-Radius-NBI certificates
      - ./eltex-radius/certs/ca/wireless-ca.crt:/etc/eltex-radius/certs/ca/default.pem:ro
      - ./eltex-radius/certs/server.crt:/etc/eltex-radius/certs/server.crt:ro
      - ./eltex-radius/certs/server.key:/etc/eltex-radius/certs/server.key:ro
 
  eltex-radius-exporter:
    container_name: eltex-radius-exporter
    image: hub.eltex-co.ru/softwlc/eltex-radius-exporter:<SoftWLC version>-<tag>
    network_mode: host   
    environment:
      - RADIUS_ADDRESS=127.0.0.1:18123
      - RADIUS_SECRET=eltex
      - RADIUS_TIMEOUT=1000
      - TZ=Asia/Novosibirsk

Проконтролировать, что в файле переменных окружения "eltex-radius" "eltex-radius.env" указаны дефолтные значения для секции "Status-Server settings":

eltex-radius.env
# ! Настройки приложения ! #
# Ports on which server will listen
RADIUS_AUTH_PORT=1812
RADIUS_ACCT_PORT=1813
RADIUS_INNER_TUNNEL_PORT=18121
   
# MySQL database
RADIUS_DB_HOST=localhost
RADIUS_DB_PORT=3306
RADIUS_DB_LOGIN=radius
RADIUS_DB_PASSWORD=radpass
RADIUS_DB_NAME=radius
   
# PCRF
# If you setting RADIUS_PCRF_ENABLED=0, then you also should enable accounting port listening in "default" server
RADIUS_PCRF_HOST=127.0.0.1
RADIUS_PCRF_PORT=7080
RADIUS_PCRF_ENABLED=1
   
# EAP
RADIUS_CA_CERT_NAME=default.pem
RADIUS_TLS_KEY_PASSWORD=eltex
   
# Proxying
RADIUS_PROXY_AUTH=0
RADIUS_PROXY_DOMAIN_REGEX=^(.+\.)?enterprise\.root$
RADIUS_PROXY_HOST=127.0.0.1
RADIUS_PROXY_PORT=18121
RADIUS_PROXY_SECRET=eltex
   
# Ubiquity vendor detection
RADIUS_UBI_VENDOR_REGEX=Apple|Ubiquiti
RADIUS_VENDOR_GROUP_ENABLED=1
   
# Settings of runtime NAS discovery
RADIUS_DYNAMIC_CLIENTS=false
RADIUS_DYNAMIC_CLIENT_SUBNET=192.168.0.0/16
RADIUS_DYNAMIC_CLIENT_LIFETIME=3600
RADIUS_DYNAMIC_CLIENT_RATE_LIMIT=false
   
# Proxy SSID
RADIUS_PROXY_SSID_ENABLED=0
RADIUS_PROXY_SSID_VALUE=EAP_TLS
RADIUS_PROXY_SSID_HOST=127.0.0.1
RADIUS_PROXY_SSID_PORT=18122
RADIUS_PROXY_SSID_SECRET=eltex
 
# Status-Server settings
RADIUS_STATUS_HOST=127.0.0.1
RADIUS_STATUS_PORT=18123
RADIUS_STATUS_CLIENT_HOST=127.0.0.1
RADIUS_STATUS_CLIENT_SECRET=eltex
  
#TIMEZONE
TZ=Asia/Novosibirsk

Выполнить запуск контейнера:

sudo docker-compose up -d

Контейнеры eltex-radius и eltex-radius-exporter работаю на разных хостах

Если контейнеры eltex-radius и eltex-radius-exporter работаю на разных хостах - в их настройках надо будет указать реальные адреса для получения информации.

На хосте, где запущен "eltex-radius" в файле настроек переменных окружения "eltex-radius.env" указать значения переменных в секции "Status-Server settings":

eltex-radius.env
# ! Настройки приложения ! #
# Ports on which server will listen
RADIUS_AUTH_PORT=1812
RADIUS_ACCT_PORT=1813
RADIUS_INNER_TUNNEL_PORT=18121
   
# MySQL database
RADIUS_DB_HOST=localhost
RADIUS_DB_PORT=3306
RADIUS_DB_LOGIN=radius
RADIUS_DB_PASSWORD=radpass
RADIUS_DB_NAME=radius
   
# PCRF
# If you setting RADIUS_PCRF_ENABLED=0, then you also should enable accounting port listening in "default" server
RADIUS_PCRF_HOST=127.0.0.1
RADIUS_PCRF_PORT=7080
RADIUS_PCRF_ENABLED=1
   
# EAP
RADIUS_CA_CERT_NAME=default.pem
RADIUS_TLS_KEY_PASSWORD=eltex
   
# Proxying
RADIUS_PROXY_AUTH=0
RADIUS_PROXY_DOMAIN_REGEX=^(.+\.)?enterprise\.root$
RADIUS_PROXY_HOST=127.0.0.1
RADIUS_PROXY_PORT=18121
RADIUS_PROXY_SECRET=eltex
   
# Ubiquity vendor detection
RADIUS_UBI_VENDOR_REGEX=Apple|Ubiquiti
RADIUS_VENDOR_GROUP_ENABLED=1
   
# Settings of runtime NAS discovery
RADIUS_DYNAMIC_CLIENTS=false
RADIUS_DYNAMIC_CLIENT_SUBNET=192.168.0.0/16
RADIUS_DYNAMIC_CLIENT_LIFETIME=3600
RADIUS_DYNAMIC_CLIENT_RATE_LIMIT=false
   
# Proxy SSID
RADIUS_PROXY_SSID_ENABLED=0
RADIUS_PROXY_SSID_VALUE=EAP_TLS
RADIUS_PROXY_SSID_HOST=127.0.0.1
RADIUS_PROXY_SSID_PORT=18122
RADIUS_PROXY_SSID_SECRET=eltex
 
# Status-Server settings
RADIUS_STATUS_HOST=<IP-адрес, на котором ожидаются запросы от eltex-radius-exporter>
RADIUS_STATUS_PORT=18123
RADIUS_STATUS_CLIENT_HOST=<IP-адрес, с которого ожидаются запросы от eltex-radius-exporter>
RADIUS_STATUS_CLIENT_SECRET=eltex
  
#TIMEZONE
TZ=Asia/Novosibirsk

Перезапустить сервис:

sudo docker-compose up -d

На хосте, где выполняется запуск "eltex-radius-exporter" в файле конфигурации "docker-compose.yml" настроить:

Конфигурация eltex-radius-exporter в docker-compose.yml
version: '3'
services:
  eltex-radius-exporter:
    container_name: eltex-radius-exporter
    image: hub.eltex-co.ru/softwlc/eltex-radius-exporter:<SoftWLC version>-<tag>   
    ports:
      - "9812:9812/tcp"
    environment:
      - RADIUS_ADDRESS=<IP-адрес eltex-radius>:18123
      - RADIUS_SECRET=eltex
      - RADIUS_TIMEOUT=1000
      - TZ=Asia/Novosibirsk

Запустить контейнер:

sudo docker-compose up -d

Настройка и запуск если eltex-radius запущен как приложение

"Eltex-radius-exporter" может быть запущен на любом хосте, в т.ч. и на одном хосте с сервисом "eltex-radius". При запуске на одном хосте в конфигурации потребуется использование режима "network_mode: host" для контейнера, что бы была возможность реализовать взаимодействие через адрес 127.0.0.1 (localhost).

Приложение eltex-radius и контейнер eltex-radius-exporter работают на одном хосте 

Проконтролировать, что в файле конфигурации "eltex-radius" "/etc/eltex-radius/local.conf" указаны дефолтные значения в разделе "Status-Server settings":

/etc/eltex-radius/local.conf
# Ports on which the server will listen
auth_port=1812
#acct_port=1813
inner_tunnel_port=18121
 
# MySQL database
db_host="localhost"
db_port=3306
db_login="radius"
db_password="radpass"
db_name="radius"
 
# PCRF
# If you setting pcrf_enabled=0, then you also should enable accounting port listening in "default" server
pcrf_host="127.0.0.1"
pcrf_port=7080
pcrf_enabled=1
 
# EAP
ca_cert_name="local.pem"
tls_key_password="1234"
 
# Proxying
proxy_auth=0
proxy_domain_regex="^(.+\.)?enterprise\.root$"
proxy_host="127.0.0.1"
proxy_port=18121
proxy_secret="eltex"
 
# Ubiquity vendor detection
ubi_vendor_regex="Apple|Ubiquiti"
vendor_group_enabled=1
 
# Settings of runtime NAS discovery
dynamic_clients=false
dynamic_client_subnet=192.168.0.0/16
dynamic_client_lifetime=3600
dynamic_client_rate_limit=false
 
# Proxy SSID (for example to eltex-eap-tls) #139679
proxy_ssid_enabled=0
proxy_ssid_value="EAP_TLS"
proxy_ssid_host="127.0.0.1"
proxy_ssid_port=18122
proxy_ssid_secret="eltex"
 
# Status-Server settings
status_host="127.0.0.1"
status_port=18123
status_client_host="127.0.0.1"
status_client_secret="eltex"
 
#TIMEZONE
TZ=Asia/Novosibirsk


При необходимости исправить их и выполнить перезапуск "eltex-radius":

sudo systemctl restart eltex-radius

Сконфигурировать файл docker-compose.yml для запуска eltex-radius-exporter:

docker-compose.yml
version: '3'

services:
eltex-radius-exporter:
container_name: eltex-radius-exporter
image: hub.eltex-co.ru/softwlc/eltex-radius-exporter:<SoftWLC version>-<tag>
network_mode: host 
environment:
- RADIUS_ADDRESS=127.0.0.1:18123
- RADIUS_SECRET=eltex
- RADIUS_TIMEOUT=1000
- TZ=Asia/Novosibirsk

Запустить контейнер:

sudo docker-compose up -d

Приложение eltex-radius и контейнер eltex-radius-exporter работаю на разных хостах

Указать в файле конфигурации "eltex-radius" "/etc/eltex-radius/local.conf" настройки в разделе "Status-Server settings":

/etc/eltex-radius/local.conf
# Ports on which the server will listen
auth_port=1812
#acct_port=1813
inner_tunnel_port=18121
 
# MySQL database
db_host="localhost"
db_port=3306
db_login="radius"
db_password="radpass"
db_name="radius"
 
# PCRF
# If you setting pcrf_enabled=0, then you also should enable accounting port listening in "default" server
pcrf_host="127.0.0.1"
pcrf_port=7080
pcrf_enabled=1
 
# EAP
ca_cert_name="local.pem"
tls_key_password="1234"
 
# Proxying
proxy_auth=0
proxy_domain_regex="^(.+\.)?enterprise\.root$"
proxy_host="127.0.0.1"
proxy_port=18121
proxy_secret="eltex"
 
# Ubiquity vendor detection
ubi_vendor_regex="Apple|Ubiquiti"
vendor_group_enabled=1
 
# Settings of runtime NAS discovery
dynamic_clients=false
dynamic_client_subnet=192.168.0.0/16
dynamic_client_lifetime=3600
dynamic_client_rate_limit=false
 
# Proxy SSID (for example to eltex-eap-tls) #139679
proxy_ssid_enabled=0
proxy_ssid_value="EAP_TLS"
proxy_ssid_host="127.0.0.1"
proxy_ssid_port=18122
proxy_ssid_secret="eltex"
 
# Status-Server settings
status_host="<IP-адрес, на котором ожидаются запросы от eltex-radius-exporter>"
status_port=18123
status_client_host="<IP-адрес, с которого ожидаются запросы от eltex-radius-exporter>"
status_client_secret="eltex"
 
#TIMEZONE
TZ=Asia/Novosibirsk

Выполнить перезапуск сервиса eltex-radius:

sudo systemctl restart eltex-radius

Сконфигурировать файл "docker-compose.yml" для запуска eltex-radius-exporter:

docker-compose.yml
version: '3'
 
services:
  eltex-radius-exporter:
    container_name: eltex-radius-exporter
    image: hub.eltex-co.ru/softwlc/eltex-radius-exporter:<SoftWLC version>-<tag>
    ports:
      - "9812:9812/tcp"
    environment:
      - RADIUS_ADDRESS=<IP-адрес eltex-radius>:18123
      - RADIUS_SECRET=eltex
      - RADIUS_TIMEOUT=1000
      - TZ=Asia/Novosibirsk

Запустить контейнер:

sudo docker-compose up -d

Проверка работы

Что бы просмотреть вывод метрик - надо открыть в браузере адрес "http://<IP-адрес eltex-radius-exporter>:9812/metrics".

Если вывод имеет вид:

Пример вывода метрик:
# HELP freeradius_hup_time Epoch timestamp when the server hang up (If start == hup, it hasn't been hup'd yet)
# TYPE freeradius_hup_time gauge
freeradius_hup_time{address="127.0.0.1:18123"} 1.731634177e+09
# HELP freeradius_queue_len_acct Acct queue length
# TYPE freeradius_queue_len_acct gauge
freeradius_queue_len_acct{address="127.0.0.1:18123"} 0
# HELP freeradius_queue_len_auth Auth queue length
# TYPE freeradius_queue_len_auth gauge
freeradius_queue_len_auth{address="127.0.0.1:18123"} 0
# HELP freeradius_queue_len_detail Detail queue length
# TYPE freeradius_queue_len_detail gauge
freeradius_queue_len_detail{address="127.0.0.1:18123"} 0
# HELP freeradius_queue_len_internal Interal queue length
# TYPE freeradius_queue_len_internal gauge
freeradius_queue_len_internal{address="127.0.0.1:18123"} 0
# HELP freeradius_queue_len_proxy Proxy queue length
# TYPE freeradius_queue_len_proxy gauge
freeradius_queue_len_proxy{address="127.0.0.1:18123"} 0
# HELP freeradius_queue_pps_in Queue PPS in
# TYPE freeradius_queue_pps_in gauge
freeradius_queue_pps_in{address="127.0.0.1:18123"} 0
# HELP freeradius_queue_pps_out Queue PPS out
# TYPE freeradius_queue_pps_out gauge
freeradius_queue_pps_out{address="127.0.0.1:18123"} 0
# HELP freeradius_start_time Epoch timestamp when the server was started
# TYPE freeradius_start_time gauge
freeradius_start_time{address="127.0.0.1:18123"} 1.731634177e+09
# HELP freeradius_stats_error Stats error as label with a const value of 1
# TYPE freeradius_stats_error gauge
freeradius_stats_error{address="127.0.0.1:18123",error=""} 1
# HELP freeradius_total_access_accepts Total access accepts
# TYPE freeradius_total_access_accepts counter
freeradius_total_access_accepts{address="127.0.0.1:18123"} 0
# HELP freeradius_total_access_challenges Total access challenges
# TYPE freeradius_total_access_challenges counter
freeradius_total_access_challenges{address="127.0.0.1:18123"} 0
# HELP freeradius_total_access_rejects Total access rejects
# TYPE freeradius_total_access_rejects counter
freeradius_total_access_rejects{address="127.0.0.1:18123"} 0
# HELP freeradius_total_access_requests Total access requests
# TYPE freeradius_total_access_requests counter
freeradius_total_access_requests{address="127.0.0.1:18123"} 2681
# HELP freeradius_total_acct_dropped_requests Total acct dropped requests
# TYPE freeradius_total_acct_dropped_requests counter
freeradius_total_acct_dropped_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_acct_duplicate_requests Total acct duplicate requests
# TYPE freeradius_total_acct_duplicate_requests counter
freeradius_total_acct_duplicate_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_acct_invalid_requests Total acct invalid requests
# TYPE freeradius_total_acct_invalid_requests counter
freeradius_total_acct_invalid_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_acct_malformed_requests Total acct malformed requests
# TYPE freeradius_total_acct_malformed_requests counter
freeradius_total_acct_malformed_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_acct_requests Total acct requests
# TYPE freeradius_total_acct_requests counter
freeradius_total_acct_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_acct_responses Total acct responses
# TYPE freeradius_total_acct_responses counter
freeradius_total_acct_responses{address="127.0.0.1:18123"} 0
# HELP freeradius_total_acct_unknown_types Total acct unknown types
# TYPE freeradius_total_acct_unknown_types counter
freeradius_total_acct_unknown_types{address="127.0.0.1:18123"} 0
# HELP freeradius_total_auth_dropped_requests Total auth dropped requests
# TYPE freeradius_total_auth_dropped_requests counter
freeradius_total_auth_dropped_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_auth_duplicate_requests Total auth duplicate requests
# TYPE freeradius_total_auth_duplicate_requests counter
freeradius_total_auth_duplicate_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_auth_invalid_requests Total auth invalid requests
# TYPE freeradius_total_auth_invalid_requests counter
freeradius_total_auth_invalid_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_auth_malformed_requests Total auth malformed requests
# TYPE freeradius_total_auth_malformed_requests counter
freeradius_total_auth_malformed_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_auth_responses Total auth responses
# TYPE freeradius_total_auth_responses counter
freeradius_total_auth_responses{address="127.0.0.1:18123"} 0
# HELP freeradius_total_auth_unknown_types Total auth unknown types
# TYPE freeradius_total_auth_unknown_types counter
freeradius_total_auth_unknown_types{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_access_accepts Total proxy access accepts
# TYPE freeradius_total_proxy_access_accepts counter
freeradius_total_proxy_access_accepts{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_access_challenges Total proxy access challenges
# TYPE freeradius_total_proxy_access_challenges counter
freeradius_total_proxy_access_challenges{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_access_rejects Total proxy access rejects
# TYPE freeradius_total_proxy_access_rejects counter
freeradius_total_proxy_access_rejects{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_access_requests Total proxy access requests
# TYPE freeradius_total_proxy_access_requests counter
freeradius_total_proxy_access_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_acct_dropped_requests Total proxy acct dropped requests
# TYPE freeradius_total_proxy_acct_dropped_requests counter
freeradius_total_proxy_acct_dropped_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_acct_duplicate_requests Total proxy acct duplicate requests
# TYPE freeradius_total_proxy_acct_duplicate_requests counter
freeradius_total_proxy_acct_duplicate_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_acct_invalid_requests Total proxy acct invalid requests
# TYPE freeradius_total_proxy_acct_invalid_requests counter
freeradius_total_proxy_acct_invalid_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_acct_malformed_requests Total proxy acct malformed requests
# TYPE freeradius_total_proxy_acct_malformed_requests counter
freeradius_total_proxy_acct_malformed_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_acct_requests Total proxy acct requests
# TYPE freeradius_total_proxy_acct_requests counter
freeradius_total_proxy_acct_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_acct_responses Total proxy acct responses
# TYPE freeradius_total_proxy_acct_responses counter
freeradius_total_proxy_acct_responses{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_acct_unknown_types Total proxy acct unknown types
# TYPE freeradius_total_proxy_acct_unknown_types counter
freeradius_total_proxy_acct_unknown_types{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_auth_dropped_requests Total proxy auth dropped requests
# TYPE freeradius_total_proxy_auth_dropped_requests counter
freeradius_total_proxy_auth_dropped_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_auth_duplicate_requests Total proxy auth duplicate requests
# TYPE freeradius_total_proxy_auth_duplicate_requests counter
freeradius_total_proxy_auth_duplicate_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_auth_invalid_requests Total proxy auth invalid requests
# TYPE freeradius_total_proxy_auth_invalid_requests counter
freeradius_total_proxy_auth_invalid_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_auth_malformed_requests Total proxy auth malformed requests
# TYPE freeradius_total_proxy_auth_malformed_requests counter
freeradius_total_proxy_auth_malformed_requests{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_auth_responses Total proxy auth responses
# TYPE freeradius_total_proxy_auth_responses counter
freeradius_total_proxy_auth_responses{address="127.0.0.1:18123"} 0
# HELP freeradius_total_proxy_auth_unknown_types Total proxy auth unknown types
# TYPE freeradius_total_proxy_auth_unknown_types counter
freeradius_total_proxy_auth_unknown_types{address="127.0.0.1:18123"} 0
# HELP freeradius_up Boolean gauge of 1 if freeradius was reachable, or 0 if not
# TYPE freeradius_up gauge
freeradius_up 1

значит eltex-radius-exporter успешно получает и отдает метрики от eltex-radius.

Если вывод имеет вид:

Пример метрик при отсутствии ответа от eltex-radius:
# HELP freeradius_up Boolean gauge of 1 if freeradius was reachable, or 0 if not
# TYPE freeradius_up gauge
freeradius_up 0

значит eltex-radius не отвечает на запросы.


Установка Prometheus и Grafana

Запуск выполняется в докере. На сервер потребуется установить docker  и docker-compose. Установка описана в документации

В приложенном архиве содержаться файлы конфигурации: softwlc-monitoring.zip

Чтобы скачать напрямую на сервер, воспользуйтесь следующей командой

wget http://archive.eltex-co.ru/wireless/help/softwlc-latest/softwlc-monitoring.zip

На хосте, предназначенном для работы системы мониторинга распаковать архив в папку:

sudo unzip softwlc-monitoring.zip -d /opt/

Сменить владельца папки, если он не "root":

sudo chown -v root:root /opt/softwlc-monitoring/
sudo chown -Rv root:root /opt/softwlc-monitoring/

Сменить разрешения для папок и файлов:

sudo chmod -Rv 664 /opt/softwlc-monitoring/
sudo chmod -v 755 /opt/softwlc-monitoring/
sudo chmod -v 755 /opt/softwlc-monitoring/prometheus/
sudo chmod -v 755 /opt/softwlc-monitoring/grafana/
sudo chmod -v 755 /opt/softwlc-monitoring/grafana/provisioning/
sudo chmod -v 755 /opt/softwlc-monitoring/grafana/provisioning/datasources/
sudo chmod -v 755 /opt/softwlc-monitoring/grafana/provisioning/dashboards/

Отредактировать файл "/opt/softwlc-monitoring/prometheus/prometheus.yml", перечислив в нем адреса и порты всех служб :

prometheus.yml
scrape_configs:
  - job_name: 'EMS'
    metrics_path: '/'
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.0.1:9091']
  - job_name: 'APB'
    metrics_path: '/apb/api/metrics'
    scrape_interval: 5s
    static_configs:
      - targets: ['<IP_SoftWLC>:8090']
  - job_name: 'Mercury'
    metrics_path: '/mercury/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['<IP_SoftWLC>:6564']
  - job_name: 'Portal'
    metrics_path: '/eltex_portal/api/metrics'
    scrape_interval: 5s
    static_configs:
      - targets: ['<IP_SoftWLC>:9000']
  - job_name: 'NBI'
    metrics_path: '/'
    scrape_interval: 5s
    static_configs:
      - targets: ['<IP_SoftWLC>:9010']
  - job_name: 'System'
    scrape_interval: 5s
    static_configs:
      - targets: ['<IP_SoftWLC>:9991']
  - job_name: 'NGW'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['<IP_SoftWLC>:8040']
  - job_name: 'PCRF'
    metrics_path: '/metrics/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: [ '<IP_SoftWLC>:7070' ]
  - job_name: 'Papaya'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: [ '<IP_SoftWLC>:9098' ]
  - job_name: 'RADIUS'
    metrics_path: '/metrics'
    scrape_interval: 5s
    static_configs:
      - targets: [ '<IP_SoftWLC>:9812' ]
  - job_name: 'bruce'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: [ '<IP_SoftWLC>:8008' ]
  - job_name: 'WiFi-Cab'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: [ '<IP_SoftWLC>:8085' ]
  - job_name: 'Portal Constructor'
    metrics_path: '/epadmin/actuator/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: [ '<IP_SoftWLC>:9001' ]
  - job_name: 'jobs'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: [ '<IP_SoftWLC>:9696' ]

Так же в данном файле надо перечислить все сервера с установленным Node-Exporter, с указанием реального адреса каждого сервера:

prometheus.yml (продолжение)
#Node-SoftWLC
  - job_name: 'Node-SoftWLC' 
    scrape_interval: 5s 
    static_configs: 
      - targets: ['<IP-адрес сервера>:9991']

Для всех серверов, которые указаны в файле prometheus.yml, должен быть обеспечен доступ по соответствующим портам по протоколу TCP с сервера, на котором запущена система мониторинга! 

Выполнить запуск:

sudo docker compose up -d

После запуска сервисы будут доступны по адресам:

Prometheus:

http://<IP-адрес сервера>:9990

Grafana:

http://<IP-адрес сервера>:3000

После открытия стартовой страницы Grafana будет предложено ввести логин / пароль (по умолчанию admin / admin):

После успешного входы будет предложено сменить пароль:

Можно задать новый пароль или нажать "Skip", что бы вопрос более не задавался, при этом дефолтный пароль не будет сменен.

Откроется начальное окно Grafana.

Что бы увидеть список доступных панелей мониторинга надо нажать в панели слева кнопку  и в открывшемся меню выбрать "Manage". 

Откроется окно со списком панелей:

После этого можно перейти к просмотру мониторинга нужного сервиса.

Для предотвращения случайных изменений рекомендуется добавить пользователя, который будет иметь только права просмотра.

Для этого надо нажать в панели слева кнопку  и затем нажать кнопку "New user". После ввести данные пользователя: "Name", "Username", "Password" и нажать "Create user". В дальнейшем все действия по мониторингу выполнять под данным пользователем.

Приложения

Сайт Prometheus: https://prometheus.io/

Сайт Grafana: https://grafana.com/

  • Нет меток