使用 K2Bridge 开源连接器在 Kibana 中可视化来自 Azure 数据资源管理器的数据

借助 K2Bridge (Kibana-Kusto Bridge),可以将 Azure 数据资源管理器用作数据源,并在 Kibana 中将该数据可视化。 K2Bridge 是一个开源的容器化应用程序。 它在 Kibana 实例与 Azure 数据资源管理器群集之间充当代理。 本文介绍了如何使用 K2Bridge 创建该连接。

K2Bridge 将 Kibana 查询转换为 Kusto 查询语言 (KQL),并将 Azure 数据资源管理器结果发送回 Kibana。

Kibana connection with Azure Data Explorer via K2Bridge.

K2Bridge 支持 Kibana 的“发现”、“可视化”和“仪表板” 选项卡。

利用“发现”选项卡可以:

  • 搜索和浏览数据。
  • 筛选结果。
  • 在结果网格中添加或删除字段。
  • 查看记录内容。
  • 保存和共享搜索。

利用“可视化”选项卡可以:

  • 创建可视化效果,例如:条形图、饼图、数据表、热度地图等。
  • 保存可视化效果

利用“仪表板”选项卡可以:

  • 使用新的或保存的可视化对象创建面板。
  • 保存仪表板。

下图显示了一个通过 K2Bridge 绑定到 Azure 数据资源管理器的 Kibana 实例。 Kibana 中的用户体验未更改。

Kibana page bound to Azure Data Explorer.

先决条件

若要在 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 不需要任何凭据。

  1. 下载所需的 Helm 图表。

  2. 将 Elasticsearch 依赖项添加到 Helm。 此依赖项是必需的,因为 K2Bridge 使用小型内部 Elasticsearch 实例。 与实例服务元数据相关的请求,例如索引模式查询和已保存的查询。 此内部实例不保存任何业务数据。 你可以将该实例视为实现细节。

    1. 若要将 Elasticsearch 依赖项添加到 Helm,请运行以下命令:

      helm repo add elastic https://helm.elastic.co
      helm repo update
      
    2. 若要从 GitHub 存储库的图表目录中获取 K2Bridge 图表,请执行以下操作:

      1. GitHub 中克隆存储库。

      2. 转到 K2Bridges 根存储库目录。

      3. 运行以下命令:

        helm dependency update charts/k2bridge
        
  3. 部署 K2Bridge。

    1. 将变量设置为适合你的环境的正确值。

      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。

    2. (可选)启用 Application Insights 遥测。 如果是首次使用 Application Insights,请创建 Application Insights 资源将检测密钥复制到一个变量。

      APPLICATION_INSIGHTS_KEY=[INSTRUMENTATION_KEY]
      COLLECT_TELEMETRY=true
      
    3. 安装 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]
      

      配置中,可以找到一组完整的配置选项。

    4. 上一个命令的输出建议使用下一个 Helm 命令来部署 Kibana。 (可选)运行以下命令:

      helm install kibana elastic/kibana -n k2bridge --set image=docker.elastic.co/kibana/kibana-oss --set imageTag=7.10.2 --set elasticsearchHosts=http://k2bridge:8080
      
    5. 使用端口转发在 localhost 上访问 Kibana。

      kubectl port-forward service/kibana-kibana 5601 --namespace k2bridge
      
    6. 转到 http://127.0.0.1:5601 以连接到 Kibana。

    7. 向用户公开 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。

  4. 配置索引模式以访问数据。

    在新的 Kibana 实例中:

    1. 打开 Kibana。
    2. 浏览到“管理”。
    3. 选择“索引模式”。
    4. 创建一个索引模式。 索引的名称必须与表名或函数名称完全匹配,不带星号 (*)。 你可以从列表中复制相关行。

注意

若要在其他 Kubernetes 提供程序上运行 K2Bridge,请更改 values.yaml 中的 Elasticsearch storageClassName 值,使其与提供程序建议的值匹配。

发现数据

将 Azure 数据资源管理器配置为 Kibana 的数据源时,可以使用 Kibana 来浏览数据。

