Home » Zabbix » Мониторинг openvpn подключений пользователей в zabbix

Мониторинг openvpn подключений пользователей в zabbix

Продолжаю тему мониторинга различных систем и метрик серверов с помощью известной и бесплатной системы мониторинга заббикс. Сегодня я расскажу, как настроить мониторинг openvpn подключений в zabbix с помощью автообнаружения конфигов пользователей. Способ придуман не мной, приведу ссылку на github страницу проекта.

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке. Есть бесплатные курсы.

Введение

Идея настроить мониторинг openvpn подключений с помощью zabbix витала у меня давно, но никак не доходили руки. Когда выбрал время и сел настраивать, сходу не придумал, а как же лучше это сделать. Так как в задаче много нюансов, то и подходов тоже может быть несколько.

Изначально я думал как-нибудь распарсить лог openvpn и вытаскивать подключенных пользователей оттуда. После того, как внимательно посмотрел на основной лог, понял, что это не самая простая задача, пришлось бы повозиться, чтобы все отладить.

Перед настройкой решил погуглить и посмотреть, что уже есть из готового. И сразу же нашел вот этот проект — https://github.com/Grifagor/zabbix-openvpn. Идею быстро понял, оценил все плюсы и минусы и решил не заморачиваться сам, а взять готовое, благо тут все в комплекте:

  • Скрипты
  • Конфиги
  • Шаблон с автообнаружением, графиками и триггерами.

Шаблон имеет следующие элементы в своем составе:

  1. Итемы для мониторинга за полученным и переданным трафиком пользователя.
  2. Итемы для мониторинга за статусом подключения, отключения пользователя.
  3. Триггер со срабатыванием на подключение и отключение пользователя.
  4. График полученных, отправленных данных в байтах.
  5. График со статусом подключения пользователя.
  6. Количество подключенных пользователей к openvpn серверу.

Все эти итемы, графики и триггеры создаются автоматически для каждого пользователя.

Минус один и весьма существенный — добавление итемов в виде отдельных пользователей работает через автообнаружение конфигураций пользователей в директории с ccd. Для того, чтобы приведенный способ мониторинга openvpn подключений работал, у вас должны существовать индивидуальные конфигурации пользователей, заданные в конфиге openvpn параметром client-config-dir.

Сами конфигурации пользователей могут быть пустыми. Их содержимое не используется. Они нужны только для того, чтобы получить имя пользователя и затем по этому имени анализировать лог файл состояния openvpn, настроенный с помощью параметра status в конфигурации openvpn сервера.

В принципе, скрипт обнаружения пользователей можно переделать и искать логины по сертификатам, если они у вас хранятся на сервере. Но с этим тоже есть нюансы. Какие-то сертификаты могут быть отозваны, либо вообще не храниться на сервере. Им там, по большому счету, делать нечего.

С учетом указанных особенностей мониторинга openvpn, переходим к настройке. Возможно, у меня что-то не будет совпадать точь в точь с тем, что есть в репозитории github, так как редактировал под свои реалии, причем достаточно давно. Нюансов уже не помню, буду приводить свои конфиги как есть.

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

  1. Установка CentOS 7.
  2. Настройка CentOS 7.
  3. Установка и настройка zabbix сервера.

То же самое на Debian 10, если предпочитаете его:

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

Настройка zabbix-agent на openvpn сервере

Для настройки мониторинга за openvpn подключениями, создадим скрипт автообнаружения пользователей. У меня директория для ccd файлов следующая — /etc/openvpn/ccd-users-udp. В связи с этим делаем скрипт /etc/zabbix/scripts/discover_vpn.sh

#!/bin/bash

path=/etc/openvpn/ccd-users-udp

users=`ls -F $path | sed 's/\///g'` # array of users name

echo "{"
echo "\"data\":["

comma=""
for user in $users
do
    echo "    $comma{\"{#VPNUSER}\":\"$user\"}"
    comma=","
done

echo "]"
echo "}"

Сохраняем его, назначаем владельца zabbix и делаем исполняемым.

# chown zabbix. discover_vpn.sh && chmod +x discover_vpn.sh

Запустите файл и проверьте, что он выводит список пользователей из директории ccd в json формате.

Автообнаружение пользователей для мониторинга

Далее создаем конфиг с Userparameters — /etc/zabbix/zabbix_agentd.d/openvpn.conf следующего содержания:

UserParameter=discovery.openvpn,/etc/zabbix/scripts/discover_vpn.sh
UserParameter=user_status.openvpn[*], cat /var/log/openvpn/status-users-udp.log | grep $1, >/dev/null && echo 1 || echo 0
UserParameter=num_user.openvpn, cat /var/log/openvpn/status-users-udp.log | sed -n '/Connected Since/,/ROUTING/p' | sed -e '1d' -e '$d' | wc -l
UserParameter=user_byte_received.openvpn[*], if [ "`grep -c $1, /var/log/openvpn/status-users-udp.log`" != "0" ]; then cat /var/log/openvpn/status-users-udp.log | grep $1, | tr "," "\n" | sed -n '3p' ; else echo "0" ; fi
UserParameter=user_byte_sent.openvpn[*], if [ "`grep -c $1, /var/log/openvpn/status-users-udp.log`" != "0" ]; then cat /var/log/openvpn/status-users-udp.log | grep $1, | tr "," "\n" | sed -n '4p' ; else echo "0" ; fi

