Logstash: добавить новое поле "response_delay" к логу со значением, где значение - это разница времени ответа и запроса из сообщения лога

Логи собираются при помощи filebeat multiline, далее отправляются в logstash. Как мне "распарсить" сообщение лога, чтобы получить дату запроса (2021-08-03 10:54:36.4512|INFO|logfile|Запрос:slight_smile: и ответа (2021-08-03 10:54:36.8678|INFO|logfile|Ответ:slight_smile: из лога, получить разницу этих дат и добавить новое поле с именем "response_delay" в исходный лог со значением, где значение - это полученная разница даты запроса и ответа.

Содержимое лога:

2021-08-03 10:54:36.4512|INFO|logfile|IP-адрес клиента: 10.11.20.15
2021-08-03 10:54:36.4512|INFO|logfile|Запрос:
<Request> <auth> <login>test</login> <password>test</password> </auth> <data> <GtETicket_Request Type="Payment"> <Order ID="111222333" SetReg="1" PayAgent="777" /> </GtETicket_Request> </data> <test_mode>true</test_mode>
</Request>
2021-08-03 10:54:36.4512|INFO|logfile|->Препроцессинг
2021-08-03 10:54:36.4512|INFO|logfile|Предобработчик: SSPD_Express.DataProcessors.PreProcessors.PaymentPreProcessor
2021-08-03 10:54:36.5357|INFO|logfile|-<Препроцессинг
2021-08-03 10:54:36.5357|INFO|logfile|->Поиск в кэше
2021-08-03 10:54:36.5357|INFO|logfile|-<Вариантов в кэше не обнаружено
Отправляем запрос
2021-08-03 10:54:36.5357|INFO|logfile|ArealRouterMode: Default
2021-08-03 10:54:36.5357|INFO|logfile|QueryString: <GtETicket_Request Type="Payment">
  <Order ID="111222333" SetReg="1" PayAgent="777" />
</GtETicket_Request>


2021-08-03 10:54:36.8678|INFO|logfile|Ответ:
<GtETicket_Response Type="Payment" Version="">
  <Order ID="111111" Status="0" StatusInfo="Выполнено" />
  <Registration Status="1" StopDate="07.09.2021" StopTime="23:40" />
  <Operation Date="03.08.2021" Time="10:54" DB="М" HP="555" />
  <Tickets>
    <Ticket Number="1222333">
          </Ticket>
  </Tickets>
</GtETicket_Response>
2021-08-03 10:54:36.8678|INFO|logfile|Политика для запроса Payment не настроена - кэширование не выполнено
2021-08-03 10:54:36.8678|INFO|logfile|->Постпроцессинг

Большое спасибо! Буду изучать.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.