

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置系统日志设备
<a name="CWL_Syslog_DeviceConfig"></a>

设置系统日志提取后，将系统日志源配置为向 VPC 终端节点 DNS 名称发送消息。您的设备通过您的 VPN 或与 VPC 的 Direct Connect 连接到达终端节点。

**注意**  
以下配置作为示例提供。有关完整的配置选项和最佳实践，请参阅 syslog 实现的官方文档（rsyslog、syslog-ng 或您的设备供应商）。

在以下示例中，`{{VPCE_DNS}}`替换为设置过程中的 VPC 终端节点 DNS 名称（例如`vpce-0abc123def456.syslog-logs.us-east-1.vpce.amazonaws.com`）。

## rsyslog
<a name="CWL_Syslog_DeviceConfig_Rsyslog"></a>

rsyslog 是大多数 Linux 发行版上的默认 syslog 守护程序。将以下配置添加到`/etc/rsyslog.d/50-cwl-syslog.conf`。

**TCP \+ TLS：**

```
# Forward all logs to CloudWatch Logs via TCP+TLS
action(type="omfwd"
  target="{{VPCE_DNS}}"
  port="6514"
  protocol="tcp"
  StreamDriver="gtls"
  StreamDriverMode="1"
  StreamDriverAuthMode="x509/certvalid"
  template="RSYSLOG_SyslogProtocol23Format"
  queue.type="LinkedList"
  queue.filename="cwl_fwd"
  queue.saveOnShutdown="on"
  action.resumeRetryCount="-1")
```

**TCP 纯文本：**

```
# Forward all logs to CloudWatch Logs via plaintext TCP
action(type="omfwd"
  target="{{VPCE_DNS}}"
  port="1514"
  protocol="tcp"
  template="RSYSLOG_SyslogProtocol23Format"
  queue.type="LinkedList"
  queue.filename="cwl_fwd"
  queue.saveOnShutdown="on"
  action.resumeRetryCount="-1")
```

**UDP：**

```
# Forward all logs to CloudWatch Logs via UDP
action(type="omfwd"
  target="{{VPCE_DNS}}"
  port="514"
  protocol="udp"
  template="RSYSLOG_SyslogProtocol23Format")
```

添加配置后，重新启动 rsyslog：

```
sudo systemctl restart rsyslog
```

**注意**  
`queue.type="LinkedList"`和指`queue.saveOnShutdown="on"`令启用磁盘辅助队列。如果与 VPC 终端节点的连接暂时中断，rsyslog 会在本地缓冲消息并重试传送。

**按设施或严重程度筛选：**

要仅发送特定消息，请在操作前添加过滤器：

```
# Send only auth messages via TCP+TLS
auth,authpriv.* action(type="omfwd"
  target="{{VPCE_DNS}}"
  port="6514"
  protocol="tcp"
  StreamDriver="gtls"
  StreamDriverMode="1"
  StreamDriverAuthMode="x509/certvalid"
  template="RSYSLOG_SyslogProtocol23Format")
```

## syslog-ng
<a name="CWL_Syslog_DeviceConfig_SyslogNg"></a>

syslog-ng 通常用于网络设备和企业 Linux 系统。将以下配置添加到`/etc/syslog-ng/conf.d/cwl-syslog.conf`。

**TCP \+ TLS：**

```
destination d_cwl_syslog {
  network("{{VPCE_DNS}}"
    port(6514)
    transport("tls")
    tls(
      peer-verify(required-trusted)
      ca-dir("/etc/ssl/certs")
    )
  );
};

log {
  source(s_sys);
  destination(d_cwl_syslog);
};
```

**TCP 纯文本：**

```
destination d_cwl_syslog {
  network("{{VPCE_DNS}}"
    port(1514)
    transport("tcp")
  );
};

log {
  source(s_sys);
  destination(d_cwl_syslog);
};
```

**UDP：**

```
destination d_cwl_syslog {
  network("{{VPCE_DNS}}"
    port(514)
    transport("udp")
  );
};

log {
  source(s_sys);
  destination(d_cwl_syslog);
};
```

添加配置后，重新启动 syslog-ng：

```
sudo systemctl restart syslog-ng
```

## 快速验证
<a name="CWL_Syslog_DeviceConfig_QuickTest"></a>

在任何可以到达 VPC 终端节点的主机上使用以下命令来验证连通性。

**TCP 明文（端口 1514）：**

```
echo "<134>1 $(date -u +%Y-%m-%dT%H:%M:%SZ) myhost myapp 1234 - - Hello from syslog" | \
  nc {{VPCE_DNS}} 1514
```

**TCP \+ TLS（端口 6514）：**

```
echo "<134>1 $(date -u +%Y-%m-%dT%H:%M:%SZ) myhost myapp 1234 - - Hello TLS syslog" | \
  openssl s_client -connect {{VPCE_DNS}}:6514 -quiet -no_ign_eof
```

**UDP（端口 514）：**

```
echo "<134>1 $(date -u +%Y-%m-%dT%H:%M:%SZ) myhost myapp 1234 - - Hello UDP syslog" | \
  nc -u -w1 {{VPCE_DNS}} 514
```

发送测试消息后，在 CloudWatch 日志中验证传送情况（通常在 10—20 秒内）：

```
aws logs filter-log-events \
  --log-group-name /syslog/my-devices \
  --start-time $(date -d '5 minutes ago' +%s000 2>/dev/null || echo $(($(date -v-5M +%s) * 1000))) \
  --region $REGION
```

## 网络设备
<a name="CWL_Syslog_DeviceConfig_NetworkDevices"></a>

大多数防火墙、路由器和交换机都支持通过指定目标 IP 地址和端口来配置外部 syslog 服务器。使用 VPC 终端节点 ENI 的私有 IP 地址（在 Amazon VPC 控制台的**终端节点**下可见）和其中一个支持的端口（6514、1514 或 514）。

有关具体的配置语法，请参阅设备的文档。要配置的关键设置是：
+ **服务器地址** — VPC 终端节点 DNS 名称或 ENI 私有 IP 地址。
+ **端口** — 6514 (TCP\+TLS)、1514 (TCP) 或 514 (UDP)。
+ **协议**-TCP（推荐）或 UDP。
+ **格式** — RFC 5424（首选）或 RFC 3164（旧版）。两者都受支持。

## TLS 证书信任
<a name="CWL_Syslog_DeviceConfig_TLS"></a>

端口 6514 上的 TLS 连接使用亚马逊信任服务颁发的 AWS托管证书。大多数操作系统和 syslog 守护程序会自动信任此证书，因为 Amazon Trust Services 根证书包含在标准的 CA 信任存储库中。

如果您的设备默认不信任该证书，请从中下载 Amazon Trust Services 根证书，[https://www.amazontrust.com/repository/](https://www.amazontrust.com/repository/)并将其添加到设备的 CA 信任存储库中。