使用 K2Bridge 开源连接器在 Kibana 中可视化来自 Azure 数据资源管理器的数据
借助 K2Bridge (Kibana-Kusto Bridge),可以将 Azure 数据资源管理器用作数据源,并在 Kibana 中将该数据可视化。 K2Bridge 是一个开源的容器化应用程序。 它在 Kibana 实例与 Azure 数据资源管理器群集之间充当代理。 本文介绍了如何使用 K2Bridge 创建该连接。
K2Bridge 将 Kibana 查询转换为 Kusto 查询语言 (KQL),并将 Azure 数据资源管理器结果发送回 Kibana。
K2Bridge 支持 Kibana 的“发现”、“可视化”和“仪表板” 选项卡。
利用“发现”选项卡可以:
- 搜索和浏览数据。
- 筛选结果。
- 在结果网格中添加或删除字段。
- 查看记录内容。
- 保存和共享搜索。
利用“可视化”选项卡可以:
- 创建可视化效果,例如:条形图、饼图、数据表、热度地图等。
- 保存可视化效果
利用“仪表板”选项卡可以:
- 使用新的或保存的可视化对象创建面板。
- 保存仪表板。
下图显示了一个通过 K2Bridge 绑定到 Azure 数据资源管理器的 Kibana 实例。 Kibana 中的用户体验未更改。
先决条件
若要在 Kibana 中通过 Azure 数据资源管理器将数据可视化,请准备好下列项:
- Azure 订阅。 创建 Azure 帐户。
- Azure 数据资源管理器群集和数据库。 需要群集的 URL 和数据库名称。
- Helm v3,这是 Kubernetes 包管理器。
- Azure Kubernetes 服务 (AKS) 群集或任何其他 Kubernetes 群集。 使用版本 1.21.2 或更高版本,至少有三个 Azure Kubernetes 服务节点。 版本 1.21.2 已经过测试和验证。 如果需要一个 AKS 群集,请参阅“如何使用 Azure CLI 或使用 Azure 门户部署 AKS 群集”。
- 经授权可以在 Azure 数据资源管理器中查看数据的 Microsoft Entra 服务主体,包括客户端 ID 和客户端密码。 或者,可以使用系统分配的托管标识。
如果选择使用 Microsoft Entra 服务主体,则需要创建 Microsoft Entra 服务主体。 对于安装,需要 ClientID 和密码。 建议使用具有查看者权限的服务主体,不建议使用较高级别的权限。 若要分配权限,请参阅在 Azure 门户中管理数据库权限或使用管理命令管理数据库安全角色。
如果选择使用系统分配的标识,则需要获取代理池托管标识 ClientID(位于生成的“[MC_xxxx]”资源组中)
在 Azure Kubernetes 服务 (AKS) 上运行 K2Bridge
默认情况下,K2Bridge 的 Helm 图表引用位于 Microsoft 容器注册表 (MCR) 中的公开可用的图像。 MCR 不需要任何凭据。
下载所需的 Helm 图表。
将 Elasticsearch 依赖项添加到 Helm。 此依赖项是必需的,因为 K2Bridge 使用小型内部 Elasticsearch 实例。 与实例服务元数据相关的请求,例如索引模式查询和已保存的查询。 此内部实例不保存任何业务数据。 你可以将该实例视为实现细节。
若要将 Elasticsearch 依赖项添加到 Helm,请运行以下命令:
helm repo add elastic https://helm.elastic.co helm repo update
若要从 GitHub 存储库的图表目录中获取 K2Bridge 图表,请执行以下操作:
从 GitHub 中克隆存储库。
转到 K2Bridges 根存储库目录。
运行以下命令:
helm dependency update charts/k2bridge
部署 K2Bridge。
将变量设置为适合你的环境的正确值。
ADX_URL=[YOUR_ADX_CLUSTER_URL] #For example, https://mycluster.chinaeast2.kusto.chinacloudapi.cn ADX_DATABASE=[YOUR_ADX_DATABASE_NAME] ADX_CLIENT_ID=[SERVICE_PRINCIPAL_CLIENT_ID] ADX_CLIENT_SECRET=[SERVICE_PRINCIPAL_CLIENT_SECRET] ADX_TENANT_ID=[SERVICE_PRINCIPAL_TENANT_ID]
备注
使用托管标识时,ADX_CLIENT_ID 值是托管标识的客户端 ID,位于生成的“[MC_xxxx]”资源组中。 有关详细信息,请参阅 MC_ 资源组。 只有在使用 Microsoft Entra 服务主体时,才需要 ADX_SECRET_ID。
(可选)启用 Application Insights 遥测。 如果是首次使用 Application Insights,请创建 Application Insights 资源。 将检测密钥复制到一个变量。
APPLICATION_INSIGHTS_KEY=[INSTRUMENTATION_KEY] COLLECT_TELEMETRY=true
安装 K2Bridge 图表。 只有 Kibana 7.10 版本才支持可视化效果和仪表板。 最新映像标记为:6.8_latest 和 7.16_latest,分别支持 Kibana 6.8 和 Kibana 7.10。 “7.16_latest”的映像支持 Kibana OSS 7.10.2,其内部 Elasticsearch 实例为 7.16.2。
如果使用 Microsoft Entra 服务主体:
helm install k2bridge charts/k2bridge -n k2bridge --set settings.adxClusterUrl="$ADX_URL" --set settings.adxDefaultDatabaseName="$ADX_DATABASE" --set settings.aadClientId="$ADX_CLIENT_ID" --set settings.aadClientSecret="$ADX_CLIENT_SECRET" --set settings.aadTenantId="$ADX_TENANT_ID" [--set image.tag=6.8_latest/7.16_latest] [--set image.repository=$REPOSITORY_NAME/$CONTAINER_NAME] [--set privateRegistry="$IMAGE_PULL_SECRET_NAME"] [--set settings.collectTelemetry=$COLLECT_TELEMETRY]
或者,如果使用了托管标识:
helm install k2bridge charts/k2bridge -n k2bridge --set settings.adxClusterUrl="$ADX_URL" --set settings.adxDefaultDatabaseName="$ADX_DATABASE" --set settings.aadClientId="$ADX_CLIENT_ID" --set settings.useManagedIdentity=true --set settings.aadTenantId="$ADX_TENANT_ID" [--set image.tag=7.16_latest] [--set settings.collectTelemetry=$COLLECT_TELEMETRY]
在 配置中,可以找到一组完整的配置选项。
上一个命令的输出建议使用下一个 Helm 命令来部署 Kibana。 (可选)运行以下命令:
helm install kibana elastic/kibana --version 7.17.3 -n k2bridge --set image=docker.elastic.co/kibana/kibana-oss --set imageTag=7.10.2 --set elasticsearchHosts=http://k2bridge:8080
使用端口转发在 localhost 上访问 Kibana。
kubectl port-forward service/kibana-kibana 5601 --namespace k2bridge
转到 http://127.0.0.1:5601 以连接到 Kibana。
向用户公开 Kibana。 可以使用多种方法执行此操作。 你使用的方法很大程度上取决于你的用例。
例如,可以将服务公开为负载均衡器服务。 为此,请将 --set service.type=LoadBalancer 参数添加到早期的 Kibana Helm install 命令。
然后运行以下命令:
kubectl get service -w -n k2bridge
输出应如下所示:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kibana-kibana LoadBalancer xx.xx.xx.xx <pending> 5601:30128/TCP 4m24s
然后,可以使用所显示的已生成的 EXTERNAL-IP 值。 通过打开浏览器并转到 <EXTERNAL-IP>:5601,使用该值来访问 Kibana。
配置索引模式以访问数据。
在新的 Kibana 实例中:
- 打开 Kibana。
- 浏览到“管理”。
- 选择“索引模式”。
- 创建一个索引模式。 索引的名称必须与表名或函数名称完全匹配,不带星号 (*)。 你可以从列表中复制相关行。
注意
若要在其他 Kubernetes 提供程序上运行 K2Bridge,请更改 values.yaml 中的 Elasticsearch storageClassName 值,使其与提供程序建议的值匹配。
发现数据
将 Azure 数据资源管理器配置为 Kibana 的数据源时,可以使用 Kibana 来浏览数据。
在 Kibana 中,选择“发现”选项卡。
从索引模式列表中,选择定义要浏览的数据源的索引模式。 在此处,索引模式是一个 Azure 数据资源管理器表。
如果你的数据具有时间筛选器字段,你可以指定时间范围。 在“发现”页的右上方,选择一个时间筛选器。 默认情况下,页面显示过去 15 分钟的数据。
结果表显示前 500 条记录。 你可以展开文档以检查采用 JSON 格式或表格式的字段数据。
你可以通过选择字段名称旁边的“添加”,将特定列添加到结果表中。 默认情况下,如果存在时间字段,则结果表包含 _source 列和 Time 列 。
在查询栏中,可以通过以下方式搜索数据:
- 输入一个搜索词。
- 使用 Lucene 查询语法。 例如:
- 搜索“error”以查找包含此值的所有记录。
- 搜索“status:200”以获取状态值为 200 的所有记录。
- 使用逻辑运算符 AND、OR 和 NOT。
- 使用星号 (*) 和问号 (?) 通配符。 例如,查询“destination_city:L*”会匹配 destination-city 值以“L”或“l”开头的记录。 (K2Bridge 不区分大小写。)
注意
仅支持 kibana 的 Lucene 查询语法。 请勿使用 KQL 选项,它表示 Kibana 查询语言。
提示
在搜索中,你可以找到更多搜索规则和逻辑。
若要筛选搜索结果,请使用“可用字段”列表。 可以在字段列表中查看:
- 字段最靠前的五个值。
- 包含该字段的记录数。
- 包含每个值的记录所占的百分比。
提示
使用放大镜可查找具有特定值的所有记录。
你还可以使用放大镜来筛选结果,并查看结果表中每个记录的结果表格式视图。
选择“保存”或“共享”以保留搜索。
可视化数据
使用 Kibana 可视化效果可获取 Azure 数据资源管理器数据的概览视图。
从“发现”选项卡创建可视化效果
若要创建垂直条形图可视化效果,请在“发现”选项卡中找到“可用字段”侧边栏 。
选择一个字段名称,然后单击“可视化”。
“可视化”选项卡将打开并显示可视化效果。 若要编辑可视化对象的数据和指标,请参阅 从“可视化”选项卡创建可视化效果。
从“可视化”选项卡创建可视化效果
选择“可视化”选项卡,然后单击“创建可视化效果” 。
在“新建可视化效果”窗口中,选择可视化效果类型。
可视化效果生成后,可以编辑指标并添加最多一个 Bucket。
注意
K2Bridge 支持一个 Bucket 聚合。 某些聚合支持搜索选项。 请使用 Lucene 语法,而不是 KQL 选项,后者表示 Kibana 查询语言语法。
重要
- 支持以下可视化效果:
Vertical bar
、Area chart
、Line chart
、Horizontal bar
、Pie chart
、Gauge
、Data table
、Heat map
、Goal chart
和Metric chart
。 - 支持以下指标:
Average
、Count
、Max
、Median
、Min
、Percentiles
、Standard deviation
、Sum
、Top hits
和Unique count
。 - 不支持指标
Percentiles ranks
。 - 使用 Bucket 聚合是可选的,可以在不使用 Bucket 聚合的情况下可视化数据。
- 支持以下 Bucket:
No bucket aggregation
、Date histogram
、Filters
、Range
、Date range
、Histogram
和Terms
。 - 不支持 Bucket
IPv4 range
和Significant terms
。
创建仪表板
可以通过 Kibana 可视化效果创建仪表板,对 Azure 数据资源管理器数据的概览视图进行汇总、比较和对比。
若要创建仪表板,请选择“仪表板”选项卡,然后单击“新建仪表板” 。
新仪表板将在编辑模式下打开。
若要添加新的可视化效果面板,请单击“新建”。
若要添加已创建的可视化效果,请单击“ 添加现有”,然后选择可视化效果。
若要排列面板、按优先级组织面板、重设面板大小等,请单击“编辑”,然后使用以下选项:
- 若要移动面板,请单击并按住面板标题,然后拖动到新位置。
- 若要重设面板大小,请单击重设大小控件,然后拖动到新尺寸。