排查 UNIX 和 Linux 计算机的监视问题

System Center - Operations Manager 提供与监视 Windows 计算机类似的 UNIX 和 Linux 计算机的监视。 可以监视运行状况和性能、获取报表、运行任务以及实现自定义监视检测。

你可以监视 UNIX 和 Linux 计算机的以下方面:

  • 服务和应用程序

  • 文件系统、磁盘空间、交换空间、系统内存

  • 网络接口

  • 核心进程和属性

  • 关键配置

在监视 UNIX 和 Linux 计算机之前,必须完成以下步骤:

  1. 通过从 Microsoft下载中心下载最新版本来导入管理包。
  2. 创建用于监视 UNIX 和 Linux 计算机的专用资源池
  3. 为池中的每个管理服务器配置证书
  4. 创建和 配置运行方式帐户
  5. 使用发现向导UNIX 和 Linux 上安装代理。
  1. 通过从 Microsoft下载中心下载最新版本来导入管理包。
  2. 创建用于监视 UNIX 和 Linux 计算机的专用资源池
  3. 为池中的每个管理服务器配置证书
  4. 创建和 配置运行方式帐户
  5. 使用发现向导UNIX 和 Linux 上安装代理。
  1. 通过从 Microsoft下载中心下载最新版本来导入管理包。
  2. 创建用于监视 UNIX 和 Linux 计算机的专用资源池
  3. 为池中的每个管理服务器配置证书
  4. 创建和 配置运行方式帐户
  5. 使用发现向导UNIX 和 Linux 上安装代理。

完成上述步骤并成功发现代理并将其部署到一台或多台 UNIX 和 Linux 计算机后,应验证它们是否受到正确监视。 部署代理后,运行方式帐户用于执行使用适用的发现规则运行的发现,然后开始监视。 几分钟后,在“管理”工作区下,导航到设备管理/UNIX/Linux 计算机,并验证计算机未列为“未知”。 应发现它们并显示 OS 和发行版的特定版本。

默认情况下,Operations Manager 监视以下操作系统对象:

  • 操作系统
  • 逻辑磁盘
  • 网络适配器

通过使用 UNIX 和 Linux 监视包模板,你可以为管理的 UNIX 和 Linux 计算机提供其他监视和交互功能。 有关详细信息,请参阅创作指南中的 UNIX or Linux Log File(UNIX 或 Linux 日志文件) 以及 UNIX or Linux Process(UNIX 或 Linux 进程)

排查 UNIX 和 Linux 监视问题

以下主题提供了有关在 Operations Manager 中监视 UNIX 和 Linux 计算机时可能会发生的问题的信息。

证书签名错误消息

安装 UNIX/Linux 代理过程中,你可能会看到以下错误。

Event Type: Error  
Event Source: Cross Platform Modules  
Event Category: None  
Event ID: 256  
Date: 4/1/2009  
Time: 4:02:27 PM  
User: N/A  
Computer: COMPUTER1  
Description: Unexpected ScxCertLibException: Can't decode from base64  
; input data is:  

在调用证书签名模块但证书本身为空时,会出现此错误。 远程系统 SSH 连接失败可能会导致此错误。

如果看到此错误,请执行以下操作:

  1. 确保远程主机上的 SSH 守护程序正在运行。

  2. 确保可以使用发现向导中指定的凭据打开与远程主机的 SSH 会话。

  3. 确保发现向导中指定的凭据具有发现所需的权限。 有关详细信息,请参阅 必须具有的凭据才能访问 UNIX 和 Linux 计算机

证书名称和主机名称不一致

证书中使用的公用名 (CN) 必须与由 Operations Manager 解析的完全限定的域名 (FQDN) 匹配。 如果 CN 不匹配,则运行发现向导时会看到以下错误:

The SSL certificate contains a common name (CN) that doesn't match the hostname  

你可以通过输入以下命令来查看 UNIX 或 Linux 计算机上证书的基本详细信息:

