你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Linux 虚拟机和规模集上的 Azure Monitor 代理的排查指南
Azure Monitor 代理概述
进一步阅读前,必须先了解 Azure Monitor 代理和数据收集规则。
术语
名称 | 首字母缩写词 | 说明 |
---|---|---|
Azure Monitor 代理 | AMA | 新的 Azure Monitor 代理 |
数据收集规则 | DCR | 按代理划分的数据收集的配置规则,即收集内容、接收对象等 |
Azure Monitor 配置服务 | AMCS | Azure 中托管的区域服务,用于控制此代理和 Azure Monitor 其他部分的数据收集。 代理调用此服务以获取 DCR。 |
日志终结点 | -- | 用于将数据发送到 Log Analytics 工作区的终结点 |
指标终结点 | -- | 用于将数据发送到 Azure Monitor 指标数据库的终结点。 |
实例元数据服务和混合 | IMDS 和 HIMDS | Azure 中托管的服务,分别提供有关当前运行的虚拟机、规模集(通过 IMDS)和启用了 Arc 的服务器(通过 HIMDS)的信息 |
Log Analytics 工作区 | LAW | Azure Monitor 中可将代理所收集的日志发送到的目标 |
自定义指标 | -- | Azure Monitor 中可将代理所收集的来宾指标发送到的目标 |
基本故障排除步骤
按照以下步骤对 Linux 虚拟机上运行的最新版 Azure Monitor 代理进行排查:
仔细查看此处的先决条件。
验证是否已成功安装和预配扩展,如果成功则会在计算机上安装代理二进制文件:
- 打开 Azure 门户 > 选择你的虚拟机 > 从左侧窗格打开“设置: 扩展 +应用程序”> 应显示“AzureMonitorLinuxAgent”,并显示“状态: 预配成功”
- 如果看不到列出的扩展,请检查计算机是否可以访问 Azure,并使用以下命令查找要安装的扩展:
az vm extension image list-versions --location <machine-region> --name AzureMonitorLinuxAgent --publisher Microsoft.Azure.Monitor
- 等待 10-15 分钟,因为扩展可能处于正在转换状态。 如果如上仍未显示,请再次卸载并安装扩展。
- 检查计算机上位于
/var/log/azure/Microsoft.Azure.Monitor.AzureMonitorLinuxAgent/
的扩展日志是否存在任何错误
验证代理是否正在运行:
- 使用以下查询检查代理是否正在将检测信号日志发送到 Log Analytics 工作区。 如果“自定义指标”是 DCR 中的唯一目标,则跳过:
Heartbeat | where Category == "Azure Monitor Agent" and Computer == "<computer-name>" | take 10
- 检查代理服务是否正在运行
systemctl status azuremonitoragent
- 检查计算机上位于
/var/opt/microsoft/azuremonitoragent/log/mdsd.*
的内核代理日志是否存在任何错误
- 使用以下查询检查代理是否正在将检测信号日志发送到 Log Analytics 工作区。 如果“自定义指标”是 DCR 中的唯一目标,则跳过:
验证 DCR 是否存在且是否与虚拟机关联:
- 如果使用 Log Analytics 工作区作为目标,请验证 DCR 是否位于 Log Analytics 工作区所在的物理区域。
- 打开 Azure 门户 > 选择你的数据收集规则 > 打开左侧窗格中的“配置: 资源”> 此处应显示虚拟机。
- 如果未显示,请单击“添加”并从资源选取器中选择虚拟机。 对所有 DCR 重复操作。
验证代理是否能够从 AMCS 服务下载相关的 DCR:
- 检查是否显示在此位置
/etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/
下载的最新 DCR
- 检查是否显示在此位置
收集 Syslog 时出现问题
若要详细了解如何排查 Azure Monitor 代理的 syslog 问题,请查看此处。
服务质量 (QoS) 文件
/var/opt/microsoft/azuremonitoragent/log/mdsd.qos
可以以 CSV 格式对已处理事件进行 15 分钟的聚合,且包含有关指定时间范围内已处理 syslog 事件数量的信息。 此文件可用于跟踪 Syslog 事件引入删除。例如,以下片段显示,在 2022-02-28T19:55:23.5432920Z 之前的 15 分钟内,代理收到了 77 个带有设备守护程序和级别信息的 syslog 事件,并将上述 77 个事件发送到了上传任务。 此外,代理上传任务收到了 77 个事件并成功上传了全部 77 条 daemon.info 消息。
#Time: 2022-02-28T19:55:23.5432920Z #Fields: Operation,Object,TotalCount,SuccessCount,Retries,AverageDuration,AverageSize,AverageDelay,TotalSize,TotalRowsRead,TotalRowsSent ... MaRunTaskLocal,daemon.debug,15,15,0,60000,0,0,0,0,0 MaRunTaskLocal,daemon.info,15,15,0,60000,46.2,0,693,77,77 MaRunTaskLocal,daemon.notice,15,15,0,60000,0,0,0,0,0 MaRunTaskLocal,daemon.warning,15,15,0,60000,0,0,0,0,0 MaRunTaskLocal,daemon.error,15,15,0,60000,0,0,0,0,0 MaRunTaskLocal,daemon.critical,15,15,0,60000,0,0,0,0,0 MaRunTaskLocal,daemon.alert,15,15,0,60000,0,0,0,0,0 MaRunTaskLocal,daemon.emergency,15,15,0,60000,0,0,0,0,0 ... MaODSRequest,https://e73fd5e3-ea2b-4637-8da0-5c8144b670c8_LogManagement,15,15,0,455067,476.467,0,7147,77,77
故障排除步骤
首先查看通用 Linux AMA 排查步骤。 如果代理正在发出检测信号,请继续执行步骤 2。
分析后的配置存储在
/etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/
。 检查是否定义了 Syslog 集合,并检查日志目标与 DCR UI/DCR JSON 中构造的是否相同。- 如果是,则继续执行第 3 步。 如果否,则问题出在配置工作流中。
- 调查
/var/opt/microsoft/azuremonitoragent/log
下的mdsd.err
、mdsd.warn
、mdsd.info
文件是否存在潜在配置错误。
验证 Syslog 收集工作流的布局,确保所有必要部分部署到位且可访问:
- 对于
rsyslog
用户,确保/etc/rsyslog.d/10-azuremonitoragent.conf
文件存在、不为空,且可由rsyslog
守护程序(syslog 用户)访问。- 在
/etc/rsyslog.conf
和/etc/rsyslog.d/*
处检查 rsyslog 配置,查看是否有任何输入绑定到非默认规则集,因为来自这些输入的消息不会转发到 Azure Monitor 代理。 例如,不会转发来自配置了非默认规则集(如input(type="imtcp" port="514"
ruleset="myruleset"
)
)的输入的消息。
- 在
- 对于
syslog-ng
用户,确保/etc/syslog-ng/conf.d/azuremonitoragent.conf
文件存在、不为空,且可由syslog-ng
守护程序(syslog 用户)访问。 - 确保文件
/run/azuremonitoragent/default_syslog.socket
存在,且可以由rsyslog
或syslog-ng
访问。 - 参阅此处的指南:由于 AMA Linux 代理上的完全磁盘空间问题,Rsyslog 数据未上传,检查 syslog 守护程序队列是否未溢出,从而导致上传失败
- 对于
若要进一步调试 syslog 事件引入,你可以在文件
/etc/default/azuremonitoragent
中的 MDSD_OPTIONS 末尾追加跟踪标志 -T 0x2002,然后重新启动代理:export MDSD_OPTIONS="-A -c /etc/opt/microsoft/azuremonitoragent/mdsd.xml -d -r $MDSD_ROLE_PREFIX -S $MDSD_SPOOL_DIRECTORY/eh -L $MDSD_SPOOL_DIRECTORY/events -e $MDSD_LOG_DIR/mdsd.err -w $MDSD_LOG_DIR/mdsd.warn -o $MDSD_LOG_DIR/mdsd.info -T 0x2002"
在启用跟踪标志的情况下重现问题后,你将在
/var/opt/microsoft/azuremonitoragent/log/mdsd.info
中找到更多调试信息。 检查文件是否存在造成 syslog 收集问题的潜在原因,例如分析/处理/配置/上传错误。警告
确保在调试会话之后删除跟踪标志设置 -T 0x2002,因为它会生成许多跟踪语句,从而迅速填满磁盘或导致难以直观地分析日志文件。
排查已启用 Arc 的服务器上的问题
如果在检查基本故障排除步骤后,没有看到 Azure Monitor Agent 发出日志或在 /var/opt/microsoft/azuremonitoragent/log/mdsd.err
日志文件中未找到“未能从 IMDS 终结点获取 MSI 令牌”错误,则可能是 syslog
用户不是 himds
组的成员。 如果 syslog
用户不是 himds
用户组的成员,请将此用户添加到此组。 如有必要,请创建 syslog
用户和 syslog
组,并确保用户位于该组中。 有关详细信息,请查看此处了解已启用 Azure Arc 的服务器的身份验证要求。