Назад | Перейти на главную страницу

Интеграция системного журнала 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]*)

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

Кто-нибудь знает, как я это делаю. Я потратил на это слишком много времени как есть.

Итак, я, кажется, понял это. Я попытаюсь опубликовать здесь полный ответ, надеясь, что это кому-то поможет. Документы не самые ясные по этому поводу.

Ссылки, которые я использовал для конфигурации: 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"