Не забудьте в конфиге поменять пути к status логу. У меня он живет по адресу /var/log/openvpn/status-users-udp.log.

Перезапускаем zabbix-agent.

# systemctl restart zabbix-agent

Проверяем работу итемов.

# zabbix_agentd -t discovery.openvpn

Вы должны увидеть вывод в формате json, как и при запуске скрипта в консоли. Если это не так, то разбирайтесь, в чем проблема. Возможно права на скрипт не дали или ошиблись в конфигурации агента.

Далее можно взять какого-нибудь пользователя, который в данный момент подключен к openvpn серверу и посмотреть по нему информацию.

# zabbix_agentd -t user_status.openvpn[ovpn_user1]
user_status.openvpn[ovpn_user1]             [t|1]

Агент возвращает 1, что значит, что пользователь подключен. Таким же образом можете проверить все остальные UserParameter. После того, как убедитесь, что все работает, можете переходить к настройке zabbix сервера для мониторинга за openvpn подключениями.

Мониторинг openvpn подключений в zabbix

На сервере zabbix никакой особой настройки для мониторинга openvpn подключений делать не надо. Достаточно просто импортировать готовый шаблон. Вы можете его взять на гитхабе, либо скачать у меня. Насколько я помню, не менял в нем ничего. Но это не 100%. В любом случае, если изменения и есть, то косметические. Например, интервалы обновления, либо перевод названий.

Скачать шаблон для openvpn подключений

После добавления шаблона, прикрепите его к хосту с openvpn сервером, где ранее настроили zabbix-agent. После этого данные начнут поступать на сервер мониторинга. Проверить это, как обычно, можно в Latest data.

Мониторинг openvpn подключений пользователей в zabbix

После подключения какого-нибудь пользователя, вы получите уведомление и увидите информацию об этом на дашборде.

Оповещение о подключении пользователя

Если вам это не нужно, то отключите в шаблоне триггер. Если сам триггер все же нужен, но не нужны уведомления о подключениях пользователей, отключите уведомления по триггеру в общем правиле по отправке оповещений, если оно используется.

Отключение уведомления о подключении openvpn пользователя

В общем, кастомизируйте данный шаблон на свой вкус. На этом по самой настройке мониторинга за openvpn пользователями на сервере zabbix все.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Описанный способ мониторинга за подключениями openvpn пользователей не идеальный. Надежнее не привязываться к готовому списку пользователей, а напрямую анализировать лог файл openvpn. Иначе, если по какой-то причине пользователя не будет в списке, который формируется правилом автообнаружения, вы ничего не узнаете о подключениях. Особенно это актуально, когда мониторинг используется не просто для сбора информации, а для целей обеспечения безопасности, где важно фиксировать абсолютно все подключения.

В данной статье рассмотрен только мониторинг за подключениями пользователей. Если вам нужно мониторить работу самой службы openvpn, то можете это сделать по другой моей статье — мониторинг работы служб linux.

Онлайн курсы по Mikrotik

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте . Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курсов:
  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

Помогла статья? Есть возможность отблагодарить автора

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

11 комментариев

  1. Аватар

    Возникла сложность:
    [root@openvpn ~]# sudo -u zabbix /etc/zabbix/scripts/discover_vpn.sh
    ls: cannot access /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued: Permission denied
    {
    «data»:[
    ]
    }

    Скрипт не выполняется от имени заббикса, права не особо помогли. в чем может быть сложность
    sudoers так же правился но ошибка та же

    openvpn num_user — работает

    Как лучше обойти предоставление прав так глубоко?

  2. Аватар

    Хотелось бы узнать про уровень логирования в настройках server.conf,userparameter только первый отрабатывает,в остальных пишет что zabbix unsuported

  3. Аватар

    Хмм… Можно сделать по другому: в файле конфигурации openvpn использовать опцию «client-connect» — данная опция вызывает внешний скрипт при подключении к серверу кого-либо. А в этом скрипте уже прописываем всё, что душе угодно, к примеру оповещение на почту или запись в бд. С помощью следующих переменных получаем доп. информацию: ${common_name}, ${HOSTNAME}, ${untrusted_ip}, ${ifconfig_pool_remote_ip}

  4. Аватар
    Александр

    а можете сбросить xml под Zabbix 4.0. при импорте шаблона нет триггеров, всего один элемент данных

    • Zerox

      Там правило автообнаружения есть. Оно создает итемы и триггеры на хостах.

      • Аватар

        На стороне zabbix сервера а именно в «Элементах данных» пиишет что Value «cat: /var/log/openvpn/openvpn-status.log: Permission denied
        0» of type «string» is not suitable for value type «Numeric (unsigned)»

      • Аватар

        Спасибо помогло частично openvpn num_user отображает нормально,остальные параметры 0

Добавить комментарий

Ваш e-mail не будет опубликован.

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