【问题标题】:Removing duplicate entries with Grafana and Loki使用 Grafana 和 Loki 删除重复条目
【发布时间】:2021-11-03 19:56:18
【问题描述】:

我正在使用 Grafana 来可视化来自 Prometheus 的指标和来自 Loki 的关于应用程序的日志。有日志语句如:

{"action": "action_a", "username": "user_1", "ts": 1012}
{"action": "action_a", "username": "user_2", "ts": 1008}
{"action": "action_a", "username": "user_1", "ts": 1005}
{"action": "action_a", "username": "user_1", "ts": 1000}

我有一个查询,可以使用 Grafana 日志面板获取“最近活跃用户”的列表:

{job="my-app"} | json | username != "" | line_format "{{.username}}"

我已经尝试了Deduplication 的所有值,这大部分都可以正常工作,除了用户在彼此之间进行操作的(常见)情况(如上所述),然后我会得到这样的日志:

user_1
user_2
user_1

我怎样才能让它只显示每个用户一次?例如:

user_1
user_2

【问题讨论】:

    标签: grafana grafana-loki


    【解决方案1】:

    试试这样的:

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

    您可以使用例如 Grafana 上的饼图来显示这些数据。请参阅下面如何配置它,使用不同的日志文件和不同的标签(“分支”而不是“用户名”):

    【讨论】:

    • 有趣!没想到将其转换为指标。这个最有效:sum by (username) (count_over_time{job="my-app"} | json | username != ""[$__range])) > 0。这实际上很好,因为我可以在饼图中显示它并查看哪个用户最活跃。为了完整起见,我怎样才能像以前一样在列表中显示信息?带有“即时”的表格面板选择了一些作品,但有一些额外的列。
    • 对不起,我忘记了答案中的“[$__range]”,我刚刚修好了。在我的测试中,使用“即时”选项,我看到的唯一额外列是“时间”。
    • 时间列(这只是自其“即时”以来的当前时间)和代表计数的系列“值#A”。我想我想知道有没有办法让它只显示日志面板中的名称?否则,将其用作饼图效果很好,甚至比老实说的列表更好。
    • 是的,您可以在漂亮的饼图中显示信息。重要提示:使用“范围”而不是“即时”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 2015-06-08
    • 2018-10-16
    • 2010-12-17
    相关资源
    最近更新 更多