openssl x509 -noout -in /etc/opt/microsoft/scx/ssl/scx.pem -subject -issuer -dates  

执行此操作时,你将看到类似于以下内容的输出:

subject= /DC=name/DC=newdomain/CN=newhostname/CN=newhostname.newdomain.name  
issuer= /DC=name/DC=newdomain/CN=newhostname/CN=newhostname.newdomain.name  
notBefore=Mar 25 05:21:18 2008 GMT  
notAfter=Mar 20 05:21:18 2029 GMT  

验证主机名和日期,并确保它们与 Operations Manager 管理服务器正在解析的名称匹配。

如果主机名不匹配,请使用下列操作之一来解决此问题:

  • 如果 UNIX 或 Linux 主机名正确,但 Operations Manager 管理服务器未正确解析该名称,请修改 DNS 条目以与正确的 FQDN 匹配,或者将条目添加到 Operations Manager 服务器上的主机文件中。

  • 如果 UNIX 或 Linux 主机名不正确,请执行以下操作之一:

    • 将 UNIX 或 Linux 主机上的主机名更改为正确的名称,并创建新证书。

    • 使用所需主机名创建新证书。

更改证书上的名称:

如果使用不正确的名称创建了证书,则可以更改主机名并重新创建证书和私钥。 为此,请在 UNIX 或 Linux 计算机上运行以下命令:

/opt/microsoft/scx/bin/tools/scxsslconfig -f -v  

-f 选项强制覆盖 /etc/opt/microsoft/scx/ssl 中的文件。

还可以使用 -h 和 -d 开关更改证书上的主机名和域名,如以下示例所示:

/opt/microsoft/scx/bin/tools/scxsslconfig -f -h <hostname> -d <domain.name>  

运行以下命令重启代理:

/opt/microsoft/scx/bin/tools/scxadmin -restart  

将条目添加到主机文件:

如果 FQDN 不在反向 DNS 中,则可以将条目添加到位于管理服务器上的主机文件以提供名称解析。 主机文件位于 Windows\System32\Drivers\etc 文件夹中。 主机文件中的条目是 IP 地址和 FQDN 的组合。

例如,若要为具有 IP 地址为 192.168.1.1 的主机添加名为 newhostname.newdomain.name 的条目,请将以下内容添加到主机文件的末尾:

192.168.1.1      newhostname.newdomain.name  

管理包问题

ExecuteCommand 不支持管道运算符或别名

将别名或管道运算符与 ExecuteCommand 参数一起使用时,命令将失败。 ExecuteCommand 参数不支持管道运算符、别名和特定于 shell 的语法。

在设计用于管理 UNIX 和 Linux 计算机的 System Center Operations Manager 管理包中, ExecuteCommand 参数不会启动 shell 进程,导致自定义操作失败。

对于以下每个自定义操作类型,指定如何使用 ExecuteCommand 参数或 ExecuteShellCommand 参数调用命令参数:

  • Microsoft.Unix.WSMan.Invoke.ProbeAction

  • Microsoft.Unix.WSMan.Invoke.WriteAction

  • Microsoft.Unix.WSMan.Invoke.Privileged.ProbeAction

  • Microsoft.Unix.WSMan.Invoke.Privileged.WriteAction

ExecuteCommand 参数将命令行参数传递到控制台,而无需启动 shell 进程。

ExecuteShellCommand 参数使用用户的默认 shell 将命令参数传递给 shell 进程;此 shell 支持管道、别名和特定于 shell 的语法。

注意

ExecuteShellCommand 参数使用运行命令的用户的默认 shell。 如果需要特定的 shell,请使用 ExecuteCommand 参数,并将命令参数作为所需的 shell 前缀。

