在 Azure 中使用服务映射解决方案

服务映射自动发现 Windows 和 Linux 系统上的应用程序组件,并映射服务之间的通信。 使用服务映射,可以将服务器视为提供关键服务的互连系统。 服务映射显示服务器、进程、入站和出站连接延迟以及跨任何 TCP 连接的体系结构的端口之间的连接。 除了安装代理之外,不需要配置。

重要

Service Map 将于 2025 年 9 月 30 日停用。 在此日期之前,确保 迁移到 Azure Monitor VM 洞察,以监视服务器、进程、连接的入站和出站延迟,以及任何 TCP 连接架构下的端口之间的连接。

本文介绍如何部署和使用服务映射。 解决方案的先决条件包括:

  • 位于支持区域的 Log Analytics 工作区。
  • 在 Windows 计算机或 Linux 服务器上安装的 Log Analytics 代理,这些计算机或服务器连接到您启用解决方案的同一工作区。
  • 在 Windows 计算机或 Linux 服务器上安装的 依赖项代理

注释

如果已部署服务映射,现在可以在 VM 见解中查看映射,其中包括用于监视 VM 运行状况和性能的更多功能。 若要了解详细信息,请参阅 VM 见解概述。 若要了解服务映射解决方案与 VM 见解映射功能之间的差异,请参阅 此常见问题解答

登录到 Azure

登录到 Azure 门户

启用服务映射

  1. Azure 市场启用服务映射解决方案。 或按照解决方案库中“添加监视解决方案”中描述的过程进行操作。

  2. 在 Windows 上安装 Dependency Agent ,或在要获取数据的每台计算机上安装 Linux 上的 Dependency Agent 。 依赖项代理可以监视与直接邻居的连接,因此可能不需要每台计算机上的代理。

  3. 从 Log Analytics 工作区访问 Azure 门户中的服务映射。 从左窗格中选择 旧解决方案 选项。

    显示在工作区中选择“解决方案”选项的屏幕截图

  4. 从解决方案列表中选择 ServiceMap(workspaceName)。“服务映射 解决方案概述”页上,选择 “服务映射 摘要”磁贴。

    显示“服务映射摘要”磁贴的屏幕截图

用例:使 IT 进程具备依赖关系感知能力

发现

服务映射会自动生成跨服务器、进程和第三方服务的依赖项的常见参考映射。 它发现并映射所有 TCP 依赖项。 它标识出人意料的连接、你依赖的远程第三方系统,以及网络传统暗区(例如 Active Directory)的依赖项。 服务映射发现托管系统尝试建立的失败网络连接。 此信息有助于识别潜在的服务器配置错误、服务中断和网络问题。

事件管理

服务映射通过展示系统如何连接和相互影响,帮助减少问题隔离过程中的不确定性。 除了识别失败的连接之外,它还有助于识别错误配置的负载均衡器、关键服务上意外或过多的负载,以及恶意客户端,例如与生产系统通信的开发人员计算机。 通过将集成工作流与更改跟踪结合使用,还可以查看后端计算机或服务上的更改事件是否解释了事件的根本原因。

迁移保证

通过使用服务映射,可以有效地计划、加速和验证 Azure 迁移,以帮助确保不会留下任何内容,也不会发生意外中断。 您可以:

  • 发现需要一起迁移的所有相互依赖的系统。
  • 评估系统配置和容量。
  • 确定正在运行的系统是仍在为用户提供服务,还是应该作为停用的候选者,而非进行迁移。

移动完成后,可以检查客户端负载和标识,以验证测试系统和客户是否正在连接。 如果子网规划和防火墙定义出现问题,服务地图中的失败连接会指向需要连接的系统。

业务连续性

如果使用 Azure Site Recovery 并需要有关为应用程序环境定义恢复顺序的帮助,服务映射可以自动显示系统如何相互依赖。 此信息有助于确保恢复计划可靠。

通过选择关键服务器或组并查看其客户端,可以确定在还原和可用服务器后要恢复的前端系统。 相反,通过查看关键服务器的后端依赖关系,可以确定在恢复重点系统之前需要恢复的系统。

补丁管理

服务映射通过显示哪些其他团队和服务器依赖于你的服务来增强对系统更新评估的使用。 这样,就可以提前通知它们,然后再关闭系统进行修补。 服务映射还可以通过在服务修补和重启后,显示它们是否可用并正确连接,从而增强修补管理。

