使用 Log Analytics 代理收集 Syslog 数据源

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。

Syslog 是普遍适用于 Linux 的事件日志记录协议。 应用程序将发送可能存储在本地计算机或传递到 Syslog 收集器的消息。 安装适用于 Linux 的 Log Analytics 代理后,它将配置本地 Syslog 后台程序,以将消息转发到此代理。 然后,此代理将消息发送到 Azure Monitor,在其中创建相应的记录。

重要

旧版 Log Analytics 代理将于 2024 年 8 月弃用。 在此日期之后,Azure 将不再为 Log Analytics 代理提供任何支持。 请在 2024 年 8 月之前迁移到 Azure Monitor 代理,这样才能继续引入数据。

注意

当 rsyslog 为默认守护程序时,Azure Monitor 支持 rsyslog 或 syslog-ng 发送的消息集合。 Syslog 事件收集不支持 Red Hat Enterprise Linux、CentOS 和 Oracle Linux 版本 (sysklog) 版本 5 上的默认 Syslog 守护程序。 要从这些发行版的此版本中收集 Syslog 数据,应安装并配置 rsyslog 守护程序以替换 sysklog。

Diagram that shows Syslog collection.

Syslog 收集器支持以下功能:

  • kern
  • user
  • mail
  • daemon
  • auth
  • syslog
  • lpr
  • news
  • uucp
  • cron
  • authpriv
  • ftp
  • local0-local7

对于任何其他功能,请在 Azure Monitor 中配置自定义日志数据源

配置 Syslog

针对 Linux 的 Log Analytics 代理将仅收集在其配置中指定设施和严重级别的事件。 通过 Azure 门户或通过管理 Linux 代理的配置文件来配置 Syslog。

在 Azure 门户中配置 Syslog

代理配置菜单中为 Log Analytics 工作区配置 Syslog。 此配置将传递到每个 Linux 代理上的配置文件。

可以通过选择“添加设施”来添加新设施。 对于每个设施,将仅收集具有所选严重级别的消息。 选择要收集的特定设施的严重级别。 不能提供任何其他条件来筛选消息。

Screenshot that shows configuring Syslog.

默认情况下,所有配置更改均会自动推送到所有代理。 如果想在每个 Linux 代理上手动配置 Syslog,请清除“将以下配置应用到我的计算机”复选框。

在 Linux 代理上配置 Syslog

Log Analytics 代理安装在 Linux 客户端上后,它将安装可定义收集的消息的设施和严重级别的默认 Syslog 配置文件。 可以修改此文件以更改配置。 此配置文件视客户端已安装的 Syslog 守护程序而异。

注意

如果编辑 Syslog 配置,必须重启 Syslog 守护程序才能使更改生效。

rsyslog

rsyslog 的配置文件位于 /etc/rsyslog.d/95-omsagent.conf。 其默认内容如下例所示。 此示例会收集针对警告或更高级别的全部设施从本地代理发送的 Syslog 消息。

kern.warning       @127.0.0.1:25224
user.warning       @127.0.0.1:25224
daemon.warning     @127.0.0.1:25224
auth.warning       @127.0.0.1:25224
syslog.warning     @127.0.0.1:25224
uucp.warning       @127.0.0.1:25224
authpriv.warning   @127.0.0.1:25224
ftp.warning        @127.0.0.1:25224
cron.warning       @127.0.0.1:25224
local0.warning     @127.0.0.1:25224
local1.warning     @127.0.0.1:25224
local2.warning     @127.0.0.1:25224
local3.warning     @127.0.0.1:25224
local4.warning     @127.0.0.1:25224
local5.warning     @127.0.0.1:25224
local6.warning     @127.0.0.1:25224
local7.warning     @127.0.0.1:25224

通过删除设施的配置文件部分可删除某个设施。 通过修改设施条目,可以针对某个特定设施限制收集的严重级别。 例如,要将用户设施限制为错误或更高严重级别的消息,则需要将配置文件的相应行修改为如下示例:

user.error    @127.0.0.1:25224

syslog-ng

syslog-ng 的配置文件位于 /etc/syslog-ng/syslog-ng.conf。 其默认内容显示在此示例中。 这会收集针对全部设施和所有严重级别的从本地代理发送的 Syslog 消息。

#
# Warnings (except iptables) in one file:
#
destination warn { file("/var/log/warn" fsync(yes)); };
log { source(src); filter(f_warn); destination(warn); };

#OMS_Destination
destination d_oms { udp("127.0.0.1" port(25224)); };

#OMS_facility = auth
filter f_auth_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(auth); };
log { source(src); filter(f_auth_oms); destination(d_oms); };

#OMS_facility = authpriv
filter f_authpriv_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(authpriv); };
log { source(src); filter(f_authpriv_oms); destination(d_oms); };

