博客/工程

Grafana Loki 2.6新增功能:多租户查询和有针对性的日志行删除

2022年7月27日8分钟

Grafana Loki 2.6在这里!

除了查询性能的改进,我们很高兴地介绍两个关键功能Grafana洛基:跨租户查询联合和目标删除。

什么是《Grafana Loki》中的多租户查询?

由于我们在开源TSDB中引入了同时查询多个租户的能力,Grafana米密尔,Grafana企业度量在美国,Grafana Loki社区一直有一个疑问:我们什么时候能做到这一点?

随着《Grafana Loki 2.6》的发布,答案就在眼前。跨租户查询联合现在在Loki中可用,允许用户使用一个查询访问来自多个租户的数据,以返回一个统一的结果。

Grafana Loki本身是多租户的,这意味着一个数据库可以为组织内的许多不同团队或业务线服务。每个租户获得自己的数据库切片,并且不受共享Loki基础设施中的其他部分的影响。因此,如果要支持五个不同的组,管理员可以将这些组的日志合并到一个Loki数据库中,将每个组的日志放在自己的租户中,这样就可以在集群中划分每个组的数据。这不仅降低了管理成本;维护单个数据库还简化了组织内操作人员的工作流程。

虽然为每个客户或团队提供独立的体验很重要,但在某些用例中,管理员或操作员需要更全面地了解工作中的所有系统。例如,团队A可以访问其租户的日志,而团队B可以访问其租户的日志,管理员可能需要同时查询和分析来自团队A和团队B的日志数据。

这就是跨租户查询联合发挥作用的地方。

多租户查询如何工作

与对一个租户进行查询的标准模型不同,使用跨租户查询,用户可以一次访问多个租户,Loki数据库将合并结果并返回一个复合结果。

以下是对Tenant1的标准LogQL查询:

curl -H 'X-Scope-OrgID:Tenant1 -G -s "http://localhost:3100/loki/api/v1/query" \——data-urlencode \ 'query=sum(rate({job="varlogs"}[10m])) by (level)' | jq

获得多租户查询非常简单!只需要对X-Scope-OrgID头,它标识要查询的租户。指定任意数量的租户,名称用|的性格。

在本例中,这个跨租户查询被写入目标Tenant1、Tenant2和Tenant3,以获取所请求的数据:

curl -H 'X-Scope-OrgID:Tenant1|Tenant2|Tenant3' \ -G -s "http://localhost:3100/loki/api/v1/query" \——data-urlencode \ 'query=sum(rate({job="varlogs"}[10m])) by (level)' | jq

Grafana Loki中的多租户查询对于操作员或管理员特别有用,他们可能需要识别单个数据库中所有租户的重要或敏感数据的日志行。用户现在可以运行单个查询来搜索集群中的所有租户,而不是运行单个查询来搜索每个租户中的特定字符串。此外,对于那些需要从日志中构建指标的用例,现在可以通过一个查询轻松计算需要来自多个租户的数据的指标,比如跨所有服务的全局错误率。

但这并不仅仅是在多个地方访问信息。跨租户查询联合还减少了过去必须在查询a到租户a和查询B到租户B之间切换以比较或合并信息的用户的上下文切换。使用多租户查询,用户现在可以在默认情况下始终在一个位置搜索两个租户的所有数据。

Grafana企业日志中的跨租户查询联合

中还提供了一次查询多个租户的功能Grafana企业日志1.5.对于企业用户来说,最大的区别在于该功能与GEL的访问控制模型集成,因此如果没有适当的权限,用户无法运行跨租户查询。要在GEL中执行这些查询,用户必须提供用户名(由要查询的租户组成)和API令牌形式的密码。GEL将验证给定令牌是否为用户提供了对查询中所有租户的读访问权。如果是,GEL将返回查询结果。如果不是,数据库将拒绝查询。

在Grafana Loki中删除目标日志行

