System Center Operations Manager 中的 Linux 日志文件监视

注意

System Center Operations Manager 不支持在 2024 年 8 月的 OMS 代理停用时进行基于 fluentD 的日志文件监视。

System Center Operations Manager 现在使用使用 Fluentd 的最新版本的代理增强了 Linux 服务器的日志文件监视功能。 此更新基于先前的日志文件监视功能提供了以下改进:

  • 日志文件名称和路径中的通配符。
  • 用于自定义日志搜索的新匹配模式,例如简单匹配、独占匹配、关联匹配、重复关联和独占关联。
  • 支持 Fluentd 社区发布的通用 Fluentd 插件。

基本操作

Linux 中日志文件监视的基本操作包括以下步骤:

  1. 记录将写入 Linux 代理上的日志。
  2. Fluentd 收集记录,并在模式匹配时创建事件。
  3. 事件将发送到管理服务器上的 OMED 服务,并记录到 管理服务器上的 System Center OMED 服务 事件日志。 (The 仅当事件已成功从 Fluentd 代理发送时,才会创建 System Center OMED 服务 事件日志)
  4. 自定义管理包中的规则和监视器收集事件并在 Operations Manager 中创建警报。

配置概述

日志文件监视需要以下步骤。 以下部分提供了详细信息:

  1. 导入最新的 System Center Operations Manager 2019 Linux 管理包
  2. 在每个要监视的 Linux 计算机上安装最新版本的 Linux 代理。
  3. 在每个要监视的 Linux 计算机上安装最新的 OMSAgent
  4. 创建 Fluentd 配置文件以收集日志。
  5. 将配置文件复制到 Linux 代理。
  6. 使用示例管理包创建规则和监视器,以便从日志中收集事件并创建警报。
  1. 导入最新的 System Center Operations Manager 2022 Linux 管理包
  2. 在每个要监视的 Linux 计算机上安装最新版本的 Linux 代理。
  3. 在每个要监视的 Linux 计算机上安装最新的 OMSAgent
  4. 创建 Fluentd 配置文件以收集日志。
  5. 将配置文件复制到 Linux 代理。
  6. 使用示例管理包创建规则和监视器,以便从日志中收集事件并创建警报。

安装日志监视管理包

安装 Microsoft.Linux.Log.Monitoring 管理包以启用 Linux 日志文件监视。

注意

如果配置了 OMS 代理,并且尝试从控制台中卸载 UNIX 和 LINUX 代理,则不会从代理中卸载 OMS 组件。

配置 Linux 日志文件监视