Screenshot of Discover tab in Kibana.

  1. 在 Kibana 中,选择“发现”选项卡。

  2. 从索引模式列表中,选择定义要浏览的数据源的索引模式。 在此处,索引模式是一个 Azure 数据资源管理器表。

    Screenshot of data source pattern list.

  3. 如果你的数据具有时间筛选器字段,你可以指定时间范围。 在“发现”页的右上方,选择一个时间筛选器。 默认情况下,页面显示过去 15 分钟的数据。

    Screenshot of selecting a time filter.

  4. 结果表显示前 500 条记录。 你可以展开文档以检查采用 JSON 格式或表格式的字段数据。

    Screenshot of an expanded record in the Discover tab.

  5. 你可以通过选择字段名称旁边的“添加”,将特定列添加到结果表中。 默认情况下,如果存在时间字段,则结果表包含 _source 列和 Time 列 。

    Screenshot of adding columns.

  6. 在查询栏中,可以通过以下方式搜索数据:

    • 输入一个搜索词。
    • 使用 Lucene 查询语法。 例如:
      • 搜索“error”以查找包含此值的所有记录。
      • 搜索“status:200”以获取状态值为 200 的所有记录。
    • 使用逻辑运算符 ANDORNOT
    • 使用星号 (*) 和问号 (?) 通配符。 例如,查询“destination_city:L*”会匹配 destination-city 值以“L”或“l”开头的记录。 (K2Bridge 不区分大小写。)

    Screenshot of running queries.

注意

仅支持 kibana 的 Lucene 查询语法。 请勿使用 KQL 选项,它表示 Kibana 查询语言。

提示

搜索中,你可以找到更多搜索规则和逻辑。

  1. 若要筛选搜索结果,请使用“可用字段”列表。 可以在字段列表中查看:

    • 字段最靠前的五个值。
    • 包含该字段的记录数。
    • 包含每个值的记录所占的百分比。

    提示

    使用放大镜可查找具有特定值的所有记录。

    Screenshot of a field list with the magnifying glass highlighted.

    你还可以使用放大镜来筛选结果,并查看结果表中每个记录的结果表格式视图。

    Screenshot of a table list with the magnifying glass highlighted.

  2. 选择“保存”或“共享”以保留搜索。

    Screenshot of how to save a search in Kibana.

可视化数据

使用 Kibana 可视化效果可获取 Azure 数据资源管理器数据的概览视图。

从“发现”选项卡创建可视化效果

  1. 若要创建垂直条形图可视化效果,请在“发现”选项卡中找到“可用字段”侧边栏 。

    Screenshot of selecting a field in the available fields in the Discover tab.

  2. 选择一个字段名称,然后单击“可视化”。

    Screenshot of creating a visualization and selecting the field.

  3. “可视化”选项卡将打开并显示可视化效果。 若要编辑可视化对象的数据和指标,请参阅 从“可视化”选项卡创建可视化效果

    Screenshot of editing the visualization in the Visualize tab.

从“可视化”选项卡创建可视化效果

  1. 选择“可视化”选项卡,然后单击“创建可视化效果” 。

    Screenshot of selecting the Visualize tab.

  2. 在“新建可视化效果”窗口中,选择可视化效果类型。

    Screenshot of selecting a visualization type.

  3. 可视化效果生成后,可以编辑指标并添加最多一个 Bucket。

    Screenshot of editing the metrics.

注意

K2Bridge 支持一个 Bucket 聚合。 某些聚合支持搜索选项。 请使用 Lucene 语法,而不是 KQL 选项,后者表示 Kibana 查询语言语法。

重要

  • 支持以下可视化效果:Vertical barArea chartLine chartHorizontal barPie chartGaugeData tableHeat mapGoal chartMetric chart
  • 支持以下指标:AverageCountMaxMedianMinPercentilesStandard deviationSumTop hitsUnique count
  • 不支持指标 Percentiles ranks
  • 使用 Bucket 聚合是可选的,可以在不使用 Bucket 聚合的情况下可视化数据。
  • 支持以下 Bucket:No bucket aggregationDate histogramFiltersRangeDate rangeHistogramTerms
  • 不支持 Bucket IPv4 rangeSignificant terms

创建仪表板

可以通过 Kibana 可视化效果创建仪表板,对 Azure 数据资源管理器数据的概览视图进行汇总、比较和对比。

  1. 若要创建仪表板,请选择“仪表板”选项卡,然后单击“新建仪表板” 。

    Screenshot of selecting the Dashboard tab.

    新仪表板将在编辑模式下打开。

  2. 若要添加新的可视化效果面板,请单击“新建”。

    Screenshot of adding an existing visualization to a dashboard.

  3. 若要添加已创建的可视化效果,请单击“ 添加现有”,然后选择可视化效果。

  4. 若要排列面板、按优先级组织面板、重设面板大小等,请单击“编辑”,然后使用以下选项:

    • 若要移动面板,请单击并按住面板标题,然后拖动到新位置。
    • 若要重设面板大小,请单击重设大小控件,然后拖动到新尺寸。

    Screenshot of dashboards with visualizations of Azure Data Explorer data.