注意
本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑您的使用方式和计划。 有关详细信息,请参阅 CentOS 生命周期结束指南。
Syslog 是普遍适用于 Linux 的事件日志记录协议。 应用程序发送可能存储在本地计算机上或传递到 Syslog 收集器的消息。 安装适用于 Linux 的 Log Analytics 代理后,它会配置本地 Syslog 守护程序以将消息转发到代理。 然后,代理会将消息发送到创建相应记录的 Azure Monitor。
重要
自 2024 年 8 月 31 日起,旧版 Log Analytics 代理已弃用。 Microsoft将不再为 Log Analytics 代理提供任何支持。 如果使用 Log Analytics 代理将数据引入 Azure Monitor,请立即迁移到 Azure Monitor 代理。
注释
当 rsyslog 为默认守护程序时,Azure Monitor 支持 rsyslog 或 syslog-ng 发送的消息集合。 Red Hat Enterprise Linux、CentOS 和 Oracle Linux 第 5 版的默认 Syslog 守护程序(sysklog)不支持 Syslog 事件收集。 若要从这些分发版收集 Syslog 数据,应安装 rsyslog 守护程序 并将其配置为替换 sysklog。
Syslog 收集器支持以下功能:
- 科恩
- 用户
- 邮件
- 守护程序
- auth
- 系统日志 (syslog)
- lpr
- 新闻
- uucp
- cron (定时)
- authpriv
- ftp
- local0-local7
对于任何其他设施,请在 Azure Monitor 中 配置自定义日志数据源 。
配置 Syslog
适用于 Linux 的 Log Analytics 代理将仅收集其配置中指定的设施和严重性的事件。 可以通过 Azure 门户或通过管理 Linux 代理上的配置文件来配置 Syslog。
在 Azure 门户中配置 Syslog
在 Log Analytics 工作区的代理配置菜单中配置 Syslog。 此配置将传递到每个 Linux 代理上的配置文件。
可以通过选择 “添加设施”来添加新设施。 对于每个设施,将仅收集具有所选严重性的消息。 选择要收集的特定设施的严重性。 无法提供任何其他条件来筛选消息。
默认情况下,所有配置更改都会自动推送到所有代理。 如果要在每个 Linux 代理上手动配置 Syslog,请清除“ 将以下配置应用于计算机 ”复选框。
在 Linux 代理上配置 Syslog
在 Linux 客户端上安装 Log Analytics 代理时,它会安装一个默认的 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 配置,并在位于
/etc/syslog-ng/中的syslog-ng.conf配置文件的末尾添加自定义修改的设置。 请勿使用默认标签%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 ,并具有下表中显示的属性。
| 资产 | Description |
|---|---|
| Computer | 从中收集事件的计算机。 |
| 设施 | 定义生成消息的系统部分。 |
| 主机IP地址 | 发送消息的系统的 IP 地址。 |
| 主机名 | 发送消息的系统的名称。 |
| 严重程度级别 | 事件的严重性级别。 |
| Syslog消息 | 消息的文本。 |
| ProcessID | 生成消息的进程 ID。 |
| EventTime | 生成事件的日期和时间。 |
使用 Syslog 记录的日志查询
下表提供了检索 Syslog 记录的不同日志查询示例。
| Query | Description |
|---|---|
| Syslog | 所有系统日志 |
| Syslog |where SeverityLevel == “错误” | 具有错误严重级别的所有 Syslog 记录 |
| Syslog | summarize AggregatedValue = count() by Computer | 按计算机计算的 Syslog 记录数目 |
| Syslog | summarize AggregatedValue = count() by Facility | 按设施计算的 Syslog 记录数目 |
后续步骤
- 了解 日志查询 ,以分析从数据源和解决方案收集的数据。
- 使用 自定义字段 将数据从 Syslog 记录分析为单个字段。
- 配置 Linux 代理 以收集其他类型的数据。