簡體   English   中英

兩個領域之間的Kibana時間差

[英]Kibana time delta between two fields

我有兩個字段作為保存在ELK集群中的日志消息的一部分:

"EventTime": "2015-07-28 17:03:20",
"EventReceivedTime": "2015-07-28 17:03:22"

有沒有辦法在每個日志消息中獲取這些字段之間的時間差(在這種情況下為2秒),並通過Kibana3顯示它?

如果不可能,直接彈性搜索查詢也會起作用。

提前致謝!

是的,我剛剛使用腳本字段在Kibana中使用了一些測試數據。 在Kibana中,轉到“設置”,單擊左上角的索引模式。

您應該看到2個選項卡“字段”和“腳本字段”。

單擊“腳本字段”選項卡。 然后“添加腳本字段”。

輸入“名稱”,然后在“腳本”字段中輸入類似的內容

doc ['EventReceivedTime']。value - doc ['EventTime']。value

點擊底部的“創建字段”。 現在,您應該在Discover中看到新的腳本字段,並且可以在可視化中使用它。 我的時間戳以毫秒為單位,我的delta_time以毫秒為單位。

如果值是數字,那么您應該能夠在kibana中創建腳本字段(使用啟用的“elasticsearch 腳本 ”功能)。 在顯示每個事件時,必須計算它。

當事件發生時,我建議在logstash中執行此操作。 在寫入elasticsearch之前,您可以刪除使用ruby {}過濾器來計算差異,因此它在查詢和顯示中可用,而當時沒有其他處理。

如果字段都是日期字段,則可以先將它們轉換為毫秒,然后減去它們。 例如

doc['@timestamp'].value.getMillis() - doc['lastUpdatedDate'].value.getMillis()

這適用於彈性/ 6.2.2

查看文檔: https//www.elastic.co/guide/en/elasticsearch/reference/5.0/modules-scripting-expression.html#_date_field_api

我假設日期扣除將起作用,因為“日期字段被視為自1970年1月1日以來的毫秒數”:

doc['@timestamp'] - doc['lastUpdatedDate']

它沒有。 至少不是彈性/ kibana 6.0.0。 我確實得到了這個非常丑陋的黑客:

((doc['@timestamp'].date.year - 2017) * 31536000 + doc['@timestamp'].date.monthOfYear * 86400 + doc['@timestamp'].date.dayOfMonth * 3600 + doc['@timestamp'].date.secondOfDay) - ((doc['lastUpdatedDate'].date.year - 2017) * 31536000 + doc['lastUpdatedDate'].date.monthOfYear * 86400 + doc['lastUpdatedDate'].date.dayOfMonth * 3600 + doc['lastUpdatedDate'].date.secondOfDay)

我不得不推斷2017年以來的數字,否則溢出...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM