连接到 Azure 监控器数据源 - Amazon Managed Grafana

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

连接到 Azure 监控器数据源

Azure 监控器数据源支持 Azure 云中的多种服务:

添加数据源

数据源可以访问来自四种不同服务的指标。您可以配置对所用服务的访问权限。如果您在 Azure AD 中设置了相同的凭据,也可以对多个服务使用相同的凭据。

  1. 从 Grafana 主菜单访问后,可以立即在 “数据源” 部分中添加新安装的数据源。接下来,选择右上角的添加数据源按钮。Azure Monitor 数据源将在数据源列表的 “云” 部分中可供选择。

  2. 在名称字段中,Grafana 将自动填写数据源的名称Azure Monitor:或类似的名称。Azure Monitor - 3如果您要配置多个数据源,请将名称更改为更具信息性的名称。

  3. 如果你使用的是 Azure Monitor,则需要来自 Azure 门户的四条信息(有关详细说明,请参阅前面提供的链接):

    • 租户 ID(Azure 活动目录、属性、目录 ID)

    • 客户端 ID(Azure 活动目录、应用程序注册、选择您的应用程序、应用程序 ID)

    • 客户端密钥(Azure Active Directory、应用程序注册、选择你的应用程序、密钥)

    • 默认订阅 ID(订阅、选择订阅、概述、订阅 ID)

  4. 将这四项粘贴到 Azure 监视器 API 详细信息部分的字段中。

    • 每次查询都可以更改订阅 ID。保存数据源并刷新页面以查看指定客户端 ID 的可用订阅列表。

  5. 如果你还在使用 Azure 日志分析服务,则必须指定这两个配置值或重复使用上一步中的客户端 ID 和密钥。

    • 客户端 ID(Azure 活动目录、应用程序注册、选择您的应用程序、应用程序 ID)

    • 客户端密钥(Azure Active Directory、应用程序注册、选择你的应用程序、密钥、创建密钥、使用客户端密钥)

  6. 如果你使用的是应用程序见解,则需要来自 Azure 门户的两条信息(有关详细说明,请参阅前面提供的链接):

    • 应用程序 ID

    • API 密钥

  7. 将这两项粘贴到 “应用见解 API 详细信息” 部分的相应字段中。

  8. 选择 “保存并测试” 按钮,测试配置详细信息是否正确。

或者,在步骤 4 中,如果你要创建新的 Azure 活动目录应用程序,请使用 Azure CLI

az ad sp create-for-rbac -n "http://localhost:3000"

选择服务

在面板的查询编辑器中,选择 Azure Monitor 数据源后,第一步是选择服务。有四个选项:

  • Azure Monitor

  • Application Insights

  • Azure Log Analytics

  • Insights Analytics

查询编辑器会根据您选择的选项而变化。Azure 监视器是默认设置。

查询 Azure 监控器服务

Azure 监控器服务为你正在运行的所有 Azure 服务提供指标。它可以帮助你了解 Azure 上应用程序的性能,并主动发现影响应用程序的问题。

如果你的 Azure Monitor 凭据允许你访问多个订阅,请先选择相应的订阅。

您可以从该服务中获得的指标示例如下:

  • Microsoft.Compute/virtualMachines - Percentage CPU

  • Microsoft.Network/networkInterfaces - Bytes sent

  • Microsoft.Storage/storageAccounts - Used Capacity

查询编辑器允许您查询多个维度以获取支持这些维度的指标。支持多个维度的指标是指在 Azure Monitor 支持的指标列表中列出的指标,这些指标的 “维度” 列中列出了该指标的一个或多个值。

为 Azure 监视器格式化带别名的图例密钥

Azure 监视器 API 的默认图例格式为:

metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}

它们可能很长,但你可以使用别名来更改这种格式。在 “图例格式” 字段中,您可以随心所欲地组合以下别名。

Azure 监控器示例:

  • Blob Type: {{ blobtype }}

  • {{ resourcegroup }} - {{ resourcename }}

