监视 Azure 事件中心

当你的关键应用程序和业务流程依赖于 Azure 资源时,你需要监视这些资源的可用性、性能和操作。 本文介绍了 Azure 事件中心生成的监视数据,以及如何使用 Azure Monitor 对此数据进行分析和发出警报。

说明是 Azure Monitor?

Azure 事件中心使用 Azure Monitor(在 Azure 中是完整的堆栈监视服务)创建监视数据。 Azure Monitor 提供了一组用于监视 Azure 资源的完整功能。 它还可以监视其他云和本地的资源。

一开始可以阅读使用 Azure Monitor 监视 Azure 资源一文,其中介绍了以下概念:

  • 说明是 Azure Monitor?
  • 与监视相关的成本
  • 监视 Azure 中收集的数据
  • 配置数据收集
  • Azure 中用于分析监视数据并就其发出警报的标准工具

本文中的以下各部分将介绍从 Azure 事件中心收集的特定数据。 这些部分还提供了使用 Azure 工具配置数据收集和分析此数据的示例。

提示

若想了解与 Azure Monitor 相关的成本,请参阅使用情况和估计成本。 若要了解数据在 Azure Monitor 中显示需要花多长时间,请参阅 日志数据引入时间

监视来自 Azure 事件中心的数据

Azure 事件中心收集与监视 Azure 资源中的数据中所述的其他 Azure 资源相同的监视数据。

有关 Azure 事件中心创建的日志和指标的详细参考,请参阅 Azure 事件中心监视数据参考

收集和路由

平台指标和活动日志会自动收集和存储,但可以使用诊断设置将其路由到其他位置。

在创建诊断设置并将其路由到一个或多个位置之前,不会收集和存储资源日志。

有关使用 Azure 门户、CLI 或 PowerShell 创建诊断设置的详细过程,请参阅创建诊断设置以收集 Azure 中的平台日志和指标。 创建诊断设置时,请指定要收集的日志类别。 Azure 事件中心的类别在 Azure 事件中心监视数据参考中列出。

注意

Azure Monitor 不会将维度包括在在发送到目标(如 Azure 存储、Azure 事件中心、Log Analytics 等)的导出指标数据中。

Azure 存储

如果你使用 Azure 存储来存储诊断日志记录信息,则信息将存储在名为“insights-insight-logs-operationlogs”和“insights-pt1m”的容器中。 操作日志的示例 URL:https://<Azure Storage account>.blob.core.chinacloudapi.cn/insights-logs-operationallogs/resourceId=/SUBSCRIPTIONS/<Azure subscription ID>/RESOURCEGROUPS/<Resource group name>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<Namespace name>/y=<YEAR>/m=<MONTH-NUMBER>/d=<DAY-NUMBER>/h=<HOUR>/m=<MINUTE>/PT1H.json。 指标日志的 URL 与之类似。

Azure 事件中心

如果你使用 Azure 事件中心来存储诊断日志记录信息,则信息将存储在名为“insights-insight-logs-operationlogs”和“insights-metrics-pt1m”的事件中心实例中 。 还可以选择现有事件中心,但要为其配置诊断设置的事件中心除外。

Log Analytics

如果使用 Log Analytics 存储诊断日志记录信息,这些信息将会存储在名为“AzureDiagnostics” / “AzureMetrics”的表中,或特定于资源的表

重要

启用这些设置需要额外的 Azure 服务(存储帐户、事件中心或 Log Analytics),这可能会增加成本。 若要估算成本,请访问 Azure 定价计算器

注意

启用诊断设置中的指标时,当前发送到存储帐户、事件中心或 log analytics 的信息中并不包含维度信息。

以下部分将讨论可以收集的指标和日志。

分析指标

可以通过从事件中心命名空间主页上的“Azure Monitor”部分选择“指标”,来分析 Azure 事件中心的指标以及其他 Azure 服务的指标。有关收集的平台指标列表,请参阅监视 Azure 事件中心数据参考指标

Metrics Explorer with Event Hubs namespace selected

若要参考,可以查看 Azure Monitor 中所有受支持的资源指标列表。

提示

Azure Monitor 指标数据有效期为 90 天。 但在创建图表时,只直观显示 30 天的数据。 例如,如果想要直观显示 90 天的数据,必须将它拆分成 90 天内包含 30 天的数据的三个图表。

筛选和拆分

对于支持维度的指标,应用筛选器时可以使用维度值。 例如,将设置为 EntityName 的筛选器添加到事件中心的名称。 还可以按维度来拆分指标,将指标的不同部分进行直观比较。 有关筛选和拆分的详细信息,请参阅 Azure Monitor 的高级功能

Image showing filtering and splitting metrics

分析日志

使用 Azure Monitor Log Analytics 需要创建诊断配置,并启用将信息发送到 Log Analytics。 有关详细信息,请参阅收集和路由部分。 Azure Monitor 日志中的数据以表形式存储,每个表包含自己独有的属性集。 Azure 事件中心将数据存储在以下表中:AzureDiagnostics 和 AzureMetrics。