映射概述

服务映射代理收集有关其安装服务器上的所有 TCP 连接进程的信息。 他们还收集有关每个进程的入站和出站连接的详细信息。

在左窗格中的列表中,可以选择具有服务映射代理的计算机或组,以在指定的时间范围内可视化其依赖项。 计算机依赖项映射侧重于特定计算机。 它们显示属于该计算机的直接 TCP 客户端或服务器的所有计算机。 计算机组映射显示服务器集及其依赖项。

显示服务映射概述的屏幕截图。

可以在映射中展开计算机,以显示在所选时间范围内具有活动网络连接的正在运行的进程组和进程。 扩展具有服务映射代理的远程计算机以显示进程详细信息时,仅显示与焦点计算机通信的进程。

无代理前端计算机连接到焦点计算机时,其计数显示在所连接进程的左侧。 如果焦点计算机正在连接到没有代理的后端计算机,则后端服务器将包含在服务器端口组中。 此组还包括与同一端口号的其他连接。

默认情况下,服务映射中的映射显示过去 30 分钟的依赖项信息。 您可以使用左上角的时间控件查询最长一小时的历史时间范围的地图,以查看过去依赖项的状态。 例如,你可能希望了解事件期间或发生更改之前它们的外观。 服务映射数据存储在付费工作区中 30 天,免费工作区中存储 7 天。

状态锁屏提醒和边框着色

在每台服务器的底部可能会出现一个状态徽章列表,用于传达有关服务器状态的信息。 徽章表示服务器有来自某个解决方案集成的相关信息。

选择徽章会将您直接带到右侧窗格中的状态详细信息。 当前可用的状态徽章包括警报服务台更改安全更新

根据状态标记的严重性,机器节点边框可以为红色(严重)、黄色(警告)或蓝色(信息)。 颜色表示所有状态徽章中最严重的状态。 灰色边框表示没有状态指示器的节点。

显示状态标识的屏幕截图。

进程组

进程组将与常见产品或服务关联的进程合并到进程组中。 展开机器节点后,它将显示独立进程和进程组。 如果与进程组内进程的入站或出站连接失败,则整个进程组的连接显示为失败。

机器组

计算机组允许你查看以一组服务器为中心的地图,而不仅仅是一组服务器。 通过这种方式,可以在一个映射中看到多层应用程序或服务器群集的所有成员。

用户选择哪些服务器一起属于组,然后选择组的名称。 然后,可以选择查看所有组及其所有进程和连接。 还可以仅查看与组其他成员直接相关的进程和连接。

显示计算机组的屏幕截图。

创建计算机组

若要创建组,请执行以下操作:

  1. 在“ 计算机” 列表中选择所需的计算机,然后选择“ 添加到组”。

    显示创建组的屏幕截图。

  2. 选择“ 新建 ”并为组指定名称。

    显示命名组的屏幕截图。

注释

计算机组限制为 10 台服务器。

查看一个组

创建一些组后,可以查看它们。

  1. 选择“ ”选项卡。

    显示“组”选项卡的屏幕截图。

  2. 选择组名称以查看该计算机组的映射。

    显示计算机组映射的屏幕截图。

    属于该组的计算机在地图中以白色边框显示。

  3. 展开组以列出构成计算机组的计算机。

    显示计算机组计算机的屏幕截图。

按进程筛选

可以切换地图视图以显示组中的所有进程和连接,或仅显示与计算机组直接相关的进程和连接。 默认视图显示所有进程。

  1. 选择地图上方的筛选器图标以更改视图。

    显示筛选组的屏幕截图。

  2. 选择 “所有进程 ”以查看映射,其中包含组中每台计算机上的所有进程和连接。

    显示计算机组“所有进程”选项的屏幕截图。

  3. 若要创建简化的视图,请更改视图以仅显示 连接组的进程。 然后,将地图缩小为仅显示直接与组内其他机器相连的进程和连接。

    显示计算机组筛选进程的屏幕截图。

将计算机添加到组

若要将计算机添加到现有组,请选择所需计算机旁边的复选框,然后选择“ 添加到组”。 然后选择要添加计算机的组。

从组中删除计算机

“组” 列表中,展开组名称以列出计算机组中的计算机。 选择要删除的计算机旁边的省略号菜单,然后选择“ 删除”。

