使用 Azure Monitor 代理收集 Syslog 事件
Syslog 事件是数据收集规则 (DCR) 中使用的数据源之一。 有关创建 DCR 的详细信息,请参阅使用 Azure Monitor 代理收集数据。 本文提供有关 Syslog 事件数据源类型的其他详细信息。
Syslog 是普遍适用于 Linux 的事件日志记录协议。 可以使用内置于 Linux 设备的 Syslog 守护程序来收集你指定的类型的本地事件。 应用程序会发送存储在本地计算机或传递到 Syslog 收集器的消息。
提示
若要从不允许在本地安装 Azure Monitor 代理的设备收集数据,请配置基于 Linux 的专用日志转发器。
先决条件
- Log Analytics 工作区,你在其中至少拥有参与者权限。 Syslog 事件将发送到 Syslog 表。
- 使用 Azure Monitor 代理收集数据中所述的新 DCR 或现有 DCR。
配置 Syslog 数据收集
在 DCR 的“收集和传递”步骤中,从“数据源类型”下拉列表中选择“Linux Syslog”。
Syslog 收集器支持以下功能:
优先级索引编号 | 优先级名称 |
---|---|
{无} | 优先级编号 |
0 | Kern |
1 | user |
2 | |
3 | daemon |
4 | auth |
5 | syslog |
6 | lpr |
7 | 新闻 |
8 | uucp |
9 | cron |
10 | authpriv |
11 | ftp |
12 | ntp |
13 | 审核 |
14 | 警报 |
15 | clock |
16 | local0 |
17 | local1 |
18 | local2 |
19 | local3 |
20 | local4 |
21 | local5 |
22 | local6 |
23 | local7 |
默认情况下,代理将收集 Syslog 配置发送的所有事件。 更改每个设施的“最小日志级别”以限制数据收集。 选择“无”将不收集特定设施的事件。
目标
Syslog 数据可以发送到以下位置。
目标 | 表/命名空间 |
---|---|
Log Analytics 工作区 | Syslog |
注意
Azure Monitor Linux 代理版本 1.15.2 或更高版本支持 Syslog RFC 格式,包括 Cisco Meraki、Cisco ASA、Cisco FTD、Sophos XG、Juniper Networks、Corelight Zeek、CipherTrust、NXLog、McAfee 和通用事件格式 (CEF)。
在 Linux 代理上配置 Syslog
在 Linux 计算机上安装 Azure Monitor 代理时,它会安装默认的 Syslog 配置文件,该文件定义设施以及在 DCR 中启用 Syslog 时收集的消息的严重级别。 此配置文件视客户端已安装的 Syslog 守护程序而异。
Rsyslog
在许多 Linux 发行版中,rsyslogd 守护程序负责使用、存储和路由使用 Linux Syslog API 发送的日志消息。 Azure Monitor 代理使用 rsyslog 中的 TCP 转发输出模块 (omfwd
) 转发日志消息。
Azure Monitor 代理安装包括位于 /etc/opt/microsoft/azuremonitoragent/syslog/rsyslogconf/
中的默认配置文件。 在 Syslog 添加到 DCR 时,此配置将安装在 etc/rsyslog.d
系统目录下,rsyslog 将自动重启,从而使更改生效。
注意
在基于 rsyslog 的系统上,Azure Monitor Linux 代理将转发规则添加到 rsyslog 配置中定义的默认规则集。 如果使用了多个规则集,则绑定到非默认规则集的输入不会转发到 Azure Monitor 代理。 有关 rsyslog 中的多个规则集的详细信息,请参阅官方文档。
下面是默认配置,它收集从本地代理发送的所有设施的所有日志级别的 Syslog 消息。
$ cat /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
# Azure Monitor Agent configuration: forward logs to azuremonitoragent
template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%")
# queue.workerThreads sets the maximum worker threads, it will scale back to 0 if there is no activity
# Forwarding all events through TCP port
*.* action(type="omfwd"
template="AMA_RSYSLOG_TraditionalForwardFormat"
queue.type="LinkedList"
queue.filename="omfwd-azuremonitoragent"
queue.maxFileSize="32m"
queue.maxDiskSpace="1g"
action.resumeRetryCount="-1"
action.resumeInterval="5"
action.reportSuspension="on"
action.reportSuspensionContinuation="on"
queue.size="25000"
queue.workerThreads="100"
queue.dequeueBatchSize="2048"
queue.saveonshutdown="on"
target="127.0.0.1" Port="28330" Protocol="tcp")
当你使用 SELinux 并决定使用 Unix 套接字时,将使用以下配置。
$ cat /etc/rsyslog.d/10-azuremonitoragent.conf
# Azure Monitor Agent configuration: forward logs to azuremonitoragent
$OMUxSockSocket /run/azuremonitoragent/default_syslog.socket
template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%")
$OMUxSockDefaultTemplate AMA_RSYSLOG_TraditionalForwardFormat
# Forwarding all events through Unix Domain Socket
*.* :omuxsock:
$ cat /etc/rsyslog.d/05-azuremonitoragent-loadomuxsock.conf
# Azure Monitor Agent configuration: load rsyslog forwarding module.
$ModLoad omuxsock
在某些旧系统上,当使用传统转发格式将 Syslog 事件发送到 Azure Monitor 代理时,可能会出现 rsyslog 日志格式设置问题。 对于这些系统,Azure Monitor 代理会自动放置旧版转发器模板:
template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%\n")
Syslog-ng
Azure Monitor 代理安装包括位于 /etc/opt/microsoft/azuremonitoragent/syslog/syslog-ngconf/azuremonitoragent-tcp.conf
中的默认配置文件。 在 Syslog 添加到 DCR 时,此配置将安装在 /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf
系统目录下,syslog-ng 将自动重启,从而使更改生效。
默认内容如下例所示。 这会收集针对全部设施和所有严重级别的从本地代理发送的 Syslog 消息。
$ cat /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf
# Azure MDSD configuration: syslog forwarding config for mdsd agent
options {};
# during install time, we detect if s_src exist, if it does then we
# replace it by appropriate source name like in redhat 's_sys'
# Forwrding using tcp
destination d_azure_mdsd {
network("127.0.0.1"
port(28330)
log-fifo-size(25000));
};
log {
source(s_src); # will be automatically parsed from /etc/syslog-ng/syslog-ng.conf
destination(d_azure_mdsd);
flags(flow-control);
};
当你使用 SELinux 并决定使用 Unix 套接字时,将使用以下配置。
$ cat /etc/syslog-ng/conf.d/azuremonitoragent.conf
# Azure MDSD configuration: syslog forwarding config for mdsd agent options {};
# during install time, we detect if s_src exist, if it does then we
# replace it by appropriate source name like in redhat 's_sys'
# Forwrding using unix domain socket
destination d_azure_mdsd {
unix-dgram("/run/azuremonitoragent/default_syslog.socket"
flags(no_multi_line) );
};
log {
source(s_src); # will be automatically parsed from /etc/syslog-ng/syslog-ng.conf
destination(d_azure_mdsd);
};
注意
当 rsyslog 为默认守护程序时,Azure Monitor 支持 rsyslog 或 syslog-ng 发送的消息集合。 Red Hat Enterprise Linux 版本 5 和 Oracle Linux 版本 (sysklog) 上的默认 Syslog 守护程序不支持 Syslog 事件收集。 要从这些发行版的此版本中收集 Syslog 数据,应安装并配置 rsyslog 守护程序以替换 sysklog。
如果编辑 Syslog 配置,必须重启 Syslog 守护程序才能使更改生效。
支持的设施
Syslog 收集器支持以下功能:
Pri 索引 | Pri 名称 |
---|---|
0 | 无 |
1 | Kern |
2 | user |
3 | |
4 | daemon |
4 | auth |
5 | syslog |
6 | lpr |
7 | 新闻 |
8 | uucp |
9 | ftp |
10 | ntp |
11 | 审核 |
12 | 警报 |
13 | mark |
14 | local0 |
15 | local1 |
16 | local2 |
17 | local3 |
18 | local4 |
19 | local5 |
20 | local6 |
21 | local7 |
Syslog 记录属性
Syslog 记录的类型为“Syslog”,并且具有下表中的属性。
属性 | 说明 |
---|---|
Computer | 从中收集事件的计算机。 |
设施 | 定义生成消息的系统部分。 |
HostIP | 发送消息的系统的 IP 地址。 |
HostName | 发送消息的系统的名称。 |
SeverityLevel | 事件的严重级别。 |
SyslogMessage | 消息的文本。 |
ProcessID | 生成消息的进程 ID。 |
EventTime | 生成事件的日期和时间。 |
示例 Syslog 日志查询
下表提供了检索 Syslog 记录的不同日志查询示例。
所有 Syslog
Syslog
严重级别为“错误”的所有 Syslog 记录
Syslog | where SeverityLevel == "error"
具有身份验证设施类型的所有 Syslog 记录
Syslog | where facility == "auth"
按设施计算的 Syslog 记录数目
Syslog | summarize AggregatedValue = count() by facility
故障排除
如果没有从预期的 JSON 日志中收集到数据,请执行以下步骤。
- 验证数据是否正在写入到 Syslog。
- 请参阅验证操作,以验证代理是否正在运行,以及是否正在接收数据。
后续步骤
了解有关以下方面的详细信息: