博客/工程

如何警告与Grafana洛基高基数数据

2021年5月28日6分钟

Amnon是一名软件工程师ScyllaDB.Amnon在大型系统软件开发方面有15年的经验。此前,他在Convergin工作,该公司已被甲骨文(Oracle)收购。Amnon拥有technon - machon technology i Le ' Israel的计算机科学学士和硕士学位,以及特拉维夫大学的工商管理硕士学位。

许多报告内bob手机app官网部指标的产品处于报告太少和报告太多之间的差距中。这是在拥有足够的信息来识别问题,同时又不会使指标收集服务器过载之间的永恒舞蹈。

但是当太多还不够的时候你会怎么做呢?

在本文中,我将使用我最熟悉的示例Scylla Monitoring Stack,它使用Prometheus进行指标收集。然而,这应该适用于目前在普罗米修斯上建造的任何系统,现在正在考虑洛基。

在这篇博文中,我将介绍以下内容:

  • 总体上的基数问题以及为什么"锡拉"更难解决
  • 洛基2.0如何帮助我们克服了这一点
  • 结合日志和度量

简介

在数据库上下文中,基数一般是指不同值的数量,具体来说,是指有多少个不同的指标?

需要注意的是,对于像Prometheus这样的指标收集服务器,标签实际上是指标定义的一部分。所以相同的指标名称,有两个标号值:两个指标。

高基数有什么问题?(换句话说,我们有很多指标。)

指标收集服务器经过高度优化,可以存储时间序列。例如,报告相同值的时间序列几乎不占用磁盘空间。

因此,一个具有一百万个值的度量比每个具有单个值的一百万个度量便宜几个数量级。

锡拉和基数问题

Scylla是一个分布式数据库,使用每核分片架构。每个CPU核心作为一个独立的执行单元来执行和监控。

如果您有一个100个节点的集群,每个集群有128个核心,对于Scylla中定义的每个指标,将有12800个指标到达您的Prometheus服务器。

对于全局指标来说是可行的,但"锡拉"是个数据库,如果我们想监控所有表呢?或者得到一个普罗米修斯警报与相关的钥匙?

这将很容易跨越数百万的度量线,并且根本不会与普罗米修斯合作。

我将在接下来的博文中使用的例子是大单元。为了获得最佳性能,拥有一个巨大的单元格(数百万个)是一个数据模型问题,我们希望通知用户。

仅使用Prometheus和Grafana,我们所能做的最好的事情是添加一个度量,即找到这样一个单元,当计数器增加时生成警报,并让用户自己寻找它。

洛基2.0

去年10月,Loki 2.0发布了这个问题的替代解决方案。Grafana洛基日志聚合系统的灵感来自于普罗米修斯.最初,它可以用作普罗米修斯的公制代。这本身就很适合添加基于日志消息的特别指标,这一点您应该很熟悉。

2.0版的众多新特性之一是生成警报的能力

这是巨大的。在一定条件下,它相当于无限的基数。

还记得大细胞警告吗?“锡拉”可以在日志上打印警告;该日志行将包含键空间、表名和键;所有这些信息都会出现在用户仪表板上。

相比之下,要实现与Prometheus相同的效果,您需要每个键都有一个度量,存储为标签,当然,这是未绑定的。

在深入研究我们如何用"锡拉"安装它的技术细节之前,请注意洛基的文档基数。

一般来说,保持低基数;洛基在飞行中为你生成标签!在使用Loki时,您使用类似于Prometheus PromQL的查询语言。在寻找特定的日志行时,您使用标签,但与其提前创建它们,不如在一般搜索中使用更少的标签,让Loki快速搜索所有匹配项。

洛基和锡拉的结合

我已经说过"锡拉"和"洛基"的整合了博客

一般来说:

  • 日志由rsyslog生成并发送。重要的是要注意rsyslog有一些协议,您应该选择RSYSLOG_SyslogProtocol23Format格式。

  • 日志被发送到Promtail,它在Loki旁边运行,并将日志线馈送给它。

  • Loki作为三个数据源:

    • 它向警报管理器发送警报。
    • 它创建了普罗米修斯使用的度量标准。
    • 它是与Grafana Explore一起使用的Grafana数据源。
  • 洛基警报显示为Grafana仪表板内警报表的一部分。

这就是警报的样子。您可以看到,用户可以在描述中找到所有相关的详细信息。

结合日志和度量

正如我提到的,Loki可以生成警报(发送到Alertmanager)和指标(由Prometheus读取)。一个不能取代另一个;Loki擅长解析大量数据,而Prometheus擅长存储指标。

您确实需要记住基数问题。

回到我们的大单元示例,我们将添加一个度量,该度量将在每次标识这样的日志行时进行计数。请注意,对于所有节点及其碎片,我们只有一个指标,几乎没有具体信息。给普罗米修斯添加这样的度量,增加的负载可以忽略不计。现在很容易看到一个大的时间框架,以确定何时有这样的案件,然后切换到洛基,以了解细节。

总之:当您正在监视非常特定的(高基数)罕见事件时,请向其添加一个低基数度量,以帮助您识别事件发生的点。

外卖

我们讨论了很多关于基数的内容,并研究了两个产品:一方面是Prometheus,这是一个指标收集服务器,它bob手机app官网擅长存储和查询多年的时间序列,但对基数有限制。另一方面,我们有Loki (v2.0及更高版本),它支持高基数用例,但以有限的时间范围支持为代价。

将这些工具组合在一起,Loki可以生成指标和警报,这是一个强大的功能,任何使用Prometheus-Grafana监控堆栈的人都应该将其作为工具箱的一部分。

有兴趣了解更多关于洛基2.0及以后?不要错过6月17日的GrafanaCONline会议。”得到更多,花更少的与Grafana Loki原木.”现在免费注册