排查 Azure 托管 Grafana 的问题

本文指导你排查 Azure 托管 Grafana 的错误,并提供解决这些错误的建议解决方案。

创建工作区时显示访问权限警报

在 Azure 门户中创建托管 Grafana 实例时,用户在“基本信息”选项卡中收到警报:你可能没有足够的访问权限,无法在下面的订阅或资源组中启用所有功能,有关详细信息,请参阅下一个“权限”选项卡。

Azure 平台的屏幕截图:访问权限不足警报。

在“权限”选项卡中,显示了另一个警报:你必须是订阅“所有者”或“用户访问管理员”才能使用此功能。已禁用角色分配控件。

触发这些警报是因为用户不是订阅管理员或所有者,在用户创建工作区时会发生以下情况:

  • 用户不会获得新 Grafana 实例的“Grafana 管理员”角色
  • 此 Grafana 实例的系统分配的托管标识不会获得“监视读取者”角色。

解决方案 1:继续操作并寻求管理员帮助

继续创建托管 Grafana 工作区。 你应该知道,在订阅管理员向你分配 Grafana 管理员、Grafana 编辑者或 Grafana 查看者角色之前,你将无法使用托管 Grafana 实例。

解决方案 2:选择其他订阅

用户可以在“基本信息”选项卡中选择其他订阅。他们必须是管理员或所有者。 横幅将消失。

Azure 托管 Grafana 实例创建失败

当用户从 Azure 门户创建托管 Grafana 实例时,会显示错误。

解决方案 1:编辑实例名称

如果你在填写表单以创建托管 Grafana 实例时遇到错误,则可能为 Grafana 实例指定了无效的名称。

Azure 平台的屏幕截图:实例名称错误。

输入符合以下条件的名称:

  • 在整个 Azure 区域中是唯一的。 不能由其他用户使用。
  • 长度为 23 个字符或更少字符
  • 以字母开头。 其余部分只能是字母数字字符或连字符,并且名称必须以字母数字字符结尾。

解决方案 2:查看部署错误

  1. 查看托管 Grafana 部署详细信息并阅读状态消息。

    Azure 平台的屏幕截图:实例部署错误。

  2. 根据错误消息执行以下操作:

  • 状态消息指出该区域不受支持,并提供受支持的 Azure 区域列表。 再次尝试部署新的托管 Grafana 实例。 尝试首次创建托管 Grafana 实例时,Azure 门户会推荐不可用的 Azure 区域。 在你第二次尝试时,不会显示这些区域。

  • 状态消息指出不允许角色分配更新。 用户不是订阅所有者。 如果资源部署成功且角色分配失败,则需要对订阅的具有所有者或管理员访问控制的人员执行以下操作:

    • 将订阅级别的“监视读取者”角色分配给托管 Grafana 实例的托管标识
    • 为你分配这个新的托管 Grafana 实例的 Grafana 管理员角色
  • 如果状态消息提到存在冲突,则某人可能同时创建了另一个名称相同的实例,或者之前的名称检查失败,导致之后发生冲突。 删除此实例并创建具有不同名称的其他实例。

用户无法访问其托管 Grafana 实例

用户已成功创建 Azure 托管 Grafana 实例,但在转到终结点 URL 时无法访问其托管 Grafana 实例。

解决方案 1:检查预配状态

如果在获取某个页面时出现错误消息,例如“无法访问此页面”,这说明此页面响应时间过长,请按照以下流程操作:

浏览器的屏幕截图:无法访问页面。

  1. 在 Azure 平台中,打开实例并转到“概述”页面。 确保“预配状态”为“已成功”,并且已填充“Essentials”部分中的所有其他字段。 如果一切正常,请继续按照以下流程操作。 否则,请删除并重新创建实例。

    Azure 平台的屏幕截图。概述 - 概要

  2. 如果看到多个浏览器重定向,然后出现如上所示的通用浏览器错误页上,这表示后端发生了故障。

  3. 如果防火墙阻止了出站流量,请允许访问你的实例、以 grafana.azure.com 结尾的 URL 和 Microsoft Entra ID。

解决方案 2:修复访问角色问题

如果出现一个错误页,指出“未分配角色”:

浏览器的屏幕截图。未分配角色。