显示从组中删除计算机的屏幕截图。

删除或重命名组

“组” 列表中选择组名称旁边的省略号菜单。

显示计算机组菜单的屏幕截图。

角色图标

某些进程在计算机(如 Web 服务器、应用程序服务器和数据库)上提供特定角色。 服务映射将进程和计算机框标注角色图标,以便快速识别进程或服务器的角色。

角色图标 说明
网页服务器 Web 服务器
应用服务器 应用程序服务器
数据库服务器 数据库服务器
LDAP 服务器 LDAP 服务器
SMB 服务器 SMB 服务器

显示角色图标的屏幕截图。

失败的连接

在服务映射中,失败的连接显示在进程和计算机的映射中。 虚线红线表示客户端系统无法访问进程或端口。

如果某系统尝试建立连接失败,且该系统已部署了服务映射代理,则该系统会报告该失败的连接。 服务映射通过观察无法建立连接的 TCP 套接字来度量此过程。 此失败可能会导致防火墙、客户端或服务器中的配置错误或远程服务不可用。

显示服务映射的一部分的屏幕截图,其中突出显示了一条虚线红线,指示 backup.pl 进程与端口 4475 之间的连接失败。

了解失败的连接有助于进行故障排除、迁移验证、安全分析和整体体系结构理解。 失败的连接有时是无害的,但它们通常直接指向问题。 故障转移环境可能突然变得无法访问,或者两个应用程序层在云迁移后可能无法通信。

客户群组

客户端组是地图上的方框,表示不具有依赖代理的客户端计算机。 单个客户端组表示单个进程或计算机的客户端。

显示客户端组的屏幕截图。

若要查看客户端组中服务器的 IP 地址,请选择该组。 组的内容列在 “客户端组属性 ”窗格中。

显示客户端组属性的屏幕截图。

服务器端口组

服务器端口组是表示服务器上没有依赖关系代理的服务器端口的框。 该框包含服务器端口和连接到该端口的服务器数的计数。 展开框以查看各个服务器和连接。 如果框中只有一台服务器,则会列出名称或 IP 地址。

显示服务器端口组的屏幕截图。

上下文菜单

选择任何服务器右上角的省略号(...),以显示该服务器的上下文菜单。

服务映射中关于服务器的“加载服务器映射”和“显示自我链接”选项的屏幕截图。

加载服务器映射

选择 加载服务器地图 以转到具有所选服务器的新地图作为新的焦点计算机。

选择“ 显示自链接 ”以重新绘制服务器节点,包括任何自链接(即在服务器中的进程上启动和结束的 TCP 连接)。 如果显示自链接,菜单命令将更改为 “隐藏自链接 ”,以便你可以将其关闭。

计算机摘要

计算机摘要”窗格包括服务器操作系统的概述、依赖项计数和其他解决方案中的数据。 此类数据包括性能指标、服务台票证、更改跟踪、安全性和更新。

显示“计算机摘要”窗格的屏幕截图。

计算机和进程属性

在服务地图中导航时,可以选择机器和进程以获取有关其属性的更多信息。 计算机提供有关 DNS 名称、IPv4 地址、CPU 和内存容量、VM 类型、作系统和版本、上次重新启动时间及其 OMS 和服务映射代理 ID 的信息。

显示“计算机属性”窗格的屏幕截图。

可以从操作系统元数据中收集有关正在运行的进程的详细信息。 详细信息包括进程名称、进程说明、用户名和域(在 Windows 上)、公司名称、产品名称、产品版本、工作目录、命令行和进程开始时间。

显示“进程属性”窗格的屏幕截图。

进程摘要 ”窗格提供有关进程连接的详细信息,包括其绑定端口、入站和出站连接以及失败的连接。

显示“进程摘要”窗格的屏幕截图。

警报集成

服务映射与 Azure 警报集成,以显示所选服务器在所选时间范围内触发的警报。 如果存在当前警报,服务器将显示一个图标,“ 计算机警报 ”窗格将列出警报。

显示“计算机警报”窗格的屏幕截图。

若要启用服务映射以显示相关警报,请创建针对特定计算机触发的警报规则。 若要创建适当的警报,请执行以下作:

  • 包含一条按计算机分组的子句。 例如 由计算机设定的间隔为 1 分钟
  • 选择根据指标度量发出警报。

日志事件集成

