使用 Grafana 和 Loki 删除重复条目
Posted
技术标签:
【中文标题】使用 Grafana 和 Loki 删除重复条目【英文标题】:Removing duplicate entries with Grafana and 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
【问题讨论】:
【参考方案1】:试试这样的:
count by (username) (count_over_time(job="my-app" | json | username != "" [$__range]))
您可以使用例如 Grafana 上的饼图来显示这些数据。请参阅下面如何配置它,使用不同的日志文件和不同的标签(“分支”而不是“用户名”):
【讨论】:
有趣!没想到将其转换为指标。这个最有效:sum by (username) (count_over_timejob="my-app" | json | username != ""[$__range])) > 0
。这实际上很好,因为我可以在饼图中显示它并查看哪个用户最活跃。为了完整起见,我怎样才能像以前一样在列表中显示信息?带有“即时”的表格面板选择了一些作品,但有一些额外的列。
对不起,我忘记了答案中的“[$__range]”,我刚刚修好了。在我的测试中,使用“即时”选项,我看到的唯一额外列是“时间”。
时间列(这只是自其“即时”以来的当前时间)和代表计数的系列“值#A”。我想我想知道有没有办法让它只显示日志面板中的名称?否则,将其用作饼图效果很好,甚至比老实说的列表更好。
是的,您可以在漂亮的饼图中显示信息。重要提示:使用“范围”而不是“即时”。以上是关于使用 Grafana 和 Loki 删除重复条目的主要内容,如果未能解决你的问题,请参考以下文章
prometheus(或grafana)查询来评估grafana loki使用的存储?
如何在 Grafana 上使用 LogQL 将 Loki 解析的字段绘制为数值?
Promtail + Loki + Grafana 日志监控系统搭建