Я пытаюсь настроить 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]*)
НО, когда я добавляю это в конфигурацию, я больше не получаю никаких сообщений системного журнала.
Кто-нибудь знает, как я это делаю. Я потратил на это слишком много времени как есть.
Итак, я, кажется, понял это. Я попытаюсь опубликовать здесь полный ответ, надеясь, что это кому-то поможет. Документы не самые ясные по этому поводу.
Ссылки, которые я использовал для конфигурации: 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. Uei можно настроить для создания любого уникального идентификатора, который вы хотите иметь.
Моя вторая проблема заключалась в сопоставлении настраиваемого uei с такими свойствами, как уровень предупреждения. Это достигается за счет $OPENNMS_HOME/etc/eventconf.xml
файл. Я вставил следующий код прямо под </global>
для настройки свойств моего нового пользовательского файла uei.
<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 или системный журнал лучшего формата, есть другие варианты.
Чтобы помочь с устранением неполадок, вы можете перейти на $OPENNMS_HOME/etc
или $OPENNMS_HOME/bin
и запустите следующее: opennms -v status
это должно показать вам каждый запущенный процесс для NMS и их статус.
ПРИМЕЧАНИЕ. После изменения файла конфигурации вы должны запустить service opennms restart
(системы Debian), чтобы перезагрузить новую конфигурацию. Если вы получаете ошибку JVM или ошибку «не удалось подключиться к локальному хосту», скорее всего, вы нарушили одну из этих двух конфигураций. Даже добавление дополнительного места в верхней части файла xml создаст эту проблему. Будьте осторожны при редактировании файлов, и я настоятельно рекомендую создавать резервные копии.
Я не уверен, почему исходное регулярное выражение вложило группы, но если вы удалите группу outer (), вам нужно будет уменьшить номера групп для хоста и сообщения (поскольку внешняя группа была группой # 1), поэтому
matching-group-host="1"
matching-group-message="2"