控制对 APM 数据的访问
编辑控制对 APM 数据的访问
编辑从 8.2.0 版本开始,Applications UI 具有 Kibana 空间感知能力。这允许您按团队、用例、服务环境或您选择的任何其他过滤器来分隔您的数据以及对该数据的访问权限。
要利用此功能,您的 APM 数据需要写入不同的数据流。一种实现方法是使用不同的命名空间。例如,您可以将生产数据发送到具有 production
命名空间的 APM 集成,同时将暂存数据发送到具有 staging
命名空间的不同 APM 集成。
不过,并非必须使用多个 APM 集成实例。利用此功能的最简单方法是创建过滤后的别名。有关详细信息,请参阅下面的指南。
本指南将解释如何分隔您的暂存和生产数据。这有助于在对生产问题进行故障排除时消除干扰,或为某些数据创建更精细的访问控制。
本指南假设您
- 正在将暂存和生产 APM 数据发送到 Elasticsearch 集群。
- 已在您的 APM 代理配置中配置了
environment
变量。此变量在 APM 文档中设置service.environment
字段。您应该有service.environment: production
和service.environment: staging
的文档。如果此字段为空,请参阅 服务环境过滤器,了解如何设置此值。
Applications UI 使用索引模式来查询您的 APM 数据。索引模式可以匹配数据流、索引和/或别名。默认值为
索引设置 | 默认索引模式 |
---|---|
错误 |
|
跨度/事务 |
|
指标 |
|
默认索引设置还会查询 apm-*
数据视图。此数据视图匹配在较早版本的 APM(v8.0 之前)中提供的 APM 数据。
我们可以为 Applications UI 创建过滤后的别名进行查询,而不是查询默认的 APM 数据视图。过滤后的别名是一组数据流的辅助名称,该名称具有用户定义的过滤器,用于限制别名可以访问的文档。
要分隔 staging
和 production
APM 数据,我们需要创建六个过滤后的别名——每个服务环境三个别名
索引设置 | production 环境 |
staging 环境 |
---|---|---|
错误 |
|
|
跨度/事务 |
|
|
指标 |
|
|
production-<event>-apm
别名将包含一个过滤器,该过滤器仅提供对 service.environment
为 production
的文档的访问权限。同样,staging-<event>-apm
别名将包含一个过滤器,该过滤器仅提供对 service.environment
为 staging
的文档的访问权限。
要创建这六个过滤后的别名,请使用 Elasticsearch 别名 API。在 Kibana 中,打开 开发工具 并运行以下 POST 请求。
traces-apm*
生产别名示例
logs-apm*
生产别名示例
metrics-apm*
生产别名示例
traces-apm*
暂存别名示例
logs-apm*
暂存别名示例
metrics-apm*
暂存别名示例
接下来,您需要为每个服务环境创建一个 Kibana 空间。要打开 空间,请在主菜单中找到 堆栈管理 或使用 全局搜索字段。要创建新空间,请单击 创建空间。在本指南中,我们创建了两个 Kibana 空间,一个名为 production
,另一个名为 staging
。
有关创建空间的详细信息,请参阅 Kibana 空间。
现在,我们可以更改每个空间中 Applications UI 查询的默认数据视图。
打开 Applications UI 并导航到 设置 → 索引。使用下表更新每个空间的设置。每列中的值与我们在第一步中创建的过滤别名的名称相匹配。
索引设置 | production 空间 |
staging 空间 |
---|---|---|
错误索引 |
|
|
跨度索引 |
|
|
事务索引 |
|
|
指标索引 |
|
|
要打开 角色,请在主菜单中找到 堆栈管理 或使用 全局搜索字段。单击 创建角色。
您需要创建两个角色:一个用于 staging
用户(我们将此角色称为 staging_apm_viewer
),另一个用于 production
用户(我们将此角色称为 production_apm_viewer
)。
使用下表,为每个角色分配以下权限
权限 | production_apm_viewer |
staging_apm_viewer |
---|---|---|
索引权限 |
index: |
index: |
Kibana 权限 |
space: |
space: |
或者,您可以使用 Elasticsearch 创建或更新角色 API
创建 production_apm_viewer
角色
此请求创建一个 production_apm_viewer
角色
创建 staging_apm_viewer
角色
最后要做的是将用户分配到上面新创建的角色。用户将仅有权访问其被授予权限的空间内的数据。
有关如何使用 Kibana UI 创建用户并为其分配角色的信息,请参阅 保护对 Kibana 的访问。
或者,您可以使用 Elasticsearch 创建或更新用户 API。
此示例创建一个新用户,并为其分配在上一步中创建的 production_apm_viewer
角色。此用户将仅有权访问生产空间以及 service.environment
为 production
的数据。请记住更改 password
、full_name
和 email
字段。
POST /_security/user/production-apm-user { "password" : "l0ng-r4nd0m-p@ssw0rd", "roles" : [ "production_apm_viewer" ], "full_name" : "Jane Production Smith", "email" : "[email protected]" }
此示例创建一个新用户,并为其分配在上一步中创建的 staging_apm_viewer
角色。此用户将仅有权访问暂存空间以及 service.environment
为 staging
的数据。请记住更改 password
、full_name
和 email
字段。
POST /_security/user/staging-apm-user { "password" : "l0ng-r4nd0m-p@ssw0rd", "roles" : [ "staging_apm_viewer" ], "full_name" : "John Staging Doe", "email" : "[email protected]" }
就是这样!回到 Applications UI,惊叹于您的特定于空间的数据。