簡體   English   中英

是否可以在 Grafana 上按天聚合 Loki 日志?

[英]Is it possible to aggregate Loki logs by day on Grafana?

我有一組這樣的日志:

{"action": "action_a", "username": "user_1", "ts": "2021-09-10T02:18:14.103Z"}
{"action": "action_a", "username": "user_2", "ts": "2021-09-10T02:17:14.103Z"}
{"action": "action_a", "username": "user_1", "ts": "2021-09-09T02:16:14.103Z"}
{"action": "action_a", "username": "user_1", "ts": "2021-09-08T02:15:14.103Z"}

是否可以按日期和用戶名對日志進行分組以獲得每天唯一用戶的計數?

我目前有以下查詢:

sum by (username) (count_over_time({job="my-app"} | json | username != "" [$__range]))

這有效地為我提供了當前儀表板范圍內唯一用戶的餅圖。 相反,我想要一個時間序列來顯示每天的唯一用戶數(例如,過去 60 天)。 換句話說,每日活躍用戶 (DAU)。

有了上面的日志,我需要類似的東西:

{"2021-09-10": 2}
{"2021-09-09": 1}
{"2021-09-08": 1}

Loki 可以做到這一點,還是我應該改用 Elasticsearch 之類的東西?

也許使用 label_format 創建一個新標簽可以解決問題? 標簽格式表達式

sum by (day) (
  count_over_time({job="my-app"} | json | label_format day=`{{.ts| substr 0 10}}` | username != ""[$__range])
)

要使用 LogQL 按天聚合,您可以將$__range替換為所需的時間分組間隔。

例如

sum by (username) (
  count_over_time(
    {job="my-app"} | json | username != ""
  [1d]) # <-- put your desired time interval here instead of $__range
)

然后,您可以使用時間序列可視化來顯示您的數據:

顯示每天用戶注冊的 Grafana 儀表板。它使用時間序列可視化

有用的鏈接:

暫無
暫無

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

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