博客/工程

如何在不担心案件的情况下搜索洛基的日志

2021年5月5日2分钟

无论是在事故期间寻找问题的根本原因,还是在开发期间对代码的行为进行故障排除,在某些时候,您将遇到一个问题,需要您在日志中寻找众所周知的针。

洛基的主要用例是搜索系统内的日志。最好的方法是使用LogQL的行过滤器.然而,大多数操作符是区分大小写的。

这意味着,如果您不确定正在搜索的错误是否有一些大写字母,或者这些大写字母可能出现在哪里,那么搜索日志就变得很棘手。这变得更加困难,因为过滤器应用在一起作为而且操作,所以你不能组合多个过滤器试图匹配不同的情况(例如{app= " loki "} |= " error " |= " error ")因为它们都需要匹配。

更好的解决方案是使用正则表达式行过滤器,例如! ~而且| ~,支持RE2正则表达式语法.RE2确实支持不区分大小写的标志((我)?),可以让你搜索单词或短语,而不用担心大小写。

例如:

{app= " loki "} |~ " (?i)error "

将匹配任何包含:error, error, error或任何你的同事创造性地放在一起的日志。

最后,但并非最不重要的是,不要担心性能。Loki优化了这些正则表达式,并简化了它们。事实上,它甚至不会执行正则表达式搜索,而只是一个不区分大小写的搜索。你可以在我之前的文章中了解更多博客

简而言之,LogQL的行过滤器是在Loki中搜索日志的最快方式。如果您需要运行不区分大小写的搜索,您可以利用RE2不区分大小写标志(我)?没有性能损失。

和洛基开始最好的方式是什么?报名参加免费的Grafana Cloud.Grafana Cloud是开始观察指标、日志、跟踪和仪表板的最简单方法有免费和付费计划以适应每个用例。