Splunk - получение предварительно определенных выходов на основе количества событий и данных о событиях - PullRequest
0 голосов
/ 09 января 2019

У меня есть запрос, как показано ниже. Результат всегда предопределен как -

  1. Если в результате запроса есть 3 события и если в 3-м событии в качестве значения указано событие «доставлено», то вся транзакция должна быть возвращена как «ЗАВЕРШЕНО».
  2. Если присутствует 3-е событие и событие! = "Доставлено", то статус становится "В ОЖИДАНИИ"
  3. Если 3-е событие вообще отсутствует, то транзакция помечается как ОШИБКА

Мой запрос -

index=myindex OR index=myindex2 uuid=98as786-ffe6-4de1-929y-080e99bc2e6r (status="202") OR (TransactionStatus="PUBLISHED") | append [search index=myindex2 (logMessage="Producer created new event") event="delivered" OR event="processed" serviceName="abc" [search index=myindex uuid=98as786-ffe6-4de1-929y-080e99bc2e6r AND status="SUCCESS" AND serviceName="abc" | top limit=1 headerId | fields + headerId | rename headerId as message_id]]

Результат события -

Событие 1 - 202 Принято

Событие 2 - Адаптер Успех

Событие 3 - доставлено или с ошибкой или обработано

Моя приборная панель высокого уровня должна выглядеть следующим образом -

Завершено - 6378638

В ожидании - 2173

Ошибка - 6356

Уникальный идентификатор будет UUID, на котором будет выполняться счет. Каким образом мы можем сделать это - eval? Уважать ? не уверен, так как я новичок, чтобы побаловать. Пожалуйста, дайте мне знать, если потребуется дополнительная информация, если я что-то упустил.

1 Ответ

0 голосов
/ 09 января 2019

Посмотрите, поможет ли это. Терминология в вашем вопросе немного противоречива, поэтому вам может потребоваться изменить имена полей в этом запросе.

index=myindex OR index=myindex2 uuid=98as786-ffe6-4de1-929y-080e99bc2e6r ((status="202") OR (TransactionStatus="PUBLISHED")) OR (index=myindex2 (logMessage="Producer created new event") event="delivered" OR event="processed" serviceName="abc") (index=myindex uuid=98as786-ffe6-4de1-929y-080e99bc2e6r AND status="SUCCESS" AND serviceName="abc" )
| stats count, latest(event) as event by headerId
| eval result=case(count=3 AND event="delivered", "COMPLETE", count=3 AND event!="delivered", "PENDING", count!=3, "ERROR", 1=1, "UNKNOWN")
| stats count by result
| table result count
...