Azure 监视器的别名模式

  • {{ resourcegroup }}= 替换为资源组的值

  • {{ namespace }}= 替换为命名空间的值(例如,microsoft.compute/VirtualMachines)

  • {{ resourcename }}= 替换为资源名称的值

  • {{ metric }}= 替换为指标名称(例如,CPU 百分比)

  • {{ dimensionname }}= 7.1+ 版本的旧版(为了向后兼容)替换为第一个维度的密钥/标签(按键/标签排序)(例如 blobtype)

  • {{ dimensionvalue }}= 7.1+ 版本的旧版(为了向后兼容)替换为第一维度的值(按键/标签排序)(例如,)BlockBlob

  • {{ arbitraryDim }}= 在 7.1+ 版本中可用,替换为相应维度的值。 (例如,{{ blobtype }}变成 BlockBlob)

为 Azure 监视器创建模板变量

与其在指标查询中对服务器、应用程序和传感器名称等内容进行硬编码,不如使用变量来代替它们。变量显示为仪表板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

请注意,Azure 监控器服务尚不支持多个值。要可视化多个时间序列(例如,server1 和 server2 的指标),请添加多个查询,这样您就可以在同一个图表或同一个表中查看它们。

Azure Monitor 数据源插件提供了以下查询,你可以在变量编辑视图的查询字段中指定这些查询。您可以使用它们来填充变量的选项列表。

名称 描述
Subscriptions() 返回订阅列表。
ResourceGroups() 返回资源组列表。
ResourceGroups(12345678-aaaa-bbbb-cccc-123456789aaa) 返回指定订阅的资源组列表。
Namespaces(aResourceGroup) 返回指定资源组的命名空间列表。
Namespaces(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup) 返回指定资源组和订阅的命名空间列表。
ResourceNames(aResourceGroup, aNamespace) 返回资源名称列表。
ResourceNames(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup, aNamespace) 返回指定订阅的资源名称列表。
MetricNamespace(aResourceGroup, aNamespace, aResourceName) 返回指标命名空间列表。
MetricNamespace(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup, aNamespace, aResourceName) 返回指定订阅的指标命名空间列表。
MetricNames(aResourceGroup, aNamespace, aResourceName) 返回指标名称列表。
MetricNames(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup, aNamespace, aResourceName) 返回指定订阅的指标名称列表。

示例:

  • Resource Groups 查询:ResourceGroups()

  • 传入指标名称变量:Namespaces(cosmo)

  • 链接模板变量:ResourceNames($rg, $ns)

  • 请勿引用参数:MetricNames(hg, Microsoft.Network/publicIPAddresses, grafanaIP)

有关模板和模板变量的更多信息,请参阅模板

支持的 Azure 监视器指标列表

并非所有由 Azure 监视器 API 返回的指标都有值。为了便于构建查询,Grafana 数据源列出了支持的 Azure Monitor 指标,它会忽略那些永远不会有值的指标。随着新的服务和指标添加到 Azure 云中,此列表会定期更新。

Azure 监视器警报

Azure 监控服务支持 Grafana 警报。这不支持 Azure 警报。有关 Grafana 警报的更多信息,请参阅。Grafana 警报

查询 “应用程序见解” 服务

为应用程序见解设置带有别名的图例密钥格式

默认的图例格式为:

metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}

在 “图例格式” 字段中,可以随心所欲地组合以下别名。

应用程序见解示例:

  • city: {{ client/city }}

  • {{ metric }} [Location: {{ client/countryOrRegion }}, {{ client/city }}]

《应用程序见解》的别名模式

  • {{ groupbyvalue }}= Grafana 7.1+ 版本的旧版(为了向后兼容)替换为第一维度的密钥/标签(按键/标签排序)

  • {{ groupbyname }}= Grafana 7.1+ 版本的旧版(为了向后兼容)替换为第一维度的值(按键/标签排序)(例如,)BlockBlob

  • {{ metric }}= 替换为指标名称(例如,请求/计数)

  • {{ arbitraryDim }}= 在 7.1+ 版本中可用,替换为相应维度的值。 (例如,{{ client/city }}变成芝加哥)