如果发生以下情况,则可能出现此问题:

  1. 你无权为自己添加 Grafana 管理员角色。 有关详细信息,请参阅创建工作区时显示访问权限警报

  2. 你使用了 CLI、ARM 模板或其他方法来创建 Azure 门户之外的工作区。 只有 Azure 门户会自动将你添加为 Grafana 管理员。在所有其他情况下,你必须手动为自己添加 Grafana 管理员角色。

    1. 在 Grafana 工作区中,选择“访问控制 (IAM)”>“添加角色分配”以添加此角色分配。 必须具有订阅或托管 Grafana 资源的管理员或所有者访问权限角色才能分配此角色。 如果你没有足够的访问权限,请寻求管理员的帮助。
    2. 你的帐户是一个外国帐户:Grafana 实例未在主租户中注册。
    3. 如果你最近解决了此问题,并且分配有足够的 Grafana 角色,则可能需要等待一段时间,等到 Cookie 过期后进行刷新。 此过程通常需要 5 分钟。如有疑问,可以删除所有 Cookie 或启动专用浏览器会话,以强制使用包含新角色信息的全新 Cookie。

授权用户未在 Grafana 用户配置中显示

将用户添加到托管 Grafana 的内置 RBAC 角色(例如 Grafana 查看者)后,Grafana 的“配置”UI 页面中不会立即列出此用户。 此行为是设计使然。 托管 Grafana 的 RBAC 角色存储在 Microsoft Entra ID 中。 出于性能原因,托管 Grafana 不会自动将分配给内置角色的用户同步到每个实例。 对于 RBAC 分配变更,没有通知。 如果定期查询 Microsoft Entra ID 来获取当前分配,会给 Microsoft Entra 服务增加很多额外的负载。

这个问题本身没有解决方法。 当用户登录到你的 Grafana 实例后,该用户将显示在 Grafana 的“配置”下的“用户”选项卡中。 你可以查看已将该用户分配到的相应的角色。

Azure 托管 Grafana 仪表板面板不显示任何数据

一个或多个托管 Grafana 仪表板面板不显示任何数据。

解决方案:检查仪表板设置

上下文:Grafana 仪表板设置为定期提取新数据。 如果仪表板为了加载基础查询而刷新得过于频繁,则面板将卡住,无法加载和显示数据。

  1. 检查在仪表板中配置的刷新数据的频率。
    1. 在仪表板中,转到“仪表板设置”。
    2. 在常规设置中,降低仪表板的“自动刷新”频率,使该频率慢于加载查询所需的时间。
  2. 当查询检索数据所用的时间过长时, Grafana 会自动将某些依赖项调用视为超时,例如这些调用花费的时间超过 30 秒。 检查查询结束时是否有任何异常的速度减慢。

有关数据源的一般问题

用户无法连接到数据源,或者数据源无法提取数据。

解决方案:检查网络设置和 IP 地址

若要排查此问题,请执行以下操作:

  1. 检查数据源服务器的网络设置。 不应有防火墙阻止 Grafana 访问它。
  2. 检查数据源是否未尝试连接到专用 IP 地址。 Azure 托管 Grafana 目前不支持连接到专用网络。

Azure Monitor 无法提取数据

每个 Grafana 实例都预先配置了 Azure Monitor 数据源。 尝试使用预先配置的仪表板时,用户发现 Azure Monitor 数据源无法提取数据。