重要

在 Azure 事件中心菜单中选择“日志”时,Log Analytics 随即打开,其查询范围设置为当前工作区。 这意味着日志查询只包含来自该资源的数据。 如果希望运行的查询包含其他数据库或其他 Azure 服务的数据,请从“Azure Monitor”菜单中选择“日志”。 有关详细信息,请参阅 Azure Monitor Log Analytics 中的日志查询范围和时间范围

请参阅 Azure 事件中心监视数据参考,详细了解相关日志和指标。

示例 Kusto 查询

重要

在 Azure 事件中心菜单中选择“日志”时,Log Analytics 随即打开,其查询范围设置为当前 Azure 事件中心命名空间。 这意味着日志查询只包含来自该资源的数据。 如果希望运行包含其他工作区或其他 Azure 服务数据的查询,请从“Azure Monitor”菜单中选择“日志” 。 有关详细信息,请参阅 Azure Monitor Log Analytics 中的日志查询范围和时间范围

以下是可用于帮助监视 Azure 事件中心资源的示例查询:

  • 获取过去 7 天的错误

    AzureDiagnostics
    | where TimeGenerated > ago(7d)
    | where ResourceProvider =="MICROSOFT.EVENTHUB"
    | where Category == "OperationalLogs"
    | summarize count() by "EventName"
    
    
  • 获取过去一小时内生成的运行时审计日志。

    AzureDiagnostics
    | where TimeGenerated > ago(1h)
    | where ResourceProvider =="MICROSOFT.EVENTHUB"
    | where Category == "RuntimeAuditLogs"    
    
  • 获取导致“找不到密钥”错误的密钥保管库的尝试访问。

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.EVENTHUB" 
    | where Category == "Error" and OperationName == "wrapkey"
    | project Message
    
  • 获取使用密钥保管库执行的操作来禁用或还原密钥。

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.EVENTHUB"
    | where Category == "info" and OperationName == "disable" or OperationName == "restore"
    | project Message
    
  • 获取捕获失败及其持续时间(以秒为单位)

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.EVENTHUB"
    | where Category == "ArchiveLogs"
    | summarize count() by "failures", "durationInSeconds"    
    

使用运行时日志

利用 Azure 事件中心,可使用运行时审核日志和应用程序指标日志监视和审核客户端应用程序的数据平面交互。

使用运行时审核日志可以捕获所有数据平面访问操作(如发布或使用事件)的聚合诊断信息。 应用程序指标日志可捕获某些运行时指标(例如使用者滞后时间和活动连接)的聚合数据,这些指标与连接到事件中心的客户端应用程序相关。

注意

运行时审核日志仅在“高级”和“专用”层中可用。

启用运行时日志

在 Azure 门户中,从“事件中心命名空间”页上的“监视”部分选择“诊断设置”,可启用运行时审核日志或应用程序指标日志。 单击“添加诊断设置”,如下所示。

Screenshot showing the Diagnostic settings page.

然后,可以根据需要启用日志类别:RuntimeAuditLogs 或 ApplicationMetricsLogs。
Screenshot showing the selection of RuntimeAuditLogs and ApplicationMetricsLogs.

启用运行时日志后,事件中心将根据诊断设置配置开始收集和存储它们。

发布和使用示例数据

若要在事件中心命名空间中收集示例运行时审核日志,可以使用基于事件中心 SDK (AMQP) 的客户端应用程序或使用任何 Apache Kafka 客户端应用程序发布和使用示例数据。

分析运行时审核日志

可以使用以下示例查询分析收集的运行时审核日志。

AzureDiagnostics
| where TimeGenerated > ago(1h)
| where ResourceProvider == "MICROSOFT.EVENTHUB"
| where Category == "RuntimeAuditLogs"

在执行查询时,应该能够按以下格式获取相应的审核日志。 Image showing the result of a sample query to analyze runtime audit logs.

通过分析这些日志,应该能够审核每个客户端应用程序与事件中心的交互方式。 运行时审核日志参考中定义了与运行时审核日志关联的每个字段。

分析应用程序指标

可以使用以下示例查询分析收集的应用程序指标日志。

AzureDiagnostics
| where TimeGenerated > ago(1h)
| where Category == "ApplicationMetricsLogs"

应用程序指标包括以下运行时指标。 Image showing the result of a sample query to analyze application metrics.

因此,可以使用应用程序指标来监视运行时指标,例如来自指定客户端应用程序的使用者滞后时间或活动连接。 应用程序指标日志参考中定义了与运行时审核日志关联的每个字段。

警报

你可以在事件中心命名空间主页上的“Azure Monitor”部分中选择“警报”,以此访问 Azure 事件中心的警报。 请参阅使用 Azure Monitor 创建、查看和管理指标警报,详细了解如何创建警报。

后续步骤