若要配置 Linux 日志文件监视,请执行以下步骤:

  1. 使用安装管理包的标准过程导入最新的 System Center Operations Manager 2019 Linux 管理包

  2. 在 Linux 服务器上手动或 [使用发现向导](/system-center/System Center Operations Manager/manage-deploy-crossplat-agent-console)在 Linux 服务器上安装新的 Linux 代理。

  3. 在要监视的每个 Linux 计算机上安装最新的 OMSAgent。 使用以下命令:

    # Download latest OMS Agent from GitHub
    wget https://raw.githubusercontent.com/Microsoft/OMS-Agent-for-Linux/master/installer/scripts/onboard_agent.sh
    
    # Run onboarding script
    sh onboard_agent.sh
    

    在 Linux 代理上执行以下步骤:

  1. 使用安装管理包的标准过程导入最新的 System Center Operations Manager 2022 Linux 管理包

  2. 在 Linux 服务器上手动或 [使用发现向导](/system-center/System Center Operations Manager/manage-deploy-crossplat-agent-console)在 Linux 服务器上安装新的 Linux 代理。

  3. 在要监视的每个 Linux 计算机上安装最新的 OMSAgent。 使用以下命令:

    # Download latest OMS Agent from GitHub
    wget https://raw.githubusercontent.com/Microsoft/OMS-Agent-for-Linux/master/installer/scripts/onboard_agent.sh
    
    # Run onboarding script
    sh onboard_agent.sh
    

    在 Linux 代理上执行以下步骤:

  1. 使用以下命令在以下路径中创建文件夹:

    # Create omsagent.d folder
    mkdir -p /etc/opt/microsoft/omsagent/scom/conf/omsagent.d
    
    # Create certs folder
    mkdir /etc/opt/microsoft/omsagent/scom/certs
    
    # Create log folder
    mkdir -p /var/opt/microsoft/omsagent/scom/log
    
    # Create run folder
    mkdir /var/opt/microsoft/omsagent/scom/run
    
    # Create state folder
    mkdir /var/opt/microsoft/omsagent/scom/state
    
    # Create tmp folder
    mkdir /var/opt/microsoft/omsagent/scom/tmp
    
    # Create fluent-logging folder (used for log file position file, this location is flexible)
    mkdir -p /home/omsagent/fluent-logging
    
  2. 将上述每个文件夹的所有权设置为 omsagent:omiusers

    # Change owner of System Center Operations Manager folder
    chown omsagent:omiusers /etc/opt/microsoft/omsagent/scom
    
    # Change owner of log folder
    chown omsagent:omiusers /var/opt/microsoft/omsagent/scom/log
    
    # Change owner of run folder
    chown omsagent:omiusers /var/opt/microsoft/omsagent/scom/run
    
    # Change owner of state folder
    chown omsagent:omiusers /var/opt/microsoft/omsagent/scom/state
    
    # Change owner of tmp folder
    chown omsagent:omiusers /var/opt/microsoft/omsagent/scom/tmp
    
    # Change owner of fluent-logging folder (used for log file position file, this location is flexible)
    chown omsagent:omiusers /home/omsagent/fluent-logging
    

    日志文件监视的屏幕截图。

  3. 创建 omsagent 和 omsconfig 文件:

    # Create omsadmin.conf file
    touch /etc/opt/microsoft/omsagent/scom/conf/omsadmin.conf
    
    # Create omsagent.conf file
    touch /etc/opt/microsoft/omsagent/scom/conf/omsagent.conf
    
  4. 将上述每个文件的所有权设置为 omsagent:omiusers

    # Change owner of omsadmin.conf file
    chown omsagent:omiusers /etc/opt/microsoft/omsagent/scom/conf/omsadmin.conf
    
    # Change owner of omsagent.conf file
    chown omsagent:omiusers /etc/opt/microsoft/omsagent/scom/conf/omsagent.conf
    
  5. 编辑文件 /etc/opt/microsoft/omsagent/scom/conf/omsadmin.conf,并在更改突出显示的信息后添加以下信息。

    WORKSPACE_ID=scom
    System Center Operations Manager_ENDPOINT=https://<mark>\<MSFQDN\></mark>:8886
    MONITORING_ID={274F8D7B-DBCA-8FC3-1451-8DCD55092156}
    
  6. 重启 OMSAgent:

    /opt/microsoft/omsagent/bin/service_control restart
    
  7. 验证 omsagent 日志中的状态:

    tail -100 /var/opt/microsoft/omsagent/scom/log/omsagent.log
    

启用 OMED 服务

在资源池中的每个管理服务器上启用 OMED 服务,并管理 Linux 代理。

OMED 服务从 Fluentd 收集事件,并将其转换为 Operations Manager 事件。 导入自定义管理包,该包可以根据从 Linux 服务器收到的事件生成警报。

可以从操作控制台或在管理服务器或网关服务器上手动启用 OMED 服务。

  1. 在操作控制台中,转到“监视>Operations Manager>管理服务器管理服务器>状态”。
  2. 选择“管理服务器”状态中的管理服务器。
  3. “任务>”中,选择运行状况服务“任务启用 System Center OMED 服务器”。

添加 OMED 防火墙规则

若要启用 OMED 防火墙规则,有两个选项:通过 PowerShell 自动添加端口(TCP/8886),也可以手动添加端口。

按照以下步骤使用 PowerShell 自动添加规则:

以下命令允许自动添加防火墙规则:

Set-NetFirewallRule -DisplayName "System Center Operations Manager External DataSource Service" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8886

为 OMSAgent 分配客户端证书

为 OMSAgent 分配客户端证书时,有两个选项。

  1. 链接到 OMI 代理中的签名证书。
  2. 手动为 OMS 代理生成客户端证书。

