博客/工程

如何关联石墨度量和洛基日志

2021年5月13日4分钟

Grafana探索使相关指标和日志变得容易。普罗米修斯查询自动转换为洛基查询.我们将在Grafana 8.0中扩展这一特性,以支持平滑的日志关联,不仅来自Prometheus,而且来自石墨指标。

普罗米修斯和洛基具有几乎相同的查询语法,因此它们之间的转换非常自然。但是,用于查询的Graphite语法是不同的,为了将其映射到Loki,需要进行一些额外的设置。这听起来很简单:您只需要决定Graphite度量名称的哪一部分应该成为Loki标签值。

有点困惑?让我们看一个例子。

下面是用于测量部署在两个不同环境(测试环境和生产环境)的两个应用程序各自处理的请求总数的Graphite指标:

apps.prod.application1.requests.count应用程序.刺激.application2.requests.count应用程序.测验.application1.requests.count应用程序.test.application2.requests.count

石墨公制名称按等级结构组织。名称被分成多个部分,也称为“节点”。节点之间用句号(“。”)分隔。

有些节点可能表示一组被监控项的名称空间(例如:应用程序)或系统的特定部分(例如:application1application2).度量名称末尾的节点通常定义度量的内容(例如。requests.count).

这只是一个例子。石墨度量名称非常灵活,可以遵循不同的约定。如果您对如何组织石墨指标的最佳实践感兴趣,请参阅以下内容石墨的文档

在上面的例子中,每个指标名称中有5个节点:

  1. 应用程序-与所有应用程序相关的指标的名称空间
  2. 刺激测验-环境名称
  3. application1application2—应用的唯一标识符
  4. 请求-被测量的东西
  5. -测量值。在本例中,它是给定环境和应用程序的请求总数,但也可以用于跟踪平均值、中位数或百分位数

参数只是故事的一部分。应用程序(application1而且application2)生成更深入了解度量值的日志。让我们假设Loki使用标签存储元数据来收集应用程序日志。例如:

{environment="prod", application="application2"}请求已处理!

请注意标签是如何与来自Graphite度量节点的唯一名称密切相关的。标签值(如刺激而且application1)也是石墨公制名称的一部分。然而,标签名称(环境而且应用程序)不是度量名称的一部分,而是所选约定的一部分。

那么,如何让Loki知道正确地将标签名称与来自Graphite查询的值匹配的约定呢?中的石墨数据源配置中添加了该信息标签的映射部分:

映射定义了石墨查询的哪个节点被捕获为标签值。节点被替换为括号中的标签名。当数据源从Graphite更改为Loki时,映射中的标签名称将与从查询中提取的标签值进行匹配,如下例所示:

  • 映射:应用。(环境)(应用程序).requests.count
  • 石墨查询:apps.prod.application1.requests.count
  • 洛基查询:{环境=“刺激”,应用程序= " application1 "}

石墨查询可能包含函数,但它们不包含在映射配置中。通过跳过函数从查询中提取度量路径,例如:

movingAverage (aliasByNode (apps.prod.application1.requests。Count, 1, 2), 10)→apps.prod.application1.requests.count

这是所有!用它就更容易了石墨的标签.带有标记的查询同时包含名称和值,允许Graphite查询在没有任何额外映射配置的情况下转换为Loki。例如:

  • 石墨查询:seriesByTag(“环境=刺激”,“应用程序= application1”)
  • 洛基查询:{环境=“刺激”,应用程序= " application1 "}

请继续关注更多民主化指标的功能!如果你想从Grafana, Graphite和Loki开始,请点击查看Grafana云.我们有免费和付费的Grafana云计划,以适应每一个用例-现在免费注册

此外,要了解更多关于即将发布的Grafana 8.0令人兴奋的新功能,更不用说有来自世界各地的70位不同演讲者的30多个会议,请注册GrafanaCONline该会议将于6月7日至17日举行。