监视整个解决方案

已完成

本单元将介绍监视整个解决方案。

简介

在当今复杂的计算环境中实现监视,需要从分布式系统的每一层和每一个组件中收集操作数据。 需要对这些数据执行深入的见解分析,并将与不同透视合并,这样才能为组织中的众多利益干系人提供支持。

Azure Monitor 从不同类型的源收集数据,可用于分析、可视化和警报。 让你深入洞察所有受监视的资源,甚至是其他服务在 Azure Monitor 中存储的数据。

Log Analytics

日志是系统中发生的事件。 日志可以包含不同类型的数据,可以是有时间戳的结构化或自由格式文本。 当环境中的事件生成日志条目时,可以偶发性地创建日志;负载较重的系统通常会生成更多的日志卷。

Azure Monitor 中的日志对于识别问题的根本情况非常有用。 Azure Monitor 日志收集的数据存储在一个或多个 Log Analytics 工作区中。 可使用日志查询从 Log Analytics 工作区检索数据,该查询是对处理数据和返回结果的只读请求。 日志查询采用 Kusto 查询语言 (KQL) 编写,这种语言是 Azure 数据资源管理器使用的查询语言。

注意

你的 Azure Spring Apps 示例应用程序已使用 Log Analytics 工作区进行了设置。 有关 KQL 语法的详细信息,请参阅本培训结束时的“摘要”单元。

使用 Log Analytics

实际上有三种方法可用于访问应用程序的日志:Azure 存储、Azure 事件中心和 Log Analytics。 在此,我们将重点介绍 Log Analytics,因为它是最常见的一种方法,并集成到 Azure Spring Apps 中以实现指标监视。

重要

Azure Monitor 中的日志数据引入时间最多可能需要 15 分钟。 如果在 Log Analytics 中找不到数据,则可能需要额外的时间来引入 Azure Spring Apps 日志数据。

  1. 打开 Azure 门户

  2. 从 Azure 服务列表中选择“Azure Spring Apps”

  3. 选择你的 Azure Spring Apps 实例

  4. 接下来,在“监视”部分下选择“日志”。

  5. 在“查询”搜索框中:

    Screenshot showing query for Azure Spring Apps logs.

    • 查看日志,请运行查询,例如:

      AppPlatformLogsforSpring
      | limit 50
      
    • 查看指标,请输入查询,例如:

      AzureMetrics
      | limit 50
      
    • 可以通过设置筛选条件来搜索特定应用程序或实例的日志:

      AppPlatformLogsforSpring
      | where ServiceName == "YourServiceName" and AppName == "YourAppName" and InstanceName == "YourInstanceName"
      | limit 50
      

分析应用程序日志

应用程序日志提供有关应用程序的运行状况、性能等的关键信息和详细日志。 下一节将介绍一些查询,帮助你理解应用程序的当前和过去状态。

显示 Azure Spring Apps 中的应用程序日志

  1. 打开 Azure 门户

  2. 从 Azure 服务列表中选择“Azure Spring Apps”

  3. 选择你的 Azure Spring Apps 实例

  4. 接下来,在“监视”部分下选择“日志”。

  5. 在“查询”搜索框中:

    • 若要查看中 Azure Spring Apps 的应用程序日志列表(按时间排序,首先显示最新日志),请运行以下查询:

      AppPlatformLogsforSpring
      | project TimeGenerated , ServiceName , AppName , InstanceName , Log
      | sort by TimeGenerated desc
      
    • 若要查看提及错误或异常的未排序日志条目,请运行以下查询:

      AppPlatformLogsforSpring
      | project TimeGenerated , ServiceName , AppName , InstanceName , Log
      | where Log contains "error" or Log contains "exception"
      
    • 若要创建显示应用程序记录的错误和异常数的饼图,请运行以下查询:

      AppPlatformLogsforSpring
      | where TimeGenerated > ago(1h)
      | where Log contains "error" or Log contains "exception"
      | summarize count_per_app = count() by AppName
      | sort by count_per_app desc
      | render piechart
      

数据库监视

监视服务器的相关数据有助于排查工作负荷故障及优化工作负荷。 Azure Database for MySQL 提供了各种指标来帮助用户深入了解服务器的行为。

在 Azure Database for MySQL 中,慢查询日志可供用户使用。 不支持访问事务日志。 可以使用慢查询日志来查明性能瓶颈以进行故障排除。

在我们的示例应用程序中,慢速查询日志设置为通过诊断日志经管道传输到 Azure Monitor 日志,你可以对慢查询执行更多分析。 下面是可帮助你入门的示例查询:

重要

Azure Monitor 中的 MySQL 日志数据引入时间最多可能需要 30 分钟。 如果在 Log Analytics 中找不到数据,则可能需要额外的时间来引入 MySQL 日志数据。

  1. 登录到 Azure 门户。

  2. 选择用于 Azure Spring Apps 的 Azure Database for MySQL 服务器

  3. 接下来,在“监视”部分下选择“日志”。

    Screenshot showing query for queries longer than 1 second

  4. 在“查询”搜索框中,

    • 检索超过 1 秒的所有查询

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      
    • 列出五条最长的查询

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      | order by query_time_d desc
      | take 5
      
    • 按最小值、最大值、平均值和标准偏差查询时间汇总慢查询

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by LogicalServerName_s
      
    • 绘制特定服务器上的慢速查询的分布图

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m)
      | render timechart
      
  5. 审核日志还可用于跟踪数据库级活动,通常用于实现合规性。 审核日志与 Azure Monitor 诊断日志集成。 在示例中,我们已在 MySQL 服务器上启用了审核日志,由此你便可以进一步分析已审核的事件。

    • 下面是一个示例查询,它检索常规 MySQL 日志:

      AzureDiagnostics
      | where Category == 'MySqlAuditLogs' and event_class_s == "general_log"
      | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s 
      | order by TimeGenerated desc
      

UI 监视

如果将 Application Insights 添加到页面脚本,你可以获取页面加载和 AJAX 调用的时间、浏览器异常和 AJAX 失败的计数和详细信息,以及用户和会话计数。 所有这些指标可按页面、客户端 OS 和浏览器版本、地理位置和其他维度细分。 可以针对失败计数或页面加载缓慢情况设置警报。 并且通过在 JavaScript 代码中插入跟踪调用,可以跟踪网页应用程序的不同功能的使用情况。 可以在任何网页中使用 Application Insights - 刚刚添加了 JavaScript 的简短片段。 如果 Web 服务是 Java,则你可以将服务器端 SDK 与客户端 JavaScript SDK 结合使用,以了解应用的性能。

注意

有关 UI 监视的详细信息,请参阅本培训结束时的“摘要”单元。