为从 OMI 代理链接到签名证书或从 OMS 代理手动生成客户端证书的步骤,请选择所需的选项卡:

  1. 将文件的omi.pemomikey.pem所有权设置为omsagent:omiusers

    # Change owner of System Center Operations Manager-cert.pem file
    chown omsagent:omiusers /etc/opt/microsoft/omsagent/scom/certs/scom-cert.pem
    
    # Change owner of System Center Operations Manager-key.pem file
    chown omsagent:omiusers /etc/opt/microsoft/omsagent/scom/certs/scom-key.pem
    
  2. 在 Linux 计算机上运行以下命令,将 OMS 代理客户端证书设置为 OMI 证书(Operations Manager Linux 代理证书):

    # Link file omi.pem to System Center Operations Manager-cert.pem
    ln -s /etc/opt/omi/ssl/omi.pem /etc/opt/microsoft/omsagent/scom/certs/scom-cert.pem
    
    # Link file omikey.pem to System Center Operations Manager-key.pem
    ln -s /etc/opt/omi/ssl/omikey.pem /etc/opt/microsoft/omsagent/scom/certs/scom-key.pem
    

创建 Fluentd 配置文件

使用配置文件配置 Fluentd 操作。 若要利用日志监视,必须创建配置文件。 配置文件包括源日志文件名称、路径和筛选器等信息,用于定义要收集的数据。

master Fluentd 配置文件 omsagent.conf 位于 /etc/opt/microsoft/omsagent/scom/conf/. 可以将日志文件监视配置直接添加到此文件,但应创建单独的配置文件,以便更好地管理不同的设置。 然后,在主文件中使用指令 @include 来包含自定义文件。

例如,如果创建了 logmonitoring.conf/etc/opt/microsoft/omsagent/scom/conf/omsagent.d则会将以下行之一添加到 omsagent.d 文件中:

