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

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

Заказать настройку Zabbix от 500 р.

Введение

Идея настроить мониторинг 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 9, если предпочитаете его:

  1. Установка Debian 9.
  2. Базовая настройка Debian 9.
  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.

Заказать настройку Zabbix от 500 р.

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

Настраиваем сбор логов Windows Server в ELK Stack

Продолжаю цикл статей по настройке централизованной системы сбора логов ELK Stack. Сегодня расскажу, как собирать логи с Windows Server различных версий в elasticsearch. Данные предложенным способом можно будет собирать не только с серверных систем, но и со всех остальных, где используется журнал windows.

Далее

Отключаем ipv6 в приложениях

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

Далее

Оповещение о занятости второй линии в asterisk

В asterisk есть возможность настроить несколько активных линий для одного абонента. Это позволяет во время разговора, ответить на второй звонок, поставив первый на удержание. Все как в современной мобильной связи. Но есть один недостаток — во время звонка по второй линии, звонящий будет слышать длинные гудки, как-будто вы не берете трубку. Он не будет знать, что вы уже разговариваете по второй линии.

Далее

Парсинг и передача json данных в Zabbix

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

Далее

Запрет писем с поддельным полем From или спам от себя к себе в postfix

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

Далее

WebPageTest — локальная установка и настройка приватного сервера тестирования скорости сайта

Есть очень удобный сервис для тестирования скорости работы сайта — webpagetest.org. Мало того, что он самый удобный и информативный из всех, что я знаю, так его еще и локально можно установить себе на сервер. Этим я и займусь — установкой и настройкой локальной версии сервиса webpagetest для тестирования скорости работы сайта.

Далее

Сборка rpm пакета nginx с поддержкой tls 1.3 и сжатием brotli

Последнее время я немного занимаюсь ускорением сайтов и сегодня напишу на эту тему. Я расскажу, как собрать свой rpm пакет nginx с поддержкой tls 1.3 и шифрованием brotli. Зачем все это нужно и какие сулит преимущества, читайте дальше.

Далее

Централизованный сбор логов Mikrotik в ELK Stack

Очередной материал на тему централизованной системы сбора логов. Сегодня расскажу, как настроить сбор логов с устройств компании Mikrotik в ELK Stack. Статья ничем не примечательна, так как делается все стандартно и просто. Никакого парсинга и разбора логов я делать не буду. То есть будем просто хранить логи микротиков в одном месте с удобным поиском.

Далее

Как настроить микротик routerboard RB951G-2HnD

Продолжаю рассказ про замечательную серию устройств из Латвии, которые зарекомендовали себя как функциональные и надежные девайсы. В данной статье я подробно рассмотрю вопрос базовой настройки роутеров mikrotik на примере бюджетной и самой популярной модели RB951G-2HnD. Данная инструкция подойдет практически к любой модели, так как все они сделаны на базе одной и той же операционной системы.

Далее

Сбор и анализ логов samba в ELK Stack

Продолжаю тему настройки и использования централизованной системы сбора логов на основе elasticsearch. Сегодня расскажу, как настроить сбор и анализ логов аудита samba в ELK Stack. Я буду не только собирать логи, но и обрабатывать их и добавлять метаданные для построения графиков и дашбордов.

Далее

Обзор, установка и настройка корпоративного чата MyСhat

Ранее я рассмотрел несколько вариантов современных корпоративных чатов. Сегодня расскажу, как установить, настроить и использовать MyChat — клиент-серверный чат для локальных и корпоративных сетей. Расскажу об его отличиях, преимуществах и недостатках на основе своего тестового внедрения.

Далее

Установка и настройка Gitlab на Centos и Ubuntu

Хочу поделиться информацией на тему работы с системой управления репозиториями git. Я расскажу, как установить и настроить gitlab, а так же на примерах покажу как ей пользоваться. В интернете информации много, но чаще всего она написана не для тех, кто никогда не работал с гитлаб и с гит. Я же постараюсь объяснить максимально просто для тех, кто знакомится с системой гит впервые.

Далее

Ошибка в postfix — certificate verification failed

Столкнулся с небольшой ошибкой в логе postfix, которая не влияет непосредственно на работоспособность почтовой системы, но тем не менее, надо было ее исправить. Она связана с тем, что postfix не знает обо всех актуальных CA сертификатах и не всегда может проверить валидность сертификата при общении с другими серверами.

Далее

Бэкап всех баз mysql в отдельные файлы

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

Далее