以下示例演示如何使用 ExecuteCommandExecuteShellCommand 参数:

  • 在不启动外壳进程的情况下将命令行参数传送至控制台:

    <p:ExecuteCommand_INPUT xmlns:p="https://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_OperatingSystem"> <p:Command> service syslog status </p:Command> <p:timeout>10</p:timeout> </p:ExecuteCommand_INPUT>

  • 将命令行参数传送至引用显式外壳的外壳进程:

    <p:ExecuteCommand_INPUT xmlns:p="https://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_OperatingSystem"> <p:Command> /bin/sh ps -ef syslog | grep -v grep </p:Command> <p:timeout>10</p:timeout> </p:ExecuteCommand_INPUT>

  • 将命令参数传送至使用用户默认外壳的外壳进程:

    <p:ExecuteShellCommand_INPUT xmlns:p="https://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_OperatingSystem"> <p:Command> uptime |&nbsp; awk '{print $10}' |awk -F"," '{print $1}' </p:Command> <p:timeout>10</p:timeout> </p:ExecuteShellCommand_INPUT>

日志记录和调试

本章节介绍如何启用日志记录和调试工具来排查关于监视 UNIX 和 Linux 计算机的问题。

注意

使用 Operations Manager 2019 UR3,可以在不重启代理的情况下更改日志级别设置。 了解详细信息

注意

可以在不重启代理的情况下更改日志级设置。 了解详细信息

启用 Operations Manager 模块日志记录

适用于 UNIX 和 Linux 的 Operations Manager 代理维护多个日志文件,在排查客户端问题时非常有用。 这些日志文件位于托管 UNIX 或 Linux 计算机上。 可以根据需要配置代理日志文件的日志记录级别。 更详细的日志记录在问题诊断中会很有用。 对于正常操作,日志级别不应设置为比默认配置(中间)更详细的值,以防止日志文件过多增长。

注意

在 Windows 远程管理 (WinRM) 之外进行的调用是使用 SSH/SFTP 进行的。 这些组件依赖单独的日志记录机制,而不是 Operations Manager。

注意

omiserver.log日志文件的日志记录级别无法从此版本的适用于 UNIX 和 Linux 的 Operations Manager 代理中的默认值更改。

  1. 在 Temp 目录中为调用这些模块的用户帐户创建名为 EnableOpsmgrModuleLogging 的空白文件,方法是在命令行或 PowerShell 提示符处键入:

    COPY /Y NUL %windir%\TEMP\EnableOpsMgrModuleLogging
    
    New-Item "$env:windir\TEMP\EnableOpsMgrModuleLogging"
    

    注意

    通常,它是进行调用的 SYSTEM 帐户,C:\Windows\Temp 是默认的 SYSTEM 临时文件夹。

  2. 创建空白文件后,Operations Manager 将立即开始将 SSH 和证书活动记录到 Temp 目录。 调用 SSH 模块的脚本会记录到 <Scriptname.vbs>.log。 其他模块具有其自己的日志。

在某些情况下,可能需要重启 HealthService 才能使 EnableOpsmgrModuleLogging 日志记录生效。

在 UNIX 代理上启用日志记录

这些日志将报告 UNIX 代理操作。 如果返回到 Operations Manager 的数据出现问题,请查看此日志。 可使用 scxadmin 命令设置记录的信息量。 该命令的语法是:

scxadmin -log-set [all|cimom|provider] {verbose|intermediate|errors}

下表列出了可能的参数值:

Level 说明
错误 仅记录 警告错误 消息。
中级 日志 信息警告错误消息
详细 使用调试日志记录记录 信息警告错误 消息。 请注意此日志记录级别可能导致日志文件大小迅速增大。 建议此选项仅在短时间内用于诊断特定问题。

使用 DebugView 排查发现问题

DebugView 是 EnableOpsmgrModuleLogging 的替代方法,用于排查发现问题。

  1. 从: https://go.microsoft.comfwlink/?Linkid=129486下载 DebugView。

  2. 在执行发现的管理服务器上启动 DebugView。

  3. 开始发现 UNIX 代理。 你应该在 DebugView 窗口中开始查看输出。

  4. DebugView 将呈现发现向导进程的逐步读数。 这通常是排查发现问题的最快方法。