# Include all configuration files
@include omsagent.d/*.conf

# Include single configuration file
@include omsagent.d/logmonitoring.conf

有关 Fluentd 配置文件的详细信息,请参阅 Fluentd 配置文件语法

以下部分介绍配置文件的不同指令中的设置,这些设置对日志文件监视是唯一的。 每个设置都包含可以粘贴到配置文件中的示例设置,并根据需要进行修改。

可以在创建自己的配置文件之前查看和评估日志监视的完整示例配置文件。

Source

Source 指令定义要收集的数据源,这是定义日志文件的详细信息的位置。 Fluentd 会选取写入源的每个记录,并将事件提交到 Fluentd 的路由引擎中。 在此指令中在此处指定标记。 该标记是一个字符串,用作 Fluentd 的内部路由引擎关联不同指令的方向。

以下示例显示了由 Operations Manager 收集和标记的用于处理的 syslog 记录。

<source>

    # Specifies input plugin. Tail is a fluentd input plugin - http://docs.fluentd.org/v0.12/articles/in\_tail
    type tail

    # Specify the log file path. Supports wild cards.
    path /var/log/syslog

    # Recommended so that Fluentd will record the position it last read into this file.
    pos_file /home/user1/fluent-test/demo_syslog.log.pos

    # Used to correlate the directives.
    tag System Center Operations Manager.log.syslog

    format /(?<message>.*)/

</source>

筛选器

筛选器指令的语法与 Match 相同,但允许对要处理的数据进行更复杂的筛选。 收集的事件必须与要添加到输出的所有筛选器的条件匹配。

此处介绍的日志文件监视有六个筛选器插件。 使用其中一个或多个筛选器定义要从日志文件中收集的事件。

  • 简单匹配:filter_System中心运营Manager_simple_match
  • 独占匹配项:filter_System中心运营Manager_excl_match
  • 重复关联:filter_System中心运营Manager_repeated_cor
  • 相关匹配:filter_System中心运营Manager_cor_match
  • 独占关联:filter_System中心运营Manager_excl_correlation
  • Operations Manager 转换器:filter_System Center Operations Manager_converter

选择所需的选项卡以复制相应筛选器插件的代码:

最多需要 20 种输入模式。 只要匹配任何模式,就会向 Operations Manager 发送事件。

<filter tag>

    type filter_System Center Operations Manager_simple_match
    regexp1 <key> <pattern>
    event_id1 <event ID>
    regexp2 <key> <pattern>
    event_id2 <event ID>
    .
    .
    .
    regexp20 <key> <pattern>
    event_id20 <event ID>
</filter>

匹配

match 指令定义如何使用匹配标记处理从源收集的事件。 只有标记与模式匹配的事件才会发送到输出目标。 当多个模式在一个 匹配 标记内列出时,事件可以匹配列出的任何模式。 type 参数指定用于这些事件的插件类型。

此示例处理与 System Center Operations Manager.log 匹配 的标记的事件。 ** 和 System Center Operations Manager.alert (** 匹配零个或多个标记部件)。 它指定 out_System Center Operations Manager 插件,该插件允许 Operations Manager 管理包收集事件。

<match System Center Operations Manager.log.** System Center Operations Manager.event>

    # Output plugin to use
     type out_System Center Operations Manager

    log_level trace
    num_threads 5

    # Size of the buffer chunk. If the top chunk exceeds this limit or the time limit flush_interval, a new empty chunk is pushed to the top of the
    queue and bottom chunk is written out.
    buffer_chunk_limit 5m
    flush_interval 15s

    # Specifies the buffer plugin to use.
    buffer_type file

    # Specifies the file path for buffer. Fluentd must have write access to this directory.
    buffer_path /var/opt/microsoft/omsagent/scom/state/out_System Center Operations Manager_common*.buffer

    # If queue length exceeds the specified limit, events are rejected.
    buffer_queue_limit 10

    # Control the buffer behavior when the queue becomes full: exception, block, drop_oldest_chunk
    buffer_queue_full_action drop_oldest_chunk

    # Number of times Fluentd will attempt to write the chunk if it fails.
    retry_limit 10

    # If the bottom chunk fails to be written out, it will remain in the queue and Fluentd will retry after waiting retry_wait seconds
    retry_wait 30s

    # The retry wait time doubles each time until max_retry_wait.
    max_retry_wait 9m

</match>

注意

若要在使用 Fluentd 通信的 Linux 计算机上禁用服务器身份验证,请将参数 enable_server_auth false 添加到 Fluentd Operations Manager 插件,如下所示:

<match System Center Operations Manager.log.** System Center Operations Manager.event>
type out_System Center Operations Manager

max_retry_wait 9m
enable_server_auth false

</match>

将配置文件复制到代理

在要监视的所有 Linux 计算机上,必须将 Fluentd 配置文件复制到 /etc/opt/microsoft/omsagent/scom/conf/omsagent.d。 还必须在主配置文件中添加指令 @include ,如上所述。

重启 omsagent

可以运行以下命令来重启 omsagent:

/opt/microsoft/omsagent/bin/service_control restart

检查 System Center Operations Manager 工作区的状态

运行以下命令,检查 OMSAgent 上的 System Center Operations Manager 工作区:

sh /opt/microsoft/omsagent/bin/omsadmin.sh -l

注意

在运行 OMED 服务的管理服务器上,确保端口 8886 上的防火墙已打开,并且中间证书颁发机构证书存储仅包含中间证书颁发机构。

System Center Operations Manager 外部 DataSource 服务的事件日志

仅当事件成功发送到 System Center Operations Manager 外部 DataSource Service (OMED) 服务时,才会创建 System Center OMED 服务事件日志。

创建规则和监视器

Linux 管理包不提供从 FluentD 收集事件的模块,Linux 管理包与 Linux 代理捆绑在一起。 它是 Linux 代理中的 Fluentd 模块以及管理和网关服务器上的 OMED 服务,可提供增强的日志文件监视功能。

需要使用自定义规则和监视器创建自己的管理包,这些规则和监视器使用模块 Microsoft.Linux.OMED.EventDataSource 从 Fluentd 收集事件。 请注意,通过 System Center OMED 服务 事件日志发送的事件中的计算机名称必须与 UNIX/Linux 计算机视图中的计算机名称匹配。 如果计算机名称不匹配,则不会收到任何警报。

下表列出了 Microsoft.Linux.OMED.EventDataSource 的参数

参数 类型 描述
计算机名 字符串 必需。 指定要读取事件的 Linux 计算机的名称。 ComputerName 参数通常通过使用 $Target 表示法传递给模块,但可以将其指定为任何字符串。 此模块尝试读取给定 Linux 计算机生成的事件。
ManagedEntityId 字符串 必需。 指定受监视实体的托管实体 ID。 ManagedEntityId 参数通常通过使用 $Target\Id$传递给模块。
EventNumber Integer 可选。 指示要检索的事件的事件编号。 如果省略此选项,模块将返回为该计算机和托管实体生成的所有事件

后续步骤

  • 若要创建自定义视图来查看自定义日志文件管理包中的监视数据,请查看 Operations Manager 中的“使用视图”。

  • 若要了解如何调查自定义日志文件管理包标识的问题,请查看 查看活动警报和详细信息