使用 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 数据资源管理器中查看数据的 Azure Active Directory (Azure AD) 服务主体,包括客户端 ID 和客户端密码。 或者,可以使用系统分配的托管标识

如果选择使用 Azure Active Directory (Azure AD) 服务主体,则需要创建 Azure AD 服务主体。 对于安装,需要 ClientID 和密码。 建议使用具有查看者权限的服务主体,不建议使用较高级别的权限。 设置群集对 Azure AD 服务主体的查看权限

如果选择使用系统分配的标识,则需要获取代理池托管标识 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]
      

      [!NOTE]

      使用托管标识时,ADX_CLIENT_ID 值是托管标识的客户端 ID,此时不需要 ADX_CLIENT_ID。 仅当使用 Azure Active Directory (Azure AD) 服务主体时,才需要 ADX_CLIENT_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。

      如果使用了 Azure AD 服务主体:

      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.