监视 Azure SignalR 服务

本文介绍:

  • 可以为此服务收集的监视数据的类型。
  • 分析这些数据的方法。

注意

如果已熟悉此服务和/或 Azure Monitor,并且只想了解如何分析监视数据,请参阅本文末尾附近的“分析”部分。

如果具有依赖于 Azure 资源的关键应用程序和业务流程,则需要监视并获取系统的警报。 Azure Monitor 服务会从系统的每个组件收集并聚合指标和日志。 Azure Monitor 提供可用性、性能和复原能力视图,并在出现问题时向你发送通知。 可以使用 Azure 门户、PowerShell、Azure CLI、REST API 或客户端库来设置和查看监视数据。

资源类型

Azure 使用资源类型和 ID 的概念来标识订阅中的所有内容。 同样的,Azure Monitor 根据资源类型(也称为“命名空间”)将核心监视数据组织为指标和日志。 不同的指标和日志可用于不同的资源类型。 服务可能与多种资源类型关联。

资源类型也是 Azure 中运行的每个资源的资源 ID 的一部分。 例如,虚拟机的一种资源类型是 Microsoft.Compute/virtualMachines。 有关服务及其关联资源类型的列表,请参阅资源提供程序

有关 Azure SignalR 服务的资源类型的详细信息,请参阅 Azure SignalR 服务监视数据参考

数据存储

对于 Azure Monitor:

  • 指标数据存储在 Azure Monitor 指标数据库中。
  • 日志数据存储在 Azure Monitor 日志存储中。 Log Analytics 是 Azure 门户中可以查询此存储的工具。
  • Azure 活动日志是一个单独的存储区,在 Azure 门户中有自己的接口。

可以选择将指标和活动日志数据路由到 Azure Monitor 日志存储。 然后,可以使用 Log Analytics 查询数据并将其与其他日志数据关联。

许多服务可以使用诊断设置将指标和日志数据发送到 Azure Monitor 外部的其他存储位置。 示例包括 Azure 存储、托管合作伙伴系统以及使用事件中心的非 Azure 合作伙伴系统

有关 Azure Monitor 如何存储数据的详细信息,请参阅 Azure Monitor 数据平台

Azure SignalR 服务日志存储在诊断设置中配置的存储帐户中。 系统会自动创建一个名为 insights-logs-alllogs 的容器来存储资源日志。 在容器中,日志存储在文件 resourceId=/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/XXXX/PROVIDERS/MICROSOFT.SIGNALRSERVICE/SIGNALR/XXX/y=YYYY/m=MM/d=DD/h=HH/m=00/PT1H.json 中。 基本上,路径是 resource IDDate Time 的组合。 日志文件按 hour 拆分。 因此,分钟值始终为 m=00

所有日志均以 JavaScript 对象表示法 (JSON) 格式存储。 以下代码是存档日志 JSON 字符串的示例:

{
    "properties": {
        "message": "Entered Serverless mode.",
        "type": "ConnectivityLogs",
        "collection": "Connection",
        "connectionId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "userId": "User",
        "transportType": "WebSockets",
        "connectionType": "Client"
    },
    "operationName": "ServerlessModeEntered",
    "category": "AllLogs",
    "level": "Informational",
    "callerIpAddress": "xxx.xxx.xxx.xxx",
    "time": "2019-01-01T00:00:00Z",
    "resourceId": "/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/XXXX/PROVIDERS/MICROSOFT.SIGNALRSERVICE/SIGNALR/XXX",
    "location": "xxxx"
}

存储目标的字段名称与 Log Analytics 的字段名称略有不同。 有关存储表与 Log Analytics 表之间的字段名称映射的详细信息,请参阅资源日志表映射

Azure Monitor 平台指标

Azure Monitor 为大多数服务提供平台指标。 这些指标是:

  • 针对每个命名空间单独定义。
  • 存储在 Azure Monitor 时序指标数据库中。
  • 是轻型数据,并且能够支持准实时警报。
  • 用于跟踪资源随时间推移的性能变化。

集合:Azure Monitor 会自动收集平台指标。 不需要任何配置。

路由:通常还可将平台指标路由到 Azure Monitor 日志/Log Analytics,从而可以使用其他日志数据对其进行查询。 有关详细信息,请参阅指标诊断设置。 有关如何为服务配置诊断设置,请参阅在 Azure Monitor 中创建诊断设置

有关可以为 Azure Monitor 中的所有资源收集的所有指标的列表,请参阅 Azure Monitor 中支持的指标

Azure SignalR 服务指标

有关 Azure SignalR 服务的所有可用指标的列表,请参阅 Azure SignalR 服务监视数据参考

消息计数粒度

最小消息计数粒度为 2 KB 出站数据流量。 如果客户端在采样时段内发送一些小消息或不经常发送消息,其总数量少于 2 KB,则消息计数为零 (0),即使消息已发送。 检查数量或大小较小的消息的方法是使用指标“出站流量”,即发送的字节数