启用 Windows 远程管理的 Operations Manager 日志记录

此详细跟踪方法用于查看 Operations Manager 从代理中收集数据所使用的 Windows 远程管理 (WinRM) 查询。 如果怀疑 WinRM 连接出现问题,此日志提供了可帮助进行故障排除的详细信息。

  1. 在监视 UNIX 或 Linux 代理的管理服务器上,打开命令提示符。

  2. 在命令提示符处输入以下命令:

    1. cd C:\Program Files\Microsoft System Center\Operations Manager\Tools

    2. StopTracing.cmd

    3. StartTracing.cmd VER

  3. 在 Operations Manager 中再现故障问题。

  4. 在命令提示符处输入以下命令:

    1. StopTracing.cmd

    2. FormatTracing.cmd

  5. 在TracingGuidsNative.log文件中搜索 WS-Man。

注意

WinRM 也称为 WS-Management (WS-Man)。

注意

FormatTracing 命令将打开一个显示目录的 C:\Windows\Logs\OpsMgrTrace Windows 资源管理器窗口。 TracingGuidsNative.log 文件在该目录中。

管理 UNIX 和 Linux 日志文件

适用于 UNIX 和 Linux 的 Operations Manager 代理不会限制代理日志文件的大小。 为了控制日志文件的最大大小,需实现管理日志文件的进程。 例如,标准实用程序 logrotate 在许多 UNIX 和 Linux 操作系统上都可用。 可以配置 logrotate 实用程序来控制 UNIX 或 Linux 的 Operations Manager 代理使用的日志文件。 在轮换或修改代理的日志文件之后,必须用信号通知代理日志已轮换以恢复日志记录。 可使用以下语法将 scxadmin 命令和 -log-rotate 参数一并使用:

scxadmin -log-rotate all

Logrotate 配置文件示例

以下示例演示了一个配置文件,以使用 Linux 的 logrotate 实用工具轮换scx.log文件和omiserver.log。 通常,logrotate 将作为计划作业运行(使用 crond),并处理在其中找到的 /etc/logrotate.d配置文件。 若要测试和使用此配置文件,请修改配置以适合你的环境,并链接或保存该文件 /etc/logrotate.d

#opsmgr.lr  

#Rotate scx.log  
#Weekly rotation, retain four weeks of compressed logs  
#Invoke scxadmin -log-rotate to resume logging after rotation  

/var/opt/microsoft/scx/log/scx.log {  
rotate 4  
weekly  
compress  
missingok  
notifempty  
postrotate  

/usr/sbin/scxadmin -log-rotate all  
endscript  
}

#Rotate scx.log for the monitoring user account named: monuser  
#Weekly rotation, retain four weeks of compressed logs  
#Invoke scxadmin -log-rotate to resume logging after rotation  

/var/opt/microsoft/scx/log/monuser/scx.log {  
rotate 4  
weekly  
compress  
missingok  
notifempty  
postrotate  

/usr/sbin/scxadmin -log-rotate all
endscript  
}  

#Optionally, rotate omiserver.log. This requires that OMI be stopped and started to prevent  
#impact to logging. Monthly rotation, retain two weeks of compressed logs  
#Uncomment these lines if rotation of omiserver.log is needed  

#/var/opt/microsoft/scx/log/omiserver.log{  
#        rotate 2  
#        monthly  
#        compress  
#        missingok  
#        notifempty  
#        prerotate  
#        /usr/sbin/scxadmin -stop  
#        endscript  
#        postrotate  
#        /usr/sbin/scxadmin -start  
#        endscript\
#}  

后续步骤

有关帮助解决常见代理部署问题的附加指南,请查看 Operations Manager 2012 故障排除:UNIX/Linux 代理发现 Wiki