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