服务映射与日志搜索集成,以显示所选服务器在所选时间范围内的所有可用日志事件的计数。 可以选择事件计数列表中的任意行以跳转到日志搜索并查看单个日志事件。

显示“计算机日志事件”窗格的屏幕截图。

服务台集成

在 Log Analytics 工作区中启用和配置两个解决方案时,服务映射与 IT Service Management Connector 的集成是自动的。 服务映射中的集成标记为“服务台”。有关详细信息,请参阅 使用 IT Service Management Connector 集中管理 ITSM 工作项

计算机服务台 ”窗格列出所选服务器在所选时间范围内的所有 IT 服务管理事件。 如果存在当前项,并且计算机服务台窗格会列出它们,服务器将显示一个图标。

显示“计算机服务台”窗格的屏幕截图。

若要在连接的 ITSM 解决方案中打开该项,请选择“ 查看工作项”。

若要查看日志搜索中项的详细信息,请选择“ 在日志搜索中显示”。 连接指标将写入 Log Analytics 中的两个新表。

改变跟踪集成

在 Log Analytics 工作区中启用和配置这两个解决方案时,服务映射与更改跟踪的集成是自动的。

计算机更改跟踪 ”窗格列出了所有更改,其中列出了最新的更改,以及用于向下钻取到日志搜索的链接以获取更多详细信息。

显示“计算机更改跟踪”窗格的屏幕截图。

下图展示了您在选择在 Log Analytics 中显示后可能看到的配置更改事件的详细视图。

显示 ConfigurationChange 事件的屏幕截图。

性能集成

计算机性能 ”窗格显示所选服务器的标准性能指标。 这些指标包括 CPU 使用率、内存利用率、发送和接收的网络字节,以及按发送和接收的网络字节数列出的顶级进程列表。

显示“计算机性能”窗格的屏幕截图。

若要查看性能数据,可能需要 启用相应的 Log Analytics 性能计数器。 要启用的计数器:

窗户:

  • 处理器(*)\%处理器时间
  • 已使用内存\%提交字节
  • 网络适配器(*)/每秒发送字节数
  • 网络适配器/每秒接收字节

Linux:

  • 处理器(*)\%处理器时间
  • 内存(*)\% 已用内存
  • 网络适配器(*)/每秒发送字节数
  • 网络适配器/每秒接收字节

安全集成

在 Log Analytics 工作区中启用和配置这两个解决方案时,服务映射与安全和审核的集成是自动的。

计算机安全 ”窗格显示所选服务器的“安全和审核”解决方案中的数据。 该窗格列出了所选时间范围内服务器出现的所有未解决安全问题的摘要。 选择任意一个安全问题可以深入到日志搜索中,以获取关于这些问题的详细信息。

显示“计算机安全”窗格的屏幕截图。

更新与集成

在 Log Analytics 工作区中启用和配置这两个解决方案时,服务映射与更新管理集成是自动的。

计算机更新 ”窗格显示所选服务器的更新管理解决方案中的数据。 该窗格列出了所选时间范围内服务器缺少的任何更新的摘要。

显示“计算机更新”窗格的屏幕截图。

日志分析记录

服务地图的计算机和进程状态数据可用于在 Log Analytics 中 搜索 。 此数据可应用于包括迁移计划、容量分析、发现和按需性能故障排除在内的方案。

除了进程或计算机启动或载入服务映射时生成的记录外,还会为每个唯一的计算机和进程每小时生成一条记录。 这些记录具有下表中的属性。

ServiceMapComputer_CL事件中的字段和值映射到 ServiceMap Azure 资源管理器 API 中的计算机资源的字段。 ServiceMapProcess_CL事件中的字段和值映射到 ServiceMap Azure 资源管理器 API 中进程资源的字段。 ResourceName_s字段与相应 Resource Manager 资源中的名称字段匹配。

注释

随着服务映射功能的增长,这些字段可能会更改。

可以使用内部生成的属性来标识唯一的进程和计算机:

  • 计算机:使用 ResourceIdResourceName_s 唯一标识 Log Analytics 工作区中的计算机。
  • 进程:使用 ResourceId 唯一标识 Log Analytics 工作区中的进程。 ResourceName_s在运行进程的计算机MachineResourceName_s的上下文中是唯一的。

由于在指定的时间范围内,指定的进程和计算机可能存在多条记录,因此针对同一个计算机或进程的查询可能返回多条记录。 若要仅添加最新记录,请在查询中添加 "| dedup ResourceId"

