Разобрать журналы ошибок IBM MQ v9.1 с помощью Splunk - PullRequest
5 голосов
/ 09 апреля 2020

Я пересылаю свои журналы ошибок IBM MQ v9.1 с помощью Spunk Forwarder в централизованный кластер, чтобы увидеть тенденции распространенных ошибок, возникающих в моих распределенных системах обмена сообщениями.

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

Пожалуйста, дайте мне знать, если кто-то использовал регулярное выражение в Splunk для анализа полей журналов ошибок IBM MQ для v9.1.

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

Я уже упоминал ссылку ниже, но это для v8, и есть другой формат журналов ошибок для v9, https://t-rob.net/2017/12/18/parsing-mq-error-logs-in-splunk/

Кроме того, пользователь не может получить доступ к журналам ошибок. Я обновил раздел ниже в файловой системе qm.ini: ValidateAuth = No

и установите chmod -R 755 в папку / var / mqm / qmgrs / qmName / errors.

Хотя права доступа к журналам ОШИБКИ не меняются при каждом обновлении, но при повороте журналов права отменяются, и пользователь-спланк не может читать журналы.

Пожалуйста, дайте мне знать, как преодолеть это, не добавляя пользователя splunk в группу mqm

1 Ответ

3 голосов
/ 09 апреля 2020

Я бы предложил включить JSON ведение журнала и переслать эти журналы в Splunk, который должен иметь возможность анализировать этот формат.

В выпуске CDS IBM MQ v9.0.4 IBM добавила возможность выхода в * Журнал в формате 1055 *, MQ всегда будет регистрировать исходные файлы AMQERR0x.LOG, даже если вы включите запись JSON. Это включено во все выпуски MQ 9.1 LTS и CSD.

Страница центра знаний IBM MQ v9.1 IBM MQ> Конфигурирование> Изменение информации о конфигурации IBM MQ и администратора очередей> Атрибуты для изменения конфигурации администратора очередей информация> Diagnosti c регистрация сообщений> Diagnosti c разделы службы сообщений> Diagnosti c службы сообщений содержит информацию о topi c. Вы можете добавить следующее к вашему qm.ini, чтобы он выводил информацию журнала в отформатированный файл JSON с именем AMQERR0x.json в стандартном каталоге errors администратора очередей:

DiagnosticMessages:
   Service = File
   Name = JSONLogs
   Format = json
   FilePrefix = AMQERR

Как отмечает OP, отформатированные журналы JSON не содержат часть EXPLANATION или ACTION, которую вы видите в обычных журналах.


В IBM MQ v9.1 вы можно использовать команду mqrc для преобразования формата JSON в знакомый формат, который вы видите в AMQERR01.LOG.

Ниже приведен один простой пример:

cat <<EOL |mqrc -i json -o text -
{"ibm_messageId":"AMQ9209E","ibm_arithInsert1":0,"ibm_arithInsert2":0,"ibm_commentInsert1":"localhost (127.0.0.1)","ibm_commentInsert2":"TCP/IP","ibm_commentInsert3":"SYSTEM.DEF.SVRCONN","ibm_datetime":"2018-02-22T06:54:53.942Z","ibm_serverName":"QM1","type":"mq_log","host":"0df0ce19c711","loglevel":"ERROR","module":"amqccita.c:4214","ibm_sequence":"1519282493_947814358","ibm_remoteHost":"127.0.0.1","ibm_qmgrId":"QM1_2018-02-13_10.49.57","ibm_processId":4927,"ibm_threadId":4,"ibm_version":"9.1.0.5","ibm_processName":"amqrmppa","ibm_userName":"johndoe","ibm_installationName":"Installation1","ibm_installationDir":"/opt/mqm","message":"AMQ9209E: Connection to host 'localhost (127.0.0.1)' for channel 'SYSTEM.DEF.SVRCONN' closed."}
EOL

Вывод будет :

02/22/2018 06:54:53 AM - User(johndoe) Program(amqrmppa)
                    Host(0df0ce19c711) Installation(Installation1)
                    VRMF(9.1.0.5) QMgr(QM1)
                    Time(2018-02-22T11:54:53.942Z)
                    RemoteHost(127.0.0.1)
                    CommentInsert1(localhost (127.0.0.1))
                    CommentInsert2(TCP/IP)
                    CommentInsert3(SYSTEM.DEF.SVRCONN)

AMQ9209E: Connection to host 'localhost (127.0.0.1)' for channel
'SYSTEM.DEF.SVRCONN' closed.

EXPLANATION:
An error occurred receiving data from 'localhost (127.0.0.1)' over TCP/IP.  The
connection to the remote host has unexpectedly terminated.

The channel name is 'SYSTEM.DEF.SVRCONN'; in some cases it cannot be determined
and so is shown as '????'.
ACTION:
Tell the systems administrator.
----- amqccita.c : 4214 -------------------------------------------------------

Вы также можете использовать mqrc только с сообщением об ошибке из JSON, например AMQ9209E, вы можете запустить команду следующим образом:

mqrc AMQ9209E

Вывод будет:

 536908297  0x20009209  rrcE_CONNECTION_CLOSED
 536908297  0x20009209  urcMS_CONN_CLOSED

MESSAGE:
Connection to host '<insert one>' for channel '<insert three>' closed.

EXPLANATION:
An error occurred receiving data from '<insert one>' over <insert two>.  The
connection to the remote host has unexpectedly terminated.

The channel name is '<insert three>'; in some cases it cannot be determined and
so is shown as '????'.

ACTION:
Tell the systems administrator.

Вы могли бы пойти дальше и указать вставки из JSON:

Exmple часть журнала JSON :

"ibm_messageId":"AMQ9209E","ibm_arithInsert1":0,"ibm_arithInsert2":0,"ibm_commentInsert1":"localhost (127.0.0.1)","ibm_commentInsert2":"TCP/IP","ibm_commentInsert3":"SYSTEM.DEF.SVRCONN"

В приведенной ниже команде каждый ibm_arthInsert указан с последующим флагом -n в следующем порядке после каждого ibm_commentInsert с исходящий -c флаг:

mqrc AMQ9209E -n 0 -n 0 -c "localhost (127.0.0.1)" -c "TCP/IP" -c "SYSTEM.DEF.SVRCONN"

Вывод ниже:

 536908297  0x20009209  rrcE_CONNECTION_CLOSED
 536908297  0x20009209  urcMS_CONN_CLOSED

MESSAGE:
Connection to host 'localhost (127.0.0.1)' for channel 'SYSTEM.DEF.SVRCONN'
closed.

EXPLANATION:
An error occurred receiving data from 'localhost (127.0.0.1)' over TCP/IP.  The
connection to the remote host has unexpectedly terminated.

The channel name is 'SYSTEM.DEF.SVRCONN'; in some cases it cannot be determined
and so is shown as '????'.

ACTION:
Tell the systems administrator.
...