Интеграция системного журнала OpenNMS
Я пытаюсь настроить OpenNMS для получения сообщений системного журнала от ASA. Мой файл конфигурации syslogd выглядит так:
<configuration
syslog-port="514"
new-suspect-on-message="false"
parser="org.opennms.netmgt.syslogd.CustonSyslogParser"
forwarding-regexp="((.+?) (.*))\r?\n?$"
matching-group-host="2"
matching-group-message="3"
/>
Сообщения системного журнала приходят в следующем формате:
Sep 13 08:36:37 192.168.75.254 %ASA-4-106023: Deny tcp src outside:144.5.5.255/
56607 dst inside:192.168.75.102/23 by access-group "outside_access_in" [0x0, 0x0]
С помощью этой конфигурации я могу получать сообщения системного журнала в Opennms, но они поступают как неопределенные. Кажется, что это регулярное выражение не может разобрать. Когда я проверяю это регулярное выражение на других веб-сайтах, таких как regex101.com, оно ясно говорит, что нет совпадения. Я создал регулярное выражение, которое соответствует тому, как мне нужно:
\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*([\s\S]*)
НО, когда я добавляю это в конфигурацию, я больше не получаю никаких сообщений системного журнала вообще.
У кого-нибудь есть представление о том, как я это делаю. Я потратил слишком много времени на это, как есть.
2 ответа
Я не уверен, почему исходное регулярное выражение вложило группы, но если вы удалите группу external (), вам нужно уменьшить номера групп для хоста и сообщения (поскольку внешней группой была группа № 1), поэтому
matching-group-host="1"
matching-group-message="2"
Итак, я, кажется, понял это. Я попытаюсь опубликовать здесь полный ответ, надеясь, что он кому-нибудь поможет. Документы не самые ясные по этому вопросу.
Ссылки, которые я использовал для конфигурации: Syslogd и TechTarget.
Сначала вам нужно настроить $OPENNMS_HOME/etc/syslogd-configuration.xml
иметь следующее:
<configuration
syslog-port="10514"
new-suspect-on-message="false"
parser="org.opennms.netmgt.syslogd.CustomSyslogParser"
forwarding-regexp="((.+?) (.*))\r?\n?$"
matching-group-host="2"
matching-group-message="3"
/>
<ueiList>
<ueiMatch>
<match type="regex" expression="YOUR REGEX HERE"/>
<uei>uei.opennms.org/foo1/foo2/foo3</uei>
</ueiMatch>
</ueiList>
ueiList
стихия была моей первой проблемой. Здесь вы фактически отображаете сообщение системного журнала в пользовательский интерфейс. Пользовательский интерфейс может быть настроен для создания любого уникального идентификатора, который вы хотите иметь.
Вторая проблема заключалась в сопоставлении пользовательских UEI с такими свойствами, как уровень оповещения. Это достигается через $OPENNMS_HOME/etc/eventconf.xml
файл. Я вставил следующий код прямо под </global>
тег для настройки свойств для моего нового пользовательского интерфейса.
<event>00-custom.conf
<uei>uei.opennms.org/foo1/foo2/foo3</uei>
<event-label>Event Label Here</event-label>
<descr>
An event description here
</descr>
<logmsg dest='logndisplay'>Here is the Log: %parm[all]%</logmsg>
<severity>Critical</severity>
</event>
С их помощью должны поступать сообщения системного журнала с желаемыми свойствами. ПРИМЕЧАНИЕ: в моем сценарии я использую нестандартные сообщения системного журнала, поэтому я должен использовать parser="org.opennms.netmgt.syslogd.CustomSyslogParser"
установка в моем syslogd-confguration.xml
файл. Если вы используете Syslog-NG или syslog с лучшим форматированием, есть и другие варианты.
Чтобы помочь с устранением неполадок, вы можете перейти к $OPENNMS_HOME/etc
или же $OPENNMS_HOME/bin
и запустите следующее: opennms -v status
это должно показать вам каждый запущенный процесс для NMS и их статус.
ПРИМЕЧАНИЕ: после изменения файла конфигурации вы должны запустить service opennms restart
(системы Debian) для перезагрузки новой конфигурации. Если вы получили ошибку JVM или ошибку "не удалось подключиться к локальному хосту", это, скорее всего, потому что вы сломали один из этих двух конфигов. Даже добавление дополнительного пробела вверху XML-файла создаст эту проблему. Будьте внимательны при редактировании файлов, и я настоятельно рекомендую создавать резервные копии.