解决方案:检查 Azure Monitor 数据设置

  1. 通过打开托管 Grafana 终结点并选择“仪表板”>“浏览”,找到预先配置的仪表板。 然后选择仪表板,例如“Azure Monitor”>“Azure 应用监视 - Application Insights”。

  2. 确保顶部附近的下拉菜单填充了订阅、资源组和资源名称。 在下面的屏幕截图示例中,“资源”下拉菜单设置为 null。 在本例中,请选择一个资源名称。 可能需要选择包含仪表板适用的资源类型的其他资源组。 在此示例中,需要选取具有 Application Insights 资源的资源组。

    托管 Grafana 工作区的屏幕截图:检查仪表板信息。

  3. 打开 Azure Monitor 数据源设置页

    1. 在托管 Grafana 终结点中,在左侧菜单中选择“配置”,然后选择“数据源”。
    2. 选择“Azure Monitor”
  4. 如果数据源使用托管标识,则执行以下操作:

    1. 选择“加载订阅”按钮进行快速测试。 如果已使用你的订阅填充“默认订阅”,则托管 Grafana 可以访问此订阅中的 Azure Monitor。 如果未填充,则存在权限问题。

      托管 Grafana 工作区的屏幕截图:加载订阅。

    2. 检查是否在Azure 门户中启用了“系统分配的托管标识”选项。 如果没有,请手动启用它:

      1. 在 Azure 门户中打开你的托管 Grafana 实例。
      2. 在左侧菜单中的“设置”下,选择“标识”。
      3. 将“状态”选择为“启用”,然后选择“保存”

      Azure 平台的屏幕截图:启用系统分配的托管标识。

    3. 检查托管标识是否具有分配给托管 Grafana 实例的“监视读取者”角色。 如果没有,请从 Azure 门户手动添加该角色:

      1. 在 Azure 门户中打开你的托管 Grafana 实例。
      2. 在左侧菜单中的“设置”下,选择“标识”。
      3. 选择“Azure 角色分配”。
      4. 应显示已分配给托管 Grafana 实例的“监视读取者”角色。 如果没有,请选择“添加角色分配”并添加“监视读取者”角色。

      Azure 平台的屏幕截图:添加角色分配。

  5. 如果数据源使用应用注册身份验证:

    1. 在 Grafana 终结点中,转到“配置”>“数据源”>“Azure Monitor”,检查“目录(租户) ID”和“应用程序(客户端) ID”的信息是否正确。

    2. 检查服务主体是否具有分配给托管 Grafana 实例的“监视读取者”角色。 如果没有,请从 Azure 门户手动添加该角色。

    3. 如有必要,请重新应用客户端密码

      托管 Grafana 工作区的屏幕截图:检查应用注册身份验证详细信息。

Azure 数据资源管理器无法提取数据

Azure 数据资源管理器数据源无法提取数据。

解决方案:检查 Azure 数据资源管理器设置

  1. 通过打开托管 Grafana 终结点并选择“仪表板”>“浏览”,找到预先配置的仪表板。 然后选择仪表板,例如“Azure Monitor”>“Azure 数据资源管理器群集资源见解”。

  2. 确保顶部附近的下拉菜单填充了数据源、订阅、资源组、命名空间、资源和工作区名称。 在下面的屏幕截图示例中,我们选择了不包含任何数据资源管理器群集的资源组。 在本例中,请选择包含数据资源管理器群集的其他资源组。

    托管 Grafana 工作区的屏幕截图:检查 Azure 数据资源管理器的仪表板信息。

  3. 检查 Azure 数据资源管理器数据源,并了解如何设置身份验证。 目前只能通过 Microsoft Entra ID 为 Azure 数据资源管理器设置身份验证。

  4. 在 Grafana 终结点中,转到“配置”>“数据源”>“Azure 数据资源管理器”

  5. 检查所列出的关于“Azure 云”、“群集 URL”、“目录(租户) ID”、“应用程序(客户端) ID”和“客户端密码”的信息是否正确。 如有必要,请创建新密钥以添加为客户端密码。

  6. 在页面顶部,可以找到指导你完成以下授权的说明:授予此 Microsoft Entra 应用所需的权限以读取 Azure 数据资源管理器数据库。

  7. 确保 Azure 数据资源管理器实例不具有阻止访问托管 Grafana 的防火墙。 Azure 数据资源管理器数据库需要向公共 Internet 公开。

仪表板导入失败

从库或 JSON 文件导入仪表板时,用户收到错误。 显示一条错误消息:仪表板已被其他人更改。

解决方案:编辑仪表板名称或 UID

大多数情况下,发生此错误是因为用户尝试导入的仪表板具有与另一个仪表板相同的名称或唯一标识符 (UID)。

若要检查托管 Grafana 实例是否已有具有相同名称的仪表板,请执行以下操作:

  1. 在 Grafana 终结点中,从左侧导航菜单中选择“仪表板”,然后选择“浏览”。

  2. 查看仪表板名称。

    浏览器的屏幕截图。仪表板:浏览。

  3. 重命名旧仪表板或新仪表板。

  4. 还可以通过编辑 JSON 文件中名为 uid 的字段,在导入 JSON 仪表板之前编辑其 UID。

更新托管标识角色分配后没有任何变化

禁用系统分配的托管标识后,使用托管标识配置的数据源仍然可以从 Azure 服务访问数据。

解决方案:等待更改生效

使用托管标识配置的数据源可能仍能够在长达 24 小时内从 Azure 服务访问数据。 在 Azure 托管 Grafana 的托管标识中更新角色分配时,由于托管标识的限制,此更改可能需要长达 24 小时才能生效。