练习 - 创建基本 Azure Monitor 日志查询,从日志数据中提取信息

已完成

该运营团队目前未充分掌握其系统的信息,无法有效诊断和解决问题。 为解决此问题,该团队使用公司的 Azure 服务配置了一个 Azure Monitor 工作区。 团队可运行 Kusto 查询来获取系统的状态,并尝试确定任何可能出现的问题的原因。

具体而言,该团队对监视安全事件感兴趣,希望检查是否有尝试入侵系统的行为。 攻击者可能会尝试操纵系统上运行的应用程序,因此该团队还想要收集应用程序数据以供进一步分析。 攻击者还可能尝试停止构成系统的计算机,因此该团队希望检查停止和重启计算机的方式和时间。

在本练习中,你将练习针对其表、日志和查询中包含示例数据的演示项目执行 Azure 日志查询。

创建基本 Azure Monitor 日志查询,从日志数据中提取信息

让我们使用 Azure 演示日志窗格来练习编写查询。 演示项目工作区已预先填充示例数据。 Azure 通过一种称为 KQL(Kusto 查询语言)的语言,提供优化的类似 SQL 的查询以及针对其数据的可视化选项。

  1. 打开日志演示环境。 在左上角的“新查询 1”下,可以找到标识查询工作区的“演示”(或范围)。 此窗格左侧包含几个选项卡:表、查询、函数。 右侧有一个用于创建或编辑查询的暂存器。

  2. 在“新查询 1”选项卡上,在暂存器的第一行输入一个基本查询。 该查询会检索最近 10 个安全事件的详细信息。

    SecurityEvent
        | take 10
    
  3. 在命令栏中,选择“运行”以执行查询,然后查看结果。 可以展开结果窗格中的每一行以获取更多信息。

  4. 通过向查询添加筛选器,以按时间对数据进行排序:

    SecurityEvent
        | top 10 by TimeGenerated
    
  5. 添加筛选子句和时间范围。 运行此查询以提取在 30 分钟以前创建且级别不小于 10 的记录:

    SecurityEvent
        | where TimeGenerated < ago(30m)
        | where toint(Level) >= 10
    
  6. 运行以下查询以在 AppEvents 表中搜索过去 24 小时内调用的 Clicked Schedule Button 事件的记录:

    AppEvents 
        | where TimeGenerated > ago(24h)
        | where Name == "Clicked Schedule Button"
    
  7. 运行以下查询可显示过去 3 周内,每周生成检测信号事件的不同计算机的数量。 结果显示为条形图:

    Heartbeat
        | where TimeGenerated >= startofweek(ago(21d))
        | summarize dcount(Computer) by endofweek(TimeGenerated) | render barchart kind=default
    

使用预定义的 Azure 日志查询从日志数据中提取信息

除了从头开始编写查询外,运营团队还可以利用 Azure 日志中的预定义查询,以回答与资源的运行状况、可用性、使用情况和性能相关的常见问题。

  1. 使用命令栏中的“时间范围”参数设置自定义范围。 选择从一月到今天的范围内的月份、年份和日期。 可以设置自定义时间并将其应用于任何查询。

  2. 在左侧工具栏上,选择“查询”。 在左侧菜单的下拉列表中,可以查看按“类别”、“查询类型”、“资源类型”、“解决方案”或“主题”分组的示例查询列表

    侧窗格中“查询”选项卡下的“分组依据”下拉列表选项的屏幕截图。

  3. 在下拉列表中,选择“类别”,然后选择“IT 与管理工具”

  4. 在搜索框中,输入“跨计算机的非重复缺失更新”。 在左窗格中双击查询,然后选择“运行”。 此时将会再次显示“日志”窗格,查询会返回一个列表,其中包括将日志发送到工作区的虚拟机中缺失的 Windows 更新。

    注意

    还可以从“日志”窗格运行这一相同的查询。 在左侧窗格中,选择“查询”选项卡,然后在“分组依据”下拉列表中,选择“类别”。 现在向下滚动列表,展开“IT 和管理工具”,然后双击“跨计算机的非重复缺失更新”。 选择“运行”以运行查询。 在左侧窗格中选择预定义查询时,查询代码将追加到暂存器中存在的任何查询。 请记住在打开或添加要运行的新查询之前清除暂存器。

  5. 在左窗格中,清除搜索框。 选择“查询”,然后在“分组依据”下拉列表中,选择“类别”。 展开“Azure Monitor”,然后双击“当前计算机可用性”。 选择“运行”。 此查询创建了一张时序图表,其中包含过去一天中每小时向工作区发送日志的唯一 IP 地址数量。

  6. 在“分组依据”下拉列表中,选择“主题”,向下滚动以展开“函数应用”,然后双击“显示函数应用中的应用程序日志”。 选择“运行”。 此查询返回应用程序日志列表,并按时间排序,首先显示最新的日志。

从此处使用的 Kusto 查询会注意到,可以将查询轻松定位到特定的时间范围、事件级别或事件日志类型。 安全团队可轻松地检查检测信号来确定服务器何时不可用(这可能表示遭到拒绝服务攻击)。 如果团队发现服务器不可用的时间,可在安全日志中查询该时间前后的事件,以诊断中断情况是否由攻击引起。 此外,预定义的查询还可以评估 VM 的可用性、标识缺少的 Windows 更新并检查防火墙日志,以查看被拒绝的目标 VM 的网络流量。