Splunk дата разница во времени

Я новичок в Splunk. Моя цель - оптимизировать вызов API, поскольку выполнение этого конкретного метода API занимает более 5 минут.

В Splunk я выполнял поиск по идентификатору контекста и получил вызов всех функций и подфункций основной функцией вызова API для этого конкретного выполнения. Теперь я хочу понять, какая подфункция заняла максимальное время. В Splunk слева в списке полей я вижу имя поля CallStartUtcTime (например, 2021-02-12T20: 17: 42.3308285Z) и CallEndUtcTime (например, 2021-02-12T20: 18: 02.3702937Z). В поисках, как мне написать функцию, которая даст мне разницу между этими двумя временами. Я погуглил и обнаружил, что мы можем использовать функцию eval (), но для меня она возвращает нулевое значение.

Дополнительная информация:

поиск:  идентификатор контекста и оценка в поиске

щелкнул по созданию представления таблицы и проверил поля начала, конца и различия в списке полей слева. но все трое становятся нулевыми

введите описание изображения здесь

не уверен, что я делаю не так. Я хочу узнать время, затрачиваемое на каждую функцию.


person ksam    schedule 13.02.2021    source источник


Ответы (1)


Splunk не может сравнивать временные метки в строковой форме. Сначала они должны быть преобразованы в форму эпохи (целое число). Используйте для этого функцию strptime().

...
| eval start = strptime(CallStartUtcTime, "%Y-%m-%dT%H:%M:%S.%7N%Z")
| eval end = strptime(CallEndUtcTime, "%Y-%m-%dT%H:%M:%S.%7N%Z")
| eval diff = end - start
...
person RichG    schedule 13.02.2021
comment
Спасибо за ответ. Я получаю поле diff как нулевое. Я использую идентификатор контекста и оператор eval, который вы отправили, поэтому мой поиск. - person ksam; 16.02.2021
comment
d47fa1ad-d9a1-4fce-a1af-2a33f839a28e | eval start = strptime (CallStartUtcTime,% Y-% m-% dT% H:% M:% S.% 7N% Z) | eval end = strptime (CallEndUtcTime,% Y-% m-% dT% H:% M:% S.% 7N% Z) | eval diff = end - начало - person ksam; 16.02.2021
comment
d47fa1ad-d9a1-4fce-a1af-2a33f839a28e - идентификатор контекста. - person ksam; 16.02.2021
comment
даже начальное и конечное поля равны нулю. чтобы увидеть эти поля (начало, конец и различие), я добавил текст, упомянутый выше d47fa1ad -... diff = end - start в текстовое поле поиска. и нажмите на создание табличного представления, а затем отметьте начало, конец и разницу, чтобы отобразить эти столбцы в табличном представлении. Но все три столбца становятся нулевыми. - person ksam; 16.02.2021
comment
Вот пример выполнения с использованием данных из исходного вопроса. | makeresults | eval CallStartUtcTime="2021-02-12T20:17:42.3308285Z", CallEndUtcTime="2021-02-12T20:18:02.3702937Z" | eval start = strptime(CallStartUtcTime, "%Y-%m-%dT%H:%M:%S.%7N%Z") | eval end = strptime(CallEndUtcTime, "%Y-%m-%dT%H:%M:%S.%7N%Z") | eval diff = end - start | table CallStartUtcTime CallEndUtcTime start end diff - person RichG; 16.02.2021