连接

连接指标将写入 Log Analytics 中名为 VMConnection 的新表。 此表提供有关计算机的入站和出站连接的信息。 连接指标还公开了 API,这些 API 提供了在时间范围内获取特定指标的方法。

在侦听套接字上接受生成的 TCP 连接是入站连接。 通过连接到给定的IP和端口创建的连接属于出站连接。 连接的方向由 Direction 属性表示,该属性可以设置为或 inboundoutbound

这些表中的记录是从依赖代理报告的数据生成的。 每个记录表示一分钟时间间隔内观测值。 该 TimeGenerated 属性指示时间间隔的开始时间。 每个记录都包含用于标识相应实体的信息,即连接或端口以及与该实体关联的指标。 目前,仅报告通过 IPv4 使用 TCP 发生的网络活动。

为了控制成本和复杂性,连接记录不会显示单个物理网络连接。 多个物理网络连接分组到一个逻辑连接中,然后在相应的表中反映该逻辑连接。 因此 ,VMConnection 表中的记录表示逻辑分组,而不是观察到的各个物理连接。

在给定的一分钟间隔内,共享以下属性相同值的物理网络连接将聚合到 VMConnection 中的单个逻辑记录中。

财产 说明
Direction 连接方向。 该值是 入站出站值。
Machine 计算机 FQDN。
Process 启动或接受连接的进程或进程组的标识。
SourceIp 源的 IP 地址。
DestinationIp 目标的 IP 地址。
DestinationPort 目标的端口号。
Protocol 用于连接的协议。 值为 tcp

为了考虑分组的影响,记录的以下属性中提供了有关分组物理连接数的信息。

财产 说明
LinksEstablished 在报告时间范围内建立的物理网络连接数。
LinksTerminated 在报告时间范围内终止的物理网络连接数。
LinksFailed 在报告时间范围内失败的物理网络连接数 此信息目前仅适用于出站连接。
LinksLive 在报告时间窗口结束时打开的物理网络连接数。

指标

除了连接计数指标,记录的以下属性中还包括有关在特定逻辑连接或网络端口上发送和接收的数据量的信息。

财产 说明
BytesSent 在报告时间范围内发送的总字节数。
BytesReceived 报告时间范围内收到的字节总数。
Responses 在报告时间范围内观测到的响应数。
ResponseTimeMax 报告时间范围内观察到的最大响应时间(以毫秒为单位)。 如果没有值,则属性为空。
ResponseTimeMin 报告时间范围内观察到的最小响应时间(以毫秒为单位)。 如果没有值,则属性为空。
ResponseTimeSum 报告时间范围内观察到的所有响应时间的总和(以毫秒为单位)。 如果没有值,则属性为空

要报告的第三种类型的数据是响应时间。 呼叫者等待通过连接发送的请求由远程终结点处理和响应需要多长时间?

报告的响应时间是底层应用程序协议的真实响应时间的估算值。 它通过使用启发式方法来计算,该方法基于对物理网络连接的源端和目标端之间数据流的观察。

从概念上讲,响应时间是请求的最后一个字节离开发送方的时间与响应最后一个字节到达时间之间的差。 这两个时间戳用于描述特定物理连接上的请求和响应事件。 两者的差表示单个请求的响应时间。

在此功能的第一个版本中,我们的算法是一种近似值,根据用于特定网络连接的实际应用程序协议,该算法可能具有不同程度的成功。 例如,当前方法适用于基于请求响应的协议,例如 HTTP/HTTPS。 但此方法不适用于单向协议或基于消息队列的协议。

考虑的几个要点:

  • 如果进程在相同的 IP 地址上接受连接,但通过多个网络接口接受连接,则为每个接口单独报告一条记录。
  • 带通配符 IP 的记录不包含任何活动。 包含此类记录的目的是表示在计算机上为入站流量开放了某个端口这一事实。
  • 为了降低详细程度和数据量,存在带有特定 IP 地址的匹配记录(适用于相同的进程、端口和协议)时,将省略带通配符 IP 的记录。 省略通配符 IP 记录时,指定特定 IP 地址的记录属性将被设置为 True.。此设置表示端口在报告计算机的每个接口上都处于开放状态。
  • 仅在特定接口上绑定的端口已 IsWildcardBind 设置为 False