系统错误和用户错误

“用户错误”和“系统错误”指标是失败的已尝试操作(例如,连接,或发送消息)所占百分比。 系统错误是内部系统逻辑中的故障。 用户错误通常是应用程序错误,往往与网络有关。 通常,系统错误数百分比应该很低(接近于零)。

重要

在某些情况下,用户错误率非常高,尤其是在无服务器模式下。 在某些浏览器中,当用户关闭网页时,SignalR 客户端不会正常关闭。 连接可能保持打开状态但无响应,直到 Azure SignalR 服务最终因超时而将其关闭。 超时关闭将计入“用户错误”指标。

适合自动缩放的指标

“连接配额利用率”和“服务器负载”显示与当前分配的单位计数相比的利用率百分比或负载。 这些指标通常在自动缩放规则中使用。 例如,如果当前的分配为 1 个单位,而与服务建立了 750 个连接,则连接配额利用率为 750/1000 = 0.75。 服务器负载的计算方式与此类似,它使用计算容量的值。 有关详细信息,请参阅自动缩放 Azure SignalR 服务的单元

注意

自动缩放只仅限高级层的功能。

Azure Monitor 资源日志

借助资源日志,可以深入了解 Azure 资源已执行的操作。 日志是自动生成的,但必须将日志路由到 Azure Monitor 日志以保存或查询它们。 日志按类别进行组织。 给定的命名空间可能具有多个资源日志类别。

收集:在创建诊断设置并将日志路由到一个或多个位置之前,不会收集和存储资源日志。 创建诊断设置时,请指定要收集的日志类别。 可以通过多种方式创建和维护诊断设置,包括 Azure 门户、编程方式以及通过 Azure Policy。

路由:建议的默认设置是将资源日志路由到 Azure Monitor 日志,以便可以使用其他日志数据查询它们。 也可使用其他位置(例如 Azure 存储、Azure 事件中心和某些 Microsoft 监视合作伙伴)。 有关详细信息,请参阅 Azure 资源日志资源日志目标

有关收集、存储和路由资源日志的详细信息,请参阅 Azure Monitor 中的诊断设置

Azure Monitor 中的所有资源日志都具有相同的标头字段,后跟特定于服务的字段。 Azure Monitor 资源日志架构概述了常见架构。

资源日志类别

资源日志分组到类别组中。 类别组是不同日志的集合,可帮助你实现不同的监视目标。 Azure SignalR 支持连接性日志、消息传送日志和 Http 请求日志。

连接性日志

连接性日志提供 SignalR 中心连接的详细信息。 例如:

  • 用户 ID、连接 ID 和传输类型等基本信息
  • 连接、断开连接和中止事件等事件信息

因此,连接性日志有助于解决与连接相关的问题。 有关与典型连接相关的故障排除,请参阅连接相关问题

消息传递日志

消息传递日志为通过 SignalR 服务接收和发送的 SignalR 中心消息提供跟踪信息,例如,消息的跟踪 ID 和消息内容。 跟踪 ID 和消息类型也记录在应用服务器中。 通常,在消息到达或离开服务或服务器时,会对其进行记录。 因此,消息传递日志有助于解决与消息相关的问题。 有关与典型消息相关的故障排除,请参阅消息相关问题

注意

针对每条消息都会生成这种类型的日志。 如果消息频繁发送,则消息传递日志可能会影响 SignalR 服务的性能。 但是,可以选择不同的收集行为,以最大程度地降低性能影响。 请参阅资源日志收集行为

HTTP 请求日志

Http 请求日志提供有关 Azure SignalR 收到的 Http 请求的详细信息,例如,请求的状态代码和 URL。 HTTP 请求日志有助于排查与请求相关的问题。

有关可用的资源日志类别、其关联的 Log Analytics 表以及 Azure SignalR 服务的日志架构,请参阅 Azure SignalR 服务监视数据参考

资源日志收集行为

使用资源日志(尤其是消息传递日志)有两种典型方案。

  • “消息质量”记录消息是否已成功发送或接收,或者记录通过 SignalR 服务传递的每条消息。
  • “性能”记录消息延迟,或跟踪若干个连接中而不是所有连接中的消息。

因此,SignalR 服务提供两种类型的收集行为:

  • 全部收集:收集所有连接中的日志。
  • 部分收集:收集某些特定连接中的日志。

有关资源日志收集行为的更多详细信息以及如何对其进行配置,请参阅资源日志收集行为

Azure 活动日志

活动日志包含订阅级事件,这些事件跟踪从资源外部看到的每个 Azure 资源的操作;例如,创建新资源或启动虚拟机。

收集:活动日志事件会自动生成并收集在单独的存储中,以便在 Azure 门户中查看。