筛选应用程序见解的表达式

筛选字段采用 OData 筛选表达式。

示例:

  • client/city eq 'Boydton'

  • client/city ne 'Boydton'

  • client/city ne 'Boydton' and client/city ne 'Dublin'

  • client/city eq 'Boydton' or client/city eq 'Dublin'

使用变量进行模板化以获得 “应用程序见解”

在变量编辑视图的 “查询” 字段中使用以下查询之一。

有关模板和模板变量的更多信息,请参阅模板

名称 描述
AppInsightsMetricNames() 返回指标名称列表。
AppInsightsGroupBys(aMetricName) 返回指定指标名称的group by子句列表。

示例:

  • 指标名称查询:AppInsightsMetricNames()

  • 传入指标名称变量:AppInsightsGroupBys(requests/count)

  • 链接模板变量:AppInsightsGroupBys($metricnames)

应用程序见解警报

应用程序见解支持 Grafana 警报。这不支持 Azure 警报。有关 Grafana 警报的更多信息,请参阅。Grafana 警报

查询 Azure 日志分析服务

查询是用新的 Azure 日志分析(或 KustoDB)查询语言编写的。日志分析查询可以格式化为时间序列数据或表格数据。

如果您的凭据允许您访问多个订阅,请在输入查询之前选择相应的订阅。

时间序列查询

时间序列查询适用于图表面板和其他面板,例如面 SingleStat 板。每个查询必须至少包含一个日期时间列和一个数值列。结果必须按日期时间列的升序排序。

以下代码示例显示了一个查询,该查询返回按小时分组的聚合计数。

Perf | where $__timeFilter(TimeGenerated) | summarize count() by bin(TimeGenerated, 1h) | order by TimeGenerated asc

一个查询也可以有一个或多个非数字/非日期时间列,这些列被视为维度并成为响应中的标签。例如,返回按小时、计算机和分组的汇总计数的查询 CounterName。

Perf | where $__timeFilter(TimeGenerated) | summarize count() by bin(TimeGenerated, 1h), Computer, CounterName | order by TimeGenerated asc

您还可以选择其他数值列(带或不带多个维度)。例如,按小时获取计数和平均值 CounterName、计算机和 InstanceName:

Perf | where $__timeFilter(TimeGenerated) | summarize Samples=count(), ["Avg Value"]=avg(CounterValue) by bin(TimeGenerated, $__interval), Computer, CounterName, InstanceName | order by TimeGenerated asc
注意

提示:在前面的查询中,使用 Kusto 语法和Samples=count()["Avg Value"]=...来重命名这些列,第二种语法允许留出空间。这会更改 Grafana 使用的指标的名称。因此,诸如系列图例和表格列之类的内容将与您指定的内容相匹配。在本例中,显示Samples的是而不是_count

表格查询

表格查询主要用于表格面板,它们显示列和行的列表。此示例查询返回包含六个指定列的行。

AzureActivity | where $__timeFilter() | project TimeGenerated, ResourceGroup, Category, OperationName, ActivityStatus, Caller | order by TimeGenerated desc

格式化日志分析的显示名称

默认的显示名称格式为:

metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}

可以使用显示名称字段选项对其进行自定义。

Azure 日志分析宏

