使用 Azure Monitor 代理收集 Syslog 事件

Syslog 事件是数据收集规则 (DCR) 中使用的数据源之一。 有关创建 DCR 的详细信息,请参阅使用 Azure Monitor 代理收集数据。 本文提供有关 Syslog 事件数据源类型的其他详细信息。

Syslog 是普遍适用于 Linux 的事件日志记录协议。 可以使用内置于 Linux 设备的 Syslog 守护程序来收集你指定的类型的本地事件。 应用程序会发送存储在本地计算机或传递到 Syslog 收集器的消息。

提示

若要从不允许在本地安装 Azure Monitor 代理的设备收集数据,请配置基于 Linux 的专用日志转发器

先决条件

配置 Syslog 数据收集

在 DCR 的“收集和传递”步骤中,从“数据源类型”下拉列表中选择“Linux Syslog”

Syslog 收集器支持以下功能:

优先级索引编号 优先级名称
{无} 优先级编号
0 Kern
1 user
2 mail
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)。

显示数据收集规则中 Azure Monitor 日志目标的配置的屏幕截图。

在 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 mail
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。
  • 请参阅验证操作,以验证代理是否正在运行,以及是否正在接收数据。

后续步骤

了解有关以下方面的详细信息: