Рекомендуемые параметры для мониторинга здоровья AxelNAC
В данной статье описаны параметры, которые рекомендуется отслеживать для поддержки работоспособности модулей и служб, используемых в системе контроля доступа к сети AxelNAC, а также приведено краткое описание процесса настройки Zabbix-агента.
Для мониторинга параметров кластерной инсталляции настройки, описанные в данной статье, необходимо выполнить на каждом из узлов кластера.
Предварительная конфигурация Zabbix-агента
Перед выполнением конфигурации во избежание сброса уже существующих настроек убедитесь, что в конфигурационном файле /etc/redis/redis.conf закомментирована строка rename-command CONFIG "".
Для того чтобы отслеживать метрики параметров системы, необходимо в первую очередь сконфигурировать Zabbix-агент на стороне инсталляции AxelNAC. Для этого выполните следующие действия:
Шаг 1. Скачайте утилиту zabbix agent 2 и переместите ее в каталог /home/anac.
Шаг 2. Выполните установку агента с помощью следующей команды:
apt install ./zabbix-agent2_1_7.0.5+dfsg-1~bpo12+1.2+b2_amd64.deb
Шаг 3. Сконфигурируйте агент, заполнив конфигурационный файл /etc/zabbix/zabbix_agent2.conf следующим образом:
#Укажите IP-адрес сервера для мониторинга:
Server=10.31.205.204
#Укажите порт для запросов статуса по HTTP (для Zabbix используется значение по умолчанию - 10049):
StatusPort=10049
#Укажите IP-адрес сервера активных проверок:
ServerActive=10.31.205.204
#Укажите имя хоста агента так, как он будет называться на сервере (данный параметр понадобится для активных проверок):
Hostname=nacrvv206
#Остальные параметры менять не рекомендуется. Порт для соединения с сервером используется по умолчанию - 10050.
Шаг 4. Добавьте пользователя zabbix в группу docker, выполнив следующую команду в bash:
usermod -aG docker zabbix
Шаг 5. Активируйте постоянные разрешения для iptables, внеся в конфигурационный файл /usr/local/pf/conf/iptables-input-management.conf.inc следующие строки:
-A input-management-if --protocol tcp --match tcp --dport 10050 -s <IP-АДРЕС_СЕРВЕРА_ZABBIX> --jump ACCEPT
-A input-management-if --protocol tcp --match tcp --dport 10049 -s <IP-АДРЕС_СЕРВЕРА_ZABBIX> --jump ACCEPT
-A input-management-if --protocol tcp --match tcp --dport 1027 -s <IP-АДРЕС_СЕРВЕРА_ZABBIX> --jump ACCEPT
Шаг 6. Для немедленного применения разрешений выполните команду:
iptables -A input-management-if --protocol tcp --match tcp --dport 10050 -s <IP-АДРЕС_СЕРВЕРА_ZABBIX> --jump ACCEPT
iptables -A input-management-if --protocol tcp --match tcp --dport 10049 -s <IP-АДРЕС_СЕРВЕРА_ZABBIX> --jump ACCEPT
iptables -A input-management-if --protocol tcp --match tcp --dport 1027 -s <IP-АДРЕС_СЕРВЕРА_ZABBIX> --jump ACCEPT
Шаг 7. Настройте пользователя в базе данных:
mysql
CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<УКАЖИТЕ ПАРОЛЬ>';
GRANT PROCESS, SHOW DATABASES, BINLOG MONITOR, SHOW VIEW, REPLICATION CLIENT ON *.* TO `zbx_monitor`@`%`;
flush privileges;
Данный шаг необходимо выполнять только на первом настраиваемом узле кластера. После применения настроек пользователь будет создан для всех узлов и попытка создать уже существующего пользователя приведет к ошибке.
Шаг 8. Для применения настроек перезапустите Zabbix-агент, выполнив следующую команду:
systemctl restart zabbix-agent2.service
Настройка параметров для мониторинга на сервере
Для того чтобы настроить параметры для мониторинга, перейдите в панель мониторинга по ссылке http://<IP-адрес_Zabbix:8080> и выполните следующие действия:
Шаг 1. Авторизуйтесь в панели мониторинга.
Шаг 2. Перейдите в раздел Monitoring → Hosts и нажмите Create host в правом верхнем углу страницы.
Шаг 3. На вкладке Host в строке Host name укажите имя хоста так, как было указано в настройках агента (в нашем примере — nacrvv206).
Шаг 4. В строке Templates добавьте стандартные шаблоны:
- Docker by Zabbix agent 2;
- HAProxy by HTTP;
- Linux by Zabbix agent;
- MySQL by Zabbix agent 2;
- Redis by Zabbix agent 2;
- Systemd by Zabbix agent 2.
Шаг 5. В строке Host groups укажите следующие группы:
- Applications;
- Databases;
- Linux servers.
Шаг 6. В строке Interfaces нажмите Add и выберите значение Agent. Укажите IP-адрес и/или DNS-имя хоста, порт — 10050 и выберите по какому параметру выполнять подключение — IP или DNS.
Шаг 7. Активируйте чекбокс в строке Enabled.
Шаг 8. Перейдите на вкладку Macros, где задаются значения переменных, которые требуются в шаблонах. Установите следующие значения:
| Macro | Value | Description |
|---|---|---|
| {$HAPROXY.STATS.HOST} | 10.31.205.206 | HAPROXY. IP хоста |
| {$HAPROXY.STATS.PORT} | 1027 | HAPROXY. Порт |
| {$HAPROXY.USERNAME} | admin | HAPROXY. Имя пользователя (берется из /usr/local/pf/conf/haproxy-db.conf) |
| {$HAPROXY.PASSWORD} | packetfence | HAPROXY. Пароль (берется из /usr/local/pf/conf/haproxy-db.conf) |
| {$MYSQL.HOST} | 10.31.205.206 | MYSQL. IP хоста |
| {$MYSQL.PORT} | 3306 | MYSQL. Порт |
| {$MYSQL.DSN} | tcp://10.31.205.206:3306 | MYSQL. Data Source Name — строка, содержащая параметры подключения к источнику данных |
| {$MYSQL.USER} | zbx_monitor | MYSQL. Имя пользователя (который создавали выше при создании пользователя в mysql) |
| {$MYSQL.PASSWORD} | zabbix | MYSQL. Пароль (который создавали выше при создании пользователя в mysql) |
Шаг 9. На сервере, при необходимости, можно настроить правило для автоматического заведения устройств с агентами в нужном сетевом сегменте.
Конфигурация пользовательских параметров мониторинга
В данном разделе описана настройка пользовательских параметров мониторинга с помощью Zabbix-агента.
Мониторинг отдельной службы
Для мониторинга отдельной системной службы необходимо выполнить следующие действия:
Шаг 1. Перейдите в раздел Data collection → Hosts и нажмите Items справа от имени сервера для мониторинга, затем нажмите Create item в правом верхнем углу страницы.
Шаг 2. Задайте имя службы в строке Name. В качестве примера рассмотрим службу syslog-ng.
Шаг 3. В строке Key укажите, по какому параметру выполнять мониторинг. В примере мы рассматриваем активность службы syslog-ng, поэтому необходимо выбрать ключ proc.num[syslog-ng].
Шаг 4. В строке Update interval установите период обновления данных. Рекомендуемое значение — 10s.
В данном случае будет отображаться одно из двух значений: 0 — служба не запущена, 1 — служба активна.
Рекомендуется отслеживать активность всех системных служб AxelNAC:
- packetfence-base.slice;
- packetfence-cluster.target;
- packetfence-httpd.webservices.service;
- packetfence-pffilter.service;
- packetfence-haproxy-portal.service;
- packetfence-ip6tables.service;
- packetfence-netdata.service;
- packetfence-httpd.portal.service;
- packetfence-tracking-config.path;
- packetfence-pfacct.service;
- packetfence-haproxy-db.service;
- packetfence-pfqueue.service;
- packetfence-pfconnector-client.service;
- packetfence-pfdns.service;
- packetfence-haproxy-admin.service;
- packetfence-redis-cache.service;
- packetfence-pfipset.service;
- packetfence-pfcron.service;
- packetfence-pfdhcp.service;
- packetfence-base.target;
- packetfence.slice;
- packetfence-mariadb.service;
- packetfence-radiusd-load_balancer.service;
- packetfence-radsniff.service;
- packetfence-pfstats.service;
- packetfence-mysql-probe.service;
- packetfence-pfpki.service;
- packetfence-keepalived.service;
- packetfence-redis_queue.service;
- packetfence-api-frontend.service;
- packetfence-galera-autofix.service;
- packetfence-pfconnector-server.service;
- packetfence-httpd.dispatcher.service;
- packetfence-httpd.admin_dispatcher.service;
- packetfence-winbindd.service;
- packetfence-pfperl-api.service;
- packetfence-httpd.aaa.service;
- packetfence-pfdhcplistener.service;
- packetfence-tracking-config.service;
- packetfence-config.service;
- packetfence-radiusd-auth.service;
- packetfence.target;
- packetfence-proxysql.service;
- packetfence-pfsso.service;
- packetfence-pfdetect.service;
- packetfence-radiusd-cli.service;
- packetfence-radiusd-eduroam.service;
- packetfence-redis_ntlm_cache.service;
- packetfence-snmptrapd.service;
- packetfence-tc.service.
Мониторинг вывода утилиты radmin
Утилита radmin показывает статистику службы freeradius с момента ее запуска.
Пример:
radmin> stats client auth
requests 101
responses 101
accepts 101
rejects 0
challenges 0
dup 0
invalid 0
malformed 0
bad_authenticator 0
dropped 0
unknown_types 0
conflicts 0
unresponsive_child 0
last_packet 1763643687
elapsed.1us 0
elapsed.10us 0
elapsed.100us 0
elapsed.1ms 0
elapsed.10ms 82
elapsed.100ms 19
elapsed.1s 0
elapsed.10s 0
Для мониторинга статистики с помощью Zabbix выполните следующие действия:
Шаг 1. В AxelNAC перейдите в директорию /usr/local/bin/ и создайте скрипт zabbix_radmin_stats.sh со следующим содержимым:
#!/bin/bash
output=$(radmin -f /usr/local/pf/var/run/radiusd.sock -e 'stats client auth' 2>/dev/null)
elapsed1ms=$(echo "$output" | grep "elapsed.1ms" | awk '{print $2}')
elapsed10ms=$(echo "$output" | grep "elapsed.10ms" | awk '{print $2}')
elapsed100ms=$(echo "$output" | grep "elapsed.100ms" | awk '{print $2}')
elapsed1s=$(echo "$output" | grep "elapsed.1s" | awk '{print $2}')
elapsed10s=$(echo "$output" | grep "elapsed.10s" | awk '{print $2}')
echo "radmin.elapsed1ms $elapsed1ms"
echo "radmin.elapsed10ms $elapsed10ms"
echo "radmin.elapsed100ms $elapsed100ms"
echo "radmin.elapsed1s $elapsed1s"
echo "radmin.elapsed10s $elapsed10s"
Шаг 2. В конфигурационный файл /etc/zabbix/zabbix_agent2.conf добавьте следующую строку:
UserParameter=radmin.stats[*],/usr/local/bin/zabbix_radmin_stats.sh | grep "$1" | cut -d' ' -f2
Шаг 3. Для применения изменений конфигурационного файла перезапустите агент:
systemctl restart zabbix-agent2
Шаг 4. В панели мониторинга настройте Item для каждого значения elapsedXXms с помощью ключа radmin.stats[значение].
Подробный процесс конфигурации Item описан в разделе выше.