路由:可将活动日志数据发送到 Azure Monitor 日志,以便可以将它们与其他日志数据一起进行分析。 也可使用其他位置(例如 Azure 存储、Azure 事件中心和某些 Microsoft 监视合作伙伴)。 有关如何路由活动日志的详细信息,请参阅 Azure 活动日志概述

分析监视数据

有许多工具可用于分析监视数据。

Azure Monitor 工具

Azure Monitor 支持以下基本工具:

支持更复杂可视化效果的工具包括:

  • 仪表板,它支持将不同类型的数据合并到 Azure 门户的单个窗格中。
  • 工作簿,它们是可在 Azure 门户中创建的可自定义报表。 工作簿可以包括文本、指标和日志查询。
  • Power BI,它是一项业务分析服务,可提供跨各种数据源的交互式可视化效果。 可将 Power BI 配置为自动从 Azure Monitor 导入日志数据,以利用这些可视化效果。

Azure Monitor 导出工具

可以使用以下方法将数据从 Azure Monitor 中提取到其他工具中:

要开始使用适用于 Azure Monitor 的 REST API,请参阅 Azure 监视 REST API 演练

Kusto 查询

可使用 Kusto 查询语言 (KQL) 来分析 Azure Monitor 日志/Log Analytics 存储中的监视数据。

重要

在门户的服务菜单中选择“日志”时,会打开 Log Analytics,并且其查询范围设置为当前服务。 此范围意味着日志查询将仅包含来自该资源类型的数据。 如果希望运行的查询包含来自其他 Azure 服务的数据,请从“Azure Monitor”菜单中选择“日志”。 有关详细信息,请参阅 Azure Monitor Log Analytics 中的日志查询范围和时间范围

有关任何服务的常见查询列表,请参阅 Log Analytics 查询接口

注意

存储目标的查询字段名称与 Log Analytics 的字段名称略有不同。 有关存储表与 Log Analytics 表之间的字段名称映射的详细信息,请参阅资源日志表映射

警报

在监视数据中发现特定情况时,Azure Monitor 警报会主动向你发出通知。 有了警报,你就可以在客户注意到你的系统中的问题之前找出和解决问题。 有关详细信息,请参阅 Azure Monitor 警报

Azure 资源的常见警报具有许多来源。 有关 Azure 资源常见警报的示例,请参阅示例日志警报查询Azure Monitor 基线警报 (AMBA) 站点提供了实现重要平台指标警报、仪表板和指南的半自动化方法。 该站点适用于持续扩展的 Azure 服务子集,包括属于 Azure 登陆区域 (ALZ) 的所有服务。

通用警报模式对 Azure Monitor 警报通知的使用体验进行了标准化。 有关详细信息,请参阅常见警报架构

警报类型

可以针对 Azure Monitor 数据平台中的任何指标或日志数据源发出警报。 警报具有许多不同类型,具体取决于要监视的服务以及要收集的监视数据。 不同类型的警报各有优缺点。 有关详细信息,请参阅选择正确的监视警报类型

以下列表介绍了可以创建的 Azure Monitor 警报类型:

  • 指标警报会定期评估资源指标。 指标可以是平台指标、自定义指标、Azure Monitor 中的日志转换为的指标或 Application Insights 指标。 指标警报还可以应用多个条件和动态阈值。
  • 日志警报支持用户使用 Log Analytics 查询按照预定义的频率评估资源日志。
  • 当发生匹配所定义条件的新活动日志事件时,会触发活动日志警报。 资源运行状况警报和服务运行状况警报是报告服务和资源运行状况的活动日志警报。

某些 Azure 服务还支持智能检测警报建议的预警规则

对于某些服务,你可以通过将相同的指标警报规则应用于同一 Azure 区域中的多个相同类型资源,进行大规模的监视。 将为每个受监视的资源发送单独通知。 有关支持的 Azure 服务和云,请参阅使用一个警报规则监视多个资源

Azure SignalR 服务警报规则

下表列出了 Azure SignalR 服务的一些建议警报规则。 这些警报只是示例。 可以为 Azure SignalR 服务监视数据参考中列出的任何指标、日志条目或活动日志条目设置警报。

警报类型 条件 说明
平台指标 连接配额利用率 每当最大连接配额利用率大于动态阈值时
平台指标 删除 SignalR 每当活动日志包含 Category='Administrative'且 Signal name='Delete SignalR (SignalR)' 的事件时

顾问建议

对于某些服务,如果在资源操作期间出现严重情况或即将发生变化,则门户中的服务“概述”页面上会显示一个警报。 可以在左侧菜单“监视”下的“顾问建议”中找到警报的详细信息和建议修补程序。 在正常操作期间,不会显示任何顾问建议。

有关 Azure 顾问的详细信息,请参阅 Azure 顾问概述