许多组织都有适当的保护措施,以确保敏感或不需要的信息不会泄露到日志行中。我们有一个很棒的网络研讨会使用Grafana Loki管理日志数据的隐私可以按需获得一些最佳实践,您可以使用Promtail,我们为Grafana Loki首选的日志采集器。

但是,即使使用最好的计划,不需要的日志行(例如,具有个人身份信息(PII)或受保护的健康信息(PHI)的日志行)也可能进入日志数据库。其他时候,它不是关于不想要的数据泄漏,而是关于有一种方法来满足客户或最终用户的请求,他们希望从您的系统中删除他们的数据。例如,GDPR要求企业在特定情况下应要求删除个人的个人数据。

如何删除日志行

在任何一种情况下,您都需要一种方法来消除那些不需要的日志线。在这次发布之前,Grafana Loki只有有限的选择。对问题进行分类的一种方法是重置集群中特定租户的保留期。用户可以为每个租户的日志数据设置特定的保留期,因此解决方案是缩短任何租户不需要的日志行的保留时间。例如,如果TenantA中有三个月的日志可能存在可疑数据,那么您可以将TenantA的保留期限更改为一天,删除超过一天的所有内容,无论它们是好日志行还是坏日志行。从本质上讲,你必须从头开始。

用户还可以有选择地删除给定时间范围内与特定标签或标签集匹配的所有日志行。所以,如果客户因为GDPR的要求而要求你删除所有关于主题X的信息,而你知道所有与主题X相关的数据都被贴上了标签{应用= app123},您可以删除标记该标签的2周内的每一行日志。这也是次优解决方案,因为你在删除所有数据,包括一些可能与主题X无关的行。

如何删除特定的日志线在Grafana洛基

在Grafana Loki 2.6中,我们引入了执行更多功能的功能有针对性的删除.用户现在可以创建自己的LogQL查询(或者您也可以利用新的Grafana Loki查询生成器介绍了Grafana 9.0!)来识别要删除的特定日志行。

一旦用户完成了与他们想要删除的所有行匹配的查询,用户就可以发出删除这些行的请求。下面的示例将删除Tenant1中具有该标签的所有行{foo = bar}并在时间戳之间包含字符串“other”1591616227而且1591619692

curl -g -X POST \ 'http://127.0.0.1:3100/loki/api/v1/delete?query={foo="bar"}|= " other " &start=1591616227&end=1591619692' \ -H 'X-Scope-OrgID: Tenant1'

您可以在LogQL中编写的任何查询现在都可以用于标记要删除的日志行。额外的好处:在后台,数据被正式从存储中删除需要48小时。在前端,只要您发出删除请求,Grafana Loki就会立即过滤掉已识别的日志行,使它们不再可用于查询。对于任何查询Loki的终端用户来说,这使得删除请求几乎是即时的——这是对我们以前删除功能的改进,以前的删除功能只有在数据从存储中删除后才停止返回数据。

Grafana企业日志中的目标删除

与跨租户查询一样,GEL中的目标删除与数据库的authNZ功能原生集成。在发出删除请求时,用户必须以用户名和密码的形式提供适当的凭据。用户名是要删除的租户,密码是API令牌。GEL将验证API令牌是否授予用户名中指定的租户删除访问权。这些企业访问控制消除了任何人意外删除租户信息的可能性。

了解更多关于Grafana Loki的信息

感谢所有Grafana Loki用户和贡献者,他们继续帮助发展这个项目。我们的团队正在快速发展以满足需求,我们都对洛基的未来感到非常兴奋。

如果你运行Grafana Loki,一定要检查发布说明而且升级指南有关今天开始使用Grafana洛基2.6的更多细节!

如果运行Grafana Enterprise Logs,请务必检查发布说明而且文档GEL 1.5,它是基于Loki 2.6的,所以你可以享受所有对上游OSS项目的惊人变化!如果你有兴趣了解更多Grafana企业日志,请联系我们的团队

Grafana云是开始使用度量、日志、跟踪和仪表板的最简单方法。我们有一个慷慨的免费永远层和计划为每个bob体育手机二维码用例。现在免费注册