Skip to content
forked from xcme/maXys

MAC-notify and Syslog collector for D-Link's network switches

License

Notifications You must be signed in to change notification settings

TTpartizan/maXys

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

maXys - сборщик MAC-notify и Syslog-сообщений с коммутаторов D-Link. Получаемые сообщения размещаются в базах данных MySQL/Oracle и log-файлах на диске. Поддерживается отправка уведомлений об определенных событиях в jabber-конференцию.

Предназначение сервиса

Сетевые коммутаторы D-Link могут быть настроены на отправку сообщений об определенных событиях на внешние серверы в сети. События, которые возникают на коммутаторе и попадают в его файл журнала, могут быть отправлены на Syslog-сервер по одноименному протоколу. При появлении MAC-адреса на порту, а также при удалении MAC-адреса или при его перемещении между портами коммутатора, информация об этом может быть отправлена на сервер при помощи SNMP Trap.

Сервис maXys принимает такие сообщения и сохраняет их в базе данных или в log-файлах. Также сервис может выбирать из общей массы уведомлений конкретные события. Например, можно настроить maXys на отправку в jabber-конференцию уведомлений о неудачных попытках входа на коммутаторы.

Возможности maXys

  • Прием Syslog-сообщений от коммутаторов
  • Прием и разбор MAC-notify сообщений от коммутаторов
  • Сохранение данных в базах MySQL/Oracle и в log-файле
  • Уведомление в конференцию jabber о заранее определенных событиях
  • Использование ID коммутатора из базы данных, что позволяет сохранять историю коммутатора даже при смене его IP-адреса

Особенности работы

  • Работа системным сервисом (daemon) под FreeBSD
  • Разбор MAC-notify сообщений только с одним MAC-адресом (по умолчанию коммутатор присылает сообщения как раз с одним MAC-адресом в каждом SNMP Trap)
  • Возможность параллельной работы с штатным сервисом Syslog (для maXys потребуется задать другой UDP-порт)

Требования

  • FreeBSD (для работы системным демоном)
  • Python2 + MySQLdb + xmpp
  • Доступ к MySQL-серверу (базе биллинга) для получения списка устройств

Принцип работы

maXys запускается системным сервисом и периодически забирает из биллинга информацию о коммутаторах. Запрос должен вернуть таблицу вида:

ip id
10.90.90.95 1
10.90.90.98 2

После этого maXys начинает прослушивать порт для приема Syslog-сообщений (по умолчанию 7514) и порт для приема SNMP Trap (по умолчанию 162). При получении сообщений от коммутаторов сервис, в зависимости от настроек, сохраняет их в log-файл или отправляет в базу данных MySQL или Oracle. По IP-адресу коммутатора определяется его идентификатор в биллинге, в результате чего история коммутатора сохраняется даже в случае изменения его IP-адреса.

Через 2 минуты (по умолчанию) сервис перезапросит из биллинга информацию о коммутаторах и их ID актуализирует эти данные в своей памяти.

Конфигурирование

Описание параметров в файле mconfig.py

Общие настройки программы

Параметр Описание
interface Интерфейс, на котором будет работать демон
sysport UDP-порт для syslog-сообщений
macport UDP-порт для snmptrap-сообщений
logsys Лог-файл для syslog
logmac Лог-файл для mactrap
logmaXys Лог-файл демона
interval Интервал, через который данные об оборудовании будут обновляться

Настройки для MySQL-сервера, откуда будет забираться список устройств

Параметр Описание
mysql_addr Адрес MySQL-сервера биллинга
mysql_user Имя пользователя
mysql_pass Пароль
mysql_base Имя базы данных
mysql_query MySQL-запрос для получения IP-адресов и ID коммутаторов

Настройки для MySQL-сервера, куда будет сохраняться результат

Параметр Описание
mysql_addr_w Адрес MySQL-сервера для сохранения результатов
mysql_user_w Имя пользователя
mysql_pass_w Пароль
mysql_base_w Имя базы данных
mysql_stbl_w Имя таблицы syslog
mysql_mtbl_w Имя таблицы mactrap

Настройки для Oracle APEX*, куда будет отправляться результат через вызов URL

Параметр Описание
apex_m_url URL для Oracle APEX для отправки MAC-notify сообщений, например "https://oracledb.localhost:8082/apex/f?p=ins:1:::::QUERY:"
apex_m_query Начало запроса для APEX для MAC-notify сообщений, например "INSERT INTO c##table.mactrap (DATETIME,SWITCH_ID,IP,PORT,MAC,ACTION) "
apex_s_url URL для Oracle APEX для отправки Syslog сообщений, например "https://oracledb.localhost:8082/apex/f?p=ins:1:::::QUERY:"
apex_s_query Начало запроса для APEX для Syslog сообщений, например "INSERT INTO c##table.syslog (DATETIME,SWITCH_ID,IP,TYPE_,DATA) "
*Настройка Oracle APEX для работы с maXys не является частью данного руководства. Под FreeBSD нет нативных инструментов для работы с Oracle, поэтому maXys использует Oracle APEX как своеобразный "шлюз" к базе Oracle.

Настройки логирования

Параметр Описание
write_to_log Записывать ли данные в log?
write_to_mysql Записывать ли данные в MySQL?
write_to_oracle Записывать ли данные в Oracle?
max_chain Сколько данных отправлять в базу за один раз. Данные отправляются 'пачкой' при достижении этого значения
chain_timeout Через этот интервал данные все равно будут отправлены, даже если не достигнуто максимальное кол-во записей

Настройки Jabber

Параметр Описание
useJabber Параметр, определяющий будут ли события отправляться в Jabber
jid Jabber ID
jps Пароль к учетной записи Jabber
jcr Имя конференции Jabber
jnn Псевдоним для конференции Jabber

Список слов для генерации уведомлений в Jabber.

Параметр Описание
systojab_inc Если слова из этого списка найдены в строке syslog, то эта строка будет передана в jabber. Список задается в синтактисе python, например "['execute', 'failed']".
systojab_exc Если слова из этого списка найдены в той же строке, то эта строка не будет передана в jabber. Список задается в синтактисе python, например "['noc:']".

Установка под FreeBSD

  • Скопируйте файл maXys в /usr/local/etc/rc.d/, а остальные файлы в /usr/local/etc/maXys/.
  • Добавьте строку maXys_enable="YES" в файл /etc/rc.conf.
  • Запустите сервис командой service maXys start.

Настройка доступа к MySQL

Чтобы maXys мог отправлять данные в MySQL, на сервере MySQL нужно создать пользователя и базу данных с соответствующими таблицами. Для создания пользователя можно воспользоваться командами из файла create_user.sql, а для создания базы данных - командами файла maxys.sql. Тип таблиц и кодировку можно поставить на свой вкус, в этих файлах просто рабочий пример.

Настройка коммутатора

Чтобы коммутатор начал отправлять сообщения сервису maXys нужно воспользоваться командами:

create syslog host 1 ipaddress <maXys_IP-address> udp_port 7514 state enable severity debug
enable syslog

Для отправки MAC-notify уведомлений нужно ввести команды:

config mac_notification ports 1-28 disable
config mac_notification ports 1-24  enable
create snmp host <maXys_IP-address> v2c <community-string>
enable mac_notification

About

MAC-notify and Syslog collector for D-Link's network switches

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.4%
  • Shell 3.6%