为了便于编写查询,Grafana 提供了几个宏供你在查询的 where 子句中使用:

  • $__timeFilter()— 从 Grafana 时间选择器扩展到起始日期和结束日期时间TimeGenerated ≥ datetime(2018-06-05T18:09:58.907Z) andTimeGenerated ≤ datetime(2018-06-05T20:09:58.907Z)的位置。

  • $__timeFilter(datetimeColumn)— 从 Grafana 时间选择器扩展到起始日期和结束日期时间datetimeColumn ≥ datetime(2018-06-05T18:09:58.907Z) anddatetimeColumn ≤ datetime(2018-06-05T20:09:58.907Z)的位置。

  • $__timeFrom()— 从 Grafana 选择器返回起始日期时间。示例:datetime(2018-06-05T18:09:58.907Z)

  • $__timeTo()— 从 Grafana 选择器返回起始日期时间。示例:datetime(2018-06-05T20:09:58.907Z)

  • $__escapeMulti($myVar)— 用于包含非法字符的多值模板变量。如果$myVar将以下两个值作为字符串'\\grafana-vm\Network(eth0)\Total','\\hello!',则它会扩展为:@'\\grafana-vm\Network(eth0)\Total', @'\\hello!'. 如果使用单值变量,则无需使用此宏,请改为内联转义变量:@'\$myVar'.

  • $__contains(colName, $myVar)— 将与多值模板变量一起使用。如果$myVar有值'value1','value2',则扩展为:colName in ('value1','value2')

    如果使用 “全部” 选项,请选中 “包括所有选项” 复选框,然后在 “自定义所有值” 字段中输入以下值:all。如果$myVar有该值all,则宏将扩展为1 == 1。对于具有许多选项的模板变量,这会通过不构建大型的 “where.. in” 子句来提高查询性能。

Azure 日志分析内置变量

还有一些 Grafana 变量可用于 Azure 日志分析查询:

  • $__interval-Grafana 计算可用于在查询中按时间分组的最小时间粒度。它返回一个可以在 bin 函数中使用的时间颗粒(如5m1h);例如,summarize count() by bin(TimeGenerated, $__interval)。有关区间变量的更多信息,请参见添加间隔变量

使用 Azure 日志分析的变量进行模板化

任何返回值列表的 Log Analytics 查询都可以在变量编辑视图的查询字段中使用。还有一个用于日志分析的 Grafana 函数,用于返回工作空间列表。

有关模板和模板变量的信息,请参见模板和变量

名称 描述
workspaces() 返回默认订阅的工作空间列表。
workspaces(12345678-aaaa-bbbb-cccc-123456789aaa) 返回指定订阅的工作空间列表(参数可以用引号或不加引号)。

下表显示了变量查询的示例。

查询 描述
subscriptions() 返回 Azure 订阅列表。
workspaces() 返回默认订阅的工作空间列表。
workspaces("12345678-aaaa-bbbb-cccc-123456789aaa") 返回指定订阅的工作空间列表。
workspaces("$subscription") 带有用于订阅参数的模板变量。
workspace("myWorkspace").Heartbeat \| distinct Computer 返回虚拟机列表。
workspace("$workspace").Heartbeat \| distinct Computer 返回带有模板变量的虚拟机列表。
workspace("$workspace").Perf \| distinct ObjectName 返回 Perf 表中的对象列表。
workspace("$workspace").Perf \| where ObjectName == "$object" \| distinct CounterName 返回 Perf 表中的指标名称列表。

以下代码示例显示了使用变量的时间序列查询。

Perf | where ObjectName == "$object" and CounterName == "$metric" | where TimeGenerated >= $__timeFrom() and TimeGenerated <= $__timeTo() | where $__contains(Computer, $computer) | summarize avg(CounterValue) by bin(TimeGenerated, $__interval), Computer | order by TimeGenerated asc

从 Grafana 面板深度链接到 Azure 门户中的日志分析查询编辑器

在面板中选择一个时间序列可查看上下文菜单,其中包含指向 “在 Azure Portal 中查看” 的链接。选择该链接会在 Azure 门户中打开 Azure 日志分析查询编辑器,然后从那里的 Grafana 面板运行查询。

如果你当前未登录 Azure 门户,则该链接会打开登录页面。提供的链接对任何帐户都有效,但只有当你的帐户有权访问查询中指定的 Azure 日志分析工作区时,它才会显示查询。

Azure 日志分析警报

应用程序见解支持 Grafana 警报。这不支持 Azure 警报。有关在 Grafana 工作区中发出警报的更多信息,请参阅。Grafana 警报

查询 “应用程序见解分析” 服务

如果您将服务类型更改为 Insights Analytics,则可以使用与日志分析服务类似的编辑器。该服务还使用 Kusto 语言,因此查询数据的说明与相同,唯一的不同是您要查询 Applicati 查询 Azure 日志分析服务 on Insights Analytics 数据。