配置自承载集成运行时 (SHIR) 以进行 Log Analytics 数据收集

适用于:Azure 数据工厂 Azure Synapse Analytics

先决条件

此方法需要可用的 Log Analytics 工作区。 建议记下 Log Analytics 工作区的工作区 ID 和身份验证密钥,因为在某些情况下可能需要它。 此解决方案将增加要发送到 Log Analytics 工作区的数据,并且会对总体成本产生轻微影响。 请继续阅读,详细了解如何将该数据量保持在最小值。

目标和方案

将事件和性能计数器数据集中到 Log Analytics 工作区,托管 SHIR 的虚拟机必须先经过相应的检测。 在下面的两个主要方案之间选择。

检测本地虚拟机

在 Windows 计算机上安装 Log Analytics 代理一文介绍了如何在通常托管在本地的虚拟机上安装客户端。 这可以是物理服务器,也可以是托管在客户管理的虚拟机监控程序上的虚拟机。 如先决条件部分所述,安装 Log Analytics 代理时,必须提供 Log Analytics 工作区 ID 和工作区密钥才能完成连接。

配置事件日志和性能计数器捕获

此步骤将重点介绍如何配置要发送到 Log Analytics 的事件查看器日志和性能计数器。 无论代理是如何部署的,下面所述的步骤都是通用的。

选择事件查看器日记

首先,必须收集与 SHIR 相关的事件查看器日记,如在 Azure Monitor 中使用 Log Analytics 代理收集 Windows 事件日志数据源一文所述。

必须注意的是,使用该界面选择事件日志时,通常不会看到计算机上可能存在的所有日记。 因此,执行 SHIR 监视所需的两个日记不会显示在此列表中。 如果键入的日志名称与在本地虚拟机上显示的名称完全相同,该名称将被捕获并发送到 Log Analytics 工作区。

必须配置的事件日记名称为:

  • 连接器 - Integration Runtime
  • Integration Runtime

选择 SHIR 相关日志的屏幕截图,其中选中了错误和警告。

重要

如果部署了许多 SHIR 主机并且有大量的扫描,则将“信息”级别保持选中状态会显著增加数据量。 强烈建议仅保留“错误”和“警告”。

选择性能计数器

在同一配置窗格中,可以单击“Windows 性能计数器”,以选择要发送到 Log Analytics 的各个性能计数器。

重要

请记住,性能计数器在本质上是连续数据流。 因此,必须考虑数据收集对 Azure Monitor/Log Analytics 部署的总成本的影响。 除非已准予允许的数据引入预算,并且已允许持续数据引入并为其安排了预算,否则收集性能计数器只应为已定义的时段进行配置,以建立性能基线。

在该界面中,首次配置它时,建议使用建议的计数器集。 选择适用于要执行的性能分析类型的计数器。 “%CPU”和“可用内存”是通常受监视的计数器,但在数据量较大且带宽或执行时间受限的情况下,“网络带宽消耗”等其他计数器可能很有用。

Azure 门户中的计数器选择界面的屏幕截图。

在 Log Analytics 中查看事件和性能计数器数据

要了解如何使用 Kusto 查询语言 (KQL) 来分析 Azure Monitor 日志 / Log Analytics 存储中的监视数据,请参阅 Kusto 查询

保存遥测数据的两个表分别称为 Perf 和 Event。 以下查询会检查行计数,以查看是否有数据流入。 这会确认上述检测是否正常工作。

示例 KQL 查询

检查行计数

(
        Event 
        | extend TableName = "Event"
        | summarize count() by TableName
)     
| union
(     
        Perf
        | extend TableName = "Perf"
        | summarize count() by TableName
)

查询事件

检索前 10 个事件行
Event
| take 10
按消息严重性检索事件计数
Event
| summarize count() by EventLevelName
按消息严重性呈现计数饼图
Event
| summarize count() by EventLevelName
| render piechart 
检索具有特定文本字符串的所有错误

此处,我们将搜索所有包含单词“disconnected”的消息。

Event
| where RenderedDescription has "disconnected"
在不知道架构的情况下对关键字进行多表搜索

当用户不知道信息包含于哪个列时,该搜索命令很有用。 此查询从至少有一个包含该搜索词的列的指定表中返回所有包含该搜索词的行。 在此示例中,该单词为“disconnected”。

search in (Perf, Event) "disconnected"
从一个特定日志日记检索所有事件

在本示例中,我们将查询范围缩小到名为“连接器 – Integration Runtime”的日志日记。

Event 
| where EventLog == "Connectors - Integration Runtime"
使用时间跨度限制查询结果

此查询使用与上面相同的查询,但将结果限制为发生于 2 天以内的事件。

Event 
| where EventLog      == "Connectors - Integration Runtime"
  and   TimeGenerated >= ago(2d)

查询性能计数器数据

检索前 10 个性能计数器读数
Perf
| take 10
使用时间约束检索特定计数器
Perf
| where     TimeGenerated >= ago(24h)
        and ObjectName    == "Network Adapter"
        and InstanceName  == "Mellanox ConnectX-4 Lx Virtual Ethernet Adapter"
        and CounterName   == "Bytes Received/sec"

性能计数器在本质上是分层的,因此请注意在查询中包含足够多的“where”,以便仅选择所需的特定计数器。

检索按过去 24 小时的 30 分钟切片分箱的给定计数器的第 95 百分位

此示例是特定网络适配器的所有计数器。

Perf
| where     TimeGenerated >= ago(24h)
        and ObjectName    == "Network Adapter"
        and InstanceName  == "Mellanox ConnectX-4 Lx Virtual Ethernet Adapter"
| project TimeGenerated, Computer, ObjectName, InstanceName, CounterName, CounterValue
| summarize percentile(CounterValue, 95) by bin(TimeGenerated, 30m), Computer, ObjectName, InstanceName, CounterName
使用变量实现代码可重用性

这里,我们使对象名称和计数器名称成为变量,因此,我们以后不必更改 KQL 查询正文即可更改这些选择。

let pObjectName  = "Memory"; // Required to select the right counter
let pCounterName = "Available MBytes"; // Required to select the right counter
Perf
| where Type == "Perf" and ObjectName == pObjectName and CounterName == pCounterName
| project TimeGenerated, Computer, CounterName, CounterValue
| order by TimeGenerated asc 
| summarize Value=max(CounterValue) by CounterName, TimeStamps=TimeGenerated