菜单
开源

管理租户隔离

Grafana Loki 是一个多租户系统;租户 A 的请求和数据与租户 B 隔离。对 Loki API 的请求应包含一个 HTTP 头(X-Scope-OrgID),用于标识请求的租户。

租户 ID 可以是符合 Go HTTP 头限制(1MB)的任何字母数字字符串。建议运维人员使用合理的长度来唯一标识租户;通常 20 字节就足够了。

Loki 默认运行在多租户模式下。多租户模式通过配置中的 auth_enabled: true 来设置。

当配置为 auth_enabled: false 时,Loki 使用单租户模式。Loki API 请求中不需要 X-Scope-OrgID 头。单租户 ID 将是字符串 fake

多租户查询

在多租户模式下,查询可以从多个租户收集结果。设置 querier 配置选项 multi_tenant_queries_enabled: true 以启用跨租户查询。查询 API 请求定义了租户。通过使用管道符(|)分隔租户 ID,在查询请求 HTTP 头 X-Scope-OrgID 中指定多个租户。例如,针对租户 AB 的查询需要头 X-Scope-OrgID: A|B

只有查询端点支持多租户调用。如果在 HTTP 头中定义了多个租户,对 GET /loki/api/v1/tailPOST /loki/api/v1/push 的调用将返回 HTTP 400 错误。

即时查询和范围查询支持使用租户 ID 进行标签过滤。例如,查询

{app="foo", __tenant_id__=~"a.+"} | logfmt

将返回租户 ID 以字符 a 开头的所有租户的结果。

如果标签 __tenant_id__ 已存在于日志流中,则会在其前面加上字符串 original_

阶段内的租户 ID 过滤不受支持。以下是一个将 不起作用 的查询示例

{app="foo"} | __tenant_id__="1" | logfmt