这是一年洛基的1.0 GA版本,在这段时间里我们看到的采用,大大增加了企业Grofers和Paytm内幕利用两Grafana洛基的托管提供前提。在那个时候,我们已经取得了提高性能的大幅上涨通过并行化和查询优化。在最新版本,1.6.0,我们继续重构代码性能以及小的新特性添加到查询语言,如二进制操作。
洛基的运营效益的小指数已经是巨大的。任何人使用洛基很快意识到洛基带来优势。然而,小指数和小labelset洛基的性能的关键实施限制可能的查询,和我们不喜欢的限制。
这就是为什么我们着手改善洛基显著的方式,以及为什么我们非常兴奋地宣布洛基2.0的发布。2.0洛基,我们打开一套全新的查询语言特性,使提取标签在查询时,删除以前的局限性。
现在我们可以两全其美:少量的标签在摄取指数日志,再加上一个全面的查询语言,可以提取更多的标签在查询时只允许查询可能受限于你的想象力!
让我们挖到新功能!
从日志中提取标签线在查询时间
让我们看看新的查询语言中添加2.0 !
在橙色的您应该已经熟悉。过滤日志内容| =
! =
| ~
和! ~
,和你的日志转化为指标率
和count_over_time
在洛基1. x。一切白色是新的在2.0,我认为这是最好的展示与例子这是如何工作的,我们走吧!
解析
这是我们开始的地方:我们如何在查询时提取标签。例如,让我们看一个洛基经销商日志:
看看返回的标签:
现在让我们做一个简单的改变返回此日志的查询:
但现在当我们看标签…
就这样,每一个键值对logfmt格式化日志行已经成为一个标签!
不使用logfmt ? ?不用担心,我们有你覆盖。
正则表达式:
JSON:
注意:JSON我们平嵌套对象使用下划线组合元素;看一下
响应
对象图中。我们计划进一步扩展JSON处理能力在未来,但这需要一个自己的语言,所以现在我们已经用更简单的方法。
这涵盖了步骤1,提取您的日志内容查询时间标签。现在让我们看看这使。
过滤器
洛基2.0引入了更强大的过滤功能。扩展现有的筛选器表达式,您可以过滤你提取的内容解析器阶段。让我们来看一个例子只显示日志行提取的持续时间长于1 s和query_type =过滤器:
注意这里,洛基可以智能推断类型的一些内容,在这种情况下解析Golang风格的持续时间1。
过滤器也错误处理的一个重要组成部分在这些新特性。如果出现问题,处理的一条线,洛基将分配一个新的标签命名__error__
错误的名称。这可以用来理解为什么选择了错误的日志:
在这种情况下,这些线不是JSON,因此他们未能解析JSON的json
阶段。一旦你知道问题是什么,你可以选择排除这些线很容易:
格式
减少压力任何人查看日志刚刚也更容易。洛基2.0让你重写日志行,他们出现在显示,使您能够把日志,看起来像这样:
,把它们变成这样:
label_format
和line_format
利用Golang的模板语法,让你选择相关的日志行显示。它还包括额外的好处就像垂直对齐或截断日志内容的能力。
图
也许更令人兴奋的比新的可视化过滤功能就是你可以做你的日志指标。许多新规聚合函数可以利用打开
阶段,它将一个标签提取到一个时间序列样本,允许它被用于这些功能:
- sum_over_time
- avg_over_time
- stddev_over_time
- stdvar_over_time
- max_over_time
- min_over_time
- quantile_over_time
让我们来看一个例子,这可能是用于显示第99百分位request_time NGINX访问日志,聚合的目的地服务器:
想象现在采取相同的查询和聚合在客户机的请求知识产权:
你可以看到我们是如何解锁新的和令人兴奋的东西:在高基数的数据聚合的能力!
这里有两个例子:
在最后这个例子中,我们看到别的东西:持续时间(持续时间)
。这是告诉洛基解析持续时间
标签的值作为Golang持续时间(一个时间单位女士或年代)。支持快到了额外的类型,例如,kb和mb。
从任何查询生成警报
所有这些新的查询功能是非常激动人心的,尤其是当结合另一个巨大的洛基改善2.0:能够直接从你的日志生成警报在洛基和送他们普罗米修斯Alertmanager。
以前,为了使警报洛基,您将配置洛基作为普罗米修斯数据源和点Grafana用它来生成Grafana警报。在洛基2.0中,我们综合分布式规则评估引擎,以便您可以编写任何洛基2.0查询生成一个警告语句使用熟悉的普罗米修斯规则语法。然后发送到一个现成的普罗米修斯Alertmanager警报,使它很容易生成和发送警报!
不再单独的索引存储!
最后对洛基2.0是真正令人兴奋的消息的实验国旗的boltdb-shipper
索引类型!