命名和分类

为方便起见,连接远程端的 IP 地址包含在属性中 RemoteIp 。 对于入站连接, RemoteIp 与出站连接相同 SourceIp,而对于出站连接,则与 DestinationIp出站连接相同。 该 RemoteDnsCanonicalNames 属性表示计算机报告的 RemoteIpDNS 规范名称。 RemoteDnsQuestions保留RemoteClassification属性以供将来使用。

地理位置

VMConnection 还包括记录的以下属性中每个连接记录的远程端的地理位置信息。

财产 说明
RemoteCountry 国家/地区托管 RemoteIp的名称。 例如 ,美国
RemoteLatitude 地理位置的纬度。 例如 47.68
RemoteLongitude 地理位置的经度。 例如 -122.12

恶意 IP

RemoteIp 表中的每个属性与一组具有已知恶意活动的 IP 进行核对。 如果 RemoteIp 被识别为恶意,则会填充记录中的相关属性(当 IP 不被视为恶意时,这些属性为空)。

财产 说明
MaliciousIp 地址 RemoteIp
IndicatorThreadType 检测到的威胁指示器是以下值之一: BotnetC2CryptoMiningDarknetDDosMalwareUrlMalwarePhishingProxyPUAWatchlist
Description 观察到的威胁说明。
TLPLevel 交通灯协议(TLP)级别是定义的值之一: 白色绿色琥珀色红色
Confidence 值介于 0 和 100 之间。
Severity 值为 0 – 5,其中 5 是最严重值, 0 不是严重值。 默认值是 3
FirstReportedDateTime 服务提供商首次报告该指标。
LastReportedDateTime Interflow 最后一次看到指标。
IsActive 使用值 True 或 False 指明是否停用标志。
ReportReferenceLink 与给定可观测结果相关的报告的链接。
AdditionalInformation 提供有关观察到的威胁的详细信息(如果适用)。

ServiceMapComputer_CL 记录

类型为ServiceMapComputer_CL的记录包含有关具有服务映射代理的服务器的清单数据。 这些记录具有下表中的属性。

财产 说明
Type ServiceMapComputer_CL
SourceSystem OpsManager
ResourceId 工作区中计算机的唯一标识符
ResourceName_s 工作区中计算机的唯一标识符
ComputerName_s 计算机 FQDN
Ipv4Addresses_s 服务器的 IPv4 地址列表
Ipv6Addresses_s 服务器的 IPv6 地址列表
DnsNames_s DNS 名称数组
OperatingSystemFamily_s Windows 或 Linux
OperatingSystemFullName_s 操作系统的全名
Bitness_s 计算机的位数(32 位或 64 位)
PhysicalMemory_d 物理内存(以 MB 为单位)
Cpus_d CPU 数量
CpuSpeed_d CPU 速度(以 MHz 为单位)
VirtualizationState_s 未知物理虚拟虚拟机监控程序
VirtualMachineType_s hypervvmware
VirtualMachineNativeMachineId_g 由虚拟机监控程序分配的虚拟机 ID
VirtualMachineName_s VM 的名称
BootTime_t 启动时间

ServiceMapProcess_CL类型记录

类型为ServiceMapProcess_CL的记录包含服务映射代理服务器上TCP连接进程的清单数据。 这些记录具有下表中的属性。

财产 说明
Type ServiceMapProcess_CL
SourceSystem OpsManager
ResourceId 工作区中进程的唯一标识符
ResourceName_s 正在机器上运行的进程的唯一标识符
MachineResourceName_s 计算机的资源名称
ExecutableName_s 进程可执行文件的名称
StartTime_t 进程池启动时间
FirstPid_d 进程池中的第一个进程标识符(PID)
Description_s 进程说明
CompanyName_s 公司名称
InternalName_s 内部名称
ProductName_s 产品名称
ProductVersion_s 产品版本
FileVersion_s 文件版本
CommandLine_s 命令行
ExecutablePath _s 可执行文件的路径
WorkingDirectory_s 工作目录
UserName 执行进程所用的帐户
UserDomain 执行进程所在的域

示例日志搜索

本部分列出了日志搜索示例。

列出所有已知计算机

ServiceMapComputer_CL | summarize arg_max(TimeGenerated, *) by ResourceId

列出所有托管计算机的物理内存容量