#OMS_facility = cron
filter f_cron_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(cron); };
log { source(src); filter(f_cron_oms); destination(d_oms); };

#OMS_facility = daemon
filter f_daemon_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(daemon); };
log { source(src); filter(f_daemon_oms); destination(d_oms); };

#OMS_facility = kern
filter f_kern_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(kern); };
log { source(src); filter(f_kern_oms); destination(d_oms); };

#OMS_facility = local0
filter f_local0_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(local0); };
log { source(src); filter(f_local0_oms); destination(d_oms); };

#OMS_facility = local1
filter f_local1_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(local1); };
log { source(src); filter(f_local1_oms); destination(d_oms); };

#OMS_facility = mail
filter f_mail_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(mail); };
log { source(src); filter(f_mail_oms); destination(d_oms); };

#OMS_facility = syslog
filter f_syslog_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(syslog); };
log { source(src); filter(f_syslog_oms); destination(d_oms); };

#OMS_facility = user
filter f_user_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(user); };
log { source(src); filter(f_user_oms); destination(d_oms); };

通过删除设施的配置文件部分可删除某个设施。 通过将严重级别从其列表中删除,可以针对某个特定设施限制收集的严重级别。 例如,要将用户设施限制为仅警告关键消息,将修改配置文件的该部分,如以下示例所示:

#OMS_facility = user
filter f_user_oms { level(alert,crit) and facility(user); };
log { source(src); filter(f_user_oms); destination(d_oms); };

从其他 Syslog 端口收集数据

Log Analytics 代理在端口 25224 侦听本地客户端上的 Syslog 消息。 安装代理时,会应用默认的 Syslog 配置,此配置位于以下位置:

  • Rsyslog:/etc/rsyslog.d/95-omsagent.conf
  • Syslog-ng:/etc/syslog-ng/syslog-ng.conf

可通过创建两个配置文件来更改端口号:FluentD 配置文件和 rsyslog-or-syslog-ng(取决于已安装的 Syslog 守护程序)。

  • FluentD 配置文件应为新文件(位于 /etc/opt/microsoft/omsagent/conf/omsagent.d),同时用自定义端口号替换 port 条目中的值。

    <source>
        type syslog
        port %SYSLOG_PORT%
        bind 127.0.0.1
        protocol_type udp
        tag oms.syslog
    </source>
    <filter oms.syslog.**>
        type filter_syslog
    
  • 对于 rsyslog,应创建新的配置文件(位于 /etc/rsyslog.d/),同时用自定义端口号替换值 %SYSLOG_PORT%

    注意

    如果修改了配置文件 95-omsagent.conf 中的此值,代理应用默认配置时将覆盖此值。

    # OMS Syslog collection for workspace %WORKSPACE_ID%
    kern.warning              @127.0.0.1:%SYSLOG_PORT%
    user.warning              @127.0.0.1:%SYSLOG_PORT%
    daemon.warning            @127.0.0.1:%SYSLOG_PORT%
    auth.warning              @127.0.0.1:%SYSLOG_PORT%
    
  • 若要修改 syslog-ng 配置,应复制旁边显示的示例配置,然后将自定义修改设置添加到 syslog-ng.conf 配置文件(位于 /etc/syslog-ng/)的末尾。 不要使用默认标签 %WORKSPACE_ID%_oms%WORKSPACE_ID_OMS。 定义自定义标签以帮助区分更改。

    注意

    如果修改了配置文件中的默认值,代理应用默认配置时将覆盖这些值。

    filter f_custom_filter { level(warning) and facility(auth; };
    destination d_custom_dest { udp("127.0.0.1" port(%SYSLOG_PORT%)); };
    log { source(s_src); filter(f_custom_filter); destination(d_custom_dest); };
    

完成更改后,重启 Syslog 和 Log Analytics 代理服务以确保配置更改生效。

Syslog 记录属性

Syslog 记录的类型为“Syslog”,并且具有下表中的属性。

属性 说明
Computer 从中收集事件的计算机。
设施 定义生成消息的系统部分。
HostIP 发送消息的系统的 IP 地址。
HostName 发送消息的系统的名称。
SeverityLevel 事件的严重级别。
SyslogMessage 消息的文本。
ProcessID 生成消息的进程 ID。
EventTime 生成事件的日期和时间。

具有 Syslog 记录的日志查询

下表提供了检索 Syslog 记录的不同日志查询示例。

查询 说明
Syslog 所有 Syslog
Syslog | where SeverityLevel == "error 严重级别为“错误”的所有 Syslog 记录
Syslog | summarize AggregatedValue = count() by Computer 按计算机计算的 Syslog 记录数目
Syslog | summarize AggregatedValue = count() by Facility 按设施计算的 Syslog 记录数目

后续步骤

  • 了解日志查询以便分析从数据源和解决方案中收集的数据。
  • 使用自定义字段将来自 Syslog 记录的数据解析为单个字段。