ServiceMapComputer_CL | summarize arg_max(TimeGenerated, *) by ResourceId | project PhysicalMemory_d, ComputerName_s

列出计算机名称、DNS、IP 和 OS

ServiceMapComputer_CL | summarize arg_max(TimeGenerated, *) by ResourceId | project ComputerName_s, OperatingSystemFullName_s, DnsNames_s, Ipv4Addresses_s

在命令行中查找带有“sql”的所有进程

ServiceMapProcess_CL | where CommandLine_s contains_cs "sql" | summarize arg_max(TimeGenerated, *) by ResourceId

按资源名称查找计算机(最新记录)

search in (ServiceMapComputer_CL) "m-4b9c93f9-bc37-46df-b43c-899ba829e07b" | summarize arg_max(TimeGenerated, *) by ResourceId

按 IP 地址查找计算机(最新记录)

search in (ServiceMapComputer_CL) "10.229.243.232" | summarize arg_max(TimeGenerated, *) by ResourceId

列出指定计算机上的所有已知进程

ServiceMapProcess_CL | where MachineResourceName_s == "m-559dbcd8-3130-454d-8d1d-f624e57961bc" | summarize arg_max(TimeGenerated, *) by ResourceId

列出运行 SQL 的所有计算机

ServiceMapComputer_CL | where ResourceName_s in ((search in (ServiceMapProcess_CL) "\*sql\*" | distinct MachineResourceName_s)) | distinct ComputerName_s

在我的数据中心列出 curl 的所有唯一产品版本

ServiceMapProcess_CL | where ExecutableName_s == "curl" | distinct ProductVersion_s

创建由运行 CentOS 的所有计算机组成的计算机组

ServiceMapComputer_CL | where OperatingSystemFullName_s contains_cs "CentOS" | distinct ComputerName_s

汇总一组计算机的出站连接

// the machines of interest
let machines = datatable(m: string) ["m-82412a7a-6a32-45a9-a8d6-538354224a25"];
// map of ip to monitored machine in the environment
let ips=materialize(ServiceMapComputer_CL
| summarize ips=makeset(todynamic(Ipv4Addresses_s)) by MonitoredMachine=ResourceName_s
| mvexpand ips to typeof(string));
// all connections to/from the machines of interest
let out=materialize(VMConnection
| where Machine in (machines)
| summarize arg_max(TimeGenerated, *) by ConnectionId);
// connections to localhost augmented with RemoteMachine
let local=out
| where RemoteIp startswith "127."
| project ConnectionId, Direction, Machine, Process, ProcessName, SourceIp, DestinationIp, DestinationPort, Protocol, RemoteIp, RemoteMachine=Machine;
// connections not to localhost augmented with RemoteMachine
let remote=materialize(out
| where RemoteIp !startswith "127."
| join kind=leftouter (ips) on $left.RemoteIp == $right.ips
| summarize by ConnectionId, Direction, Machine, Process, ProcessName, SourceIp, DestinationIp, DestinationPort, Protocol, RemoteIp, RemoteMachine=MonitoredMachine);
// the remote machines to/from which we have connections
let remoteMachines = remote | summarize by RemoteMachine;
// all augmented connections
(local)
| union (remote)
//Take all outbound records but only inbound records that come from either //unmonitored machines or monitored machines not in the set for which we are computing dependencies.
| where Direction == 'outbound' or (Direction == 'inbound' and RemoteMachine !in (machines))
| summarize by ConnectionId, Direction, Machine, Process, ProcessName, SourceIp, DestinationIp, DestinationPort, Protocol, RemoteIp, RemoteMachine
// identify the remote port
| extend RemotePort=iff(Direction == 'outbound', DestinationPort, 0)
// construct the join key we'll use to find a matching port
| extend JoinKey=strcat_delim(':', RemoteMachine, RemoteIp, RemotePort, Protocol)
// find a matching port
| join kind=leftouter (VMBoundPort 
| where Machine in (remoteMachines) 
| summarize arg_max(TimeGenerated, *) by PortId 
| extend JoinKey=strcat_delim(':', Machine, Ip, Port, Protocol)) on JoinKey
// aggregate the remote information
| summarize Remote=makeset(iff(isempty(RemoteMachine), todynamic('{}'), pack('Machine', RemoteMachine, 'Process', Process1, 'ProcessName', ProcessName1))) by ConnectionId, Direction, Machine, Process, ProcessName, SourceIp, DestinationIp, DestinationPort, Protocol

REST API

服务映射中的所有服务器、进程和依赖项数据都可通过 服务映射 REST API 获得。

诊断和使用情况数据

Microsoft通过您对服务地图的使用自动收集使用情况和性能数据。 Microsoft使用此数据来提供和改进服务映射的质量、安全性和完整性。

为了提供准确高效的故障排除功能,数据包括有关软件配置的信息。 此信息可以是作系统和版本、IP 地址、DNS 名称和工作站名称。 Microsoft 不收集姓名、地址或其他联系信息。

有关数据收集和使用的详细信息,请参阅 Microsoft Online Services 隐私声明

后续步骤

详细了解 Log Analytics 中的 日志搜索 ,以检索服务映射收集的数据。

故障排除

如果在安装或运行服务映射时遇到问题,本部分可帮助你。 如果仍无法解决问题,请联系Microsoft支持部门。

依赖代理安装问题

本部分解决了依赖项代理安装的问题。

安装程序提示重新启动

依赖项代理 通常 不需要在安装或删除时重新启动。 在某些情况下,Windows Server 需要重新启动才能继续安装。 当依赖项(通常是 Microsoft Visual C++ Redistributable 库)由于文件被锁定而需要重启时,会出现此问题。

出现消息“无法安装依赖代理:Visual Studio 运行时库安装失败(代码 = [code_number])”

Microsoft Dependency Agent 基于 Microsoft Visual Studio 运行时库。 如果安装库时出现问题,将收到一条消息。

运行时库安装程序在 %LOCALAPPDATA%\temp 文件夹中创建日志。 文件是dd_vcredist_arch_yyyymmddhhmmss.log,其中archx86amd64,而yyyymmddhhmmss是创建日志时的日期和时间(基于 24 小时制)。 该日志提供有关阻止安装的问题的详细信息。

这可能有助于首次安装最新运行时库

下表列出了代码号和建议的解决方法。

代码 说明 决议
0x17 库安装程序需要尚未安装的 Windows 更新。 查看最新的库安装程序日志。

如果在引用Windows8.1-KB2999226-x64.msu之后接着出现一行Error 0x80240017: Failed to execute MSU package,,这表示您没有安装KB2999226所需的前提条件。 请按照 Windows 中的通用 C 运行时文章中先决条件章节的说明进行操作。 可能需要运行 Windows 更新并重新启动多次才能安装必备组件。

再次运行 Microsoft Dependency Agent 安装程序。

安装后问题

本部分解决了安装后的问题。

服务器未显示在服务映射中

如果依赖代理安装成功,但在服务地图解决方案中看不到您的设备:

  • 依赖代理是否已成功安装? 检查服务是否已安装并运行。

    • Windows:查找名为 Microsoft依赖项代理的服务。
    • Linux:查找正在运行的进程 microsoft-dependency-agent
  • 你是在 Log Analytics 免费层吗? 免费计划最多允许 5 台独特的服务映射设备。 服务映射中不再显示任何其他的计算机,即使前 5 个服务器不再发送数据。

  • 服务器是否向 Azure Monitor 日志发送日志和性能数据? 转到 Azure Monitor\Logs,并为计算机运行以下查询:

    Usage | where Computer == "admdemo-appsvr" | summarize sum(Quantity), any(QuantityUnit) by DataType
    

在结果中,你是否得到了各种事件? 是否为最新数据? 如果是,则表示 Log Analytics 代理正常运行并正在与工作区通信。 否则,请检查计算机上的代理程序。 请参阅 适用于 Windows 的 Log Analytics 代理故障排除适用于 Linux 的 Log Analytics 代理故障排除

服务器显示在服务映射中,但没有进程

可在服务映射中看到计算机,但它没有进程或连接数据。 该行为指示依赖项代理已安装并运行,但内核驱动程序未加载。

检查适用于 C:\Program Files\Microsoft Dependency Agent\logs\wrapper.log file Windows 或 /var/opt/microsoft/dependency-agent/log/service.log file Linux 的情况。 文件的最后几行应指出为何未加载内核。 例如,如果更新内核,则内核在 Linux 上可能不受支持。

建议

你是否向我们提供有关服务映射或本文档的任何反馈? 请参阅“ 用户语音”页 ,你可以在其中建议功能或投票支持现有建议。