

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

# 对系统日志摄取进行故障排除
<a name="CWL_Syslog_Troubleshooting"></a>

本节介绍了 syslog 摄取的常见问题以及如何解决这些问题。

## 消息未出现在日志组中
<a name="CWL_Syslog_Troubleshooting_NoMessages"></a>

如果您发送了 syslog 消息，但这些消息未出现在您的日志组中，请按顺序检查以下内容：

1. **验证系统日志配置是否存在。**

   运行`list-syslog-configurations`以确认您的 VPC 终端节点已在日志组中注册：

   ```
   aws logs list-syslog-configurations \
     --log-group-identifier /syslog/my-devices \
     --region $REGION
   ```

   如果未返回任何配置，请使用创建配置`put-syslog-configuration`。

1. **验证资源策略。**

   确保日志组的资源策略授予`logs:PutLogEvents`和`syslog.logs.amazonaws.com`，并且`aws:SourceArn`条件`logs:CreateLogStream`与您的 VPC 终端节点 ARN 完全匹配：

   ```
   aws logs describe-resource-policies --region $REGION
   ```

   使用检查`SyslogMessagesDropped`指标`Reason=AccessDenied`以确认授权是否是问题所在。

1. **验证安全组。**

   确保连接到 VPC 终端节点的安全组允许来自源 CIDR 的入站流量进入您正在使用的端口（6514、1514 或 514）：

   ```
   aws ec2 describe-security-groups \
     --group-ids $VPCE_SG_ID \
     --region $REGION \
     --query 'SecurityGroups[0].IpPermissions'
   ```

1. **验证网络连接。**

   在同一网络上的设备或主机上，测试与端点的 TCP 连接：

   ```
   # TCP connectivity test
   nc -zv $VPCE_DNS 6514
   nc -zv $VPCE_DNS 1514
   ```

   如果连接被拒绝或超时，请验证 VPN/Direct Connect 路由以及设备是否可以到达 VPC 终端节点子网。

1. **检查 VPC 终端节点策略。**

   如果您已附加自定义 VPC 终端节点策略，请确认它允许执行所需的操作。使用检查`SyslogMessagesDropped`指标`Reason=VpcePolicyDenied`。

## TLS 握手失败
<a name="CWL_Syslog_Troubleshooting_TLS"></a>

如果您的 syslog 客户端无法在端口 6514 上建立 TLS 连接：
+ **证书信任** — 确保您设备的 CA 信任存储区包含 Amazon Trust Services 根证书。默认情况下，大多数操作系统都包含这些。[https://www.amazontrust.com/repository/](https://www.amazontrust.com/repository/)如果需要，可以从中下载它们。
+ **TLS 版本** — 该服务支持 TLS 1.2 和 TLS 1.3。确保您的系统日志客户端至少支持 TLS 1.2。
+ **主机名验证** — 如果您的客户端验证服务器主机名，请确保将其配置为使用 VPC 终端节点 DNS 名称（不是 IP 地址）进行连接。

使用 OpenSSL 手动测试 TLS 连接：

```
openssl s_client -connect $VPCE_DNS:6514 -brief
```

成功连接会显示 TLS 版本和密码套件。如果失败，则错误消息会指出原因。

## UDP 消息丢失
<a name="CWL_Syslog_Troubleshooting_UDP"></a>

UDP 是一种尽力而为的协议。在以下情况下，某些消息丢失是预期的行为：
+ 您的设备和 VPC 终端节点之间的网络拥塞。
+ 消息超过了最大 UDP 数据报大小。
+ 临时服务容量限制（`SyslogMessagesDropped`用用表示`Reason=ServiceUnavailable`）。

如果需要可靠的传输，请改用 TCP（端口 1514 或 6514）。TCP 提供传送确认和自动重传功能。

## 连接被拒绝
<a name="CWL_Syslog_Troubleshooting_ConnectionRefused"></a>

如果您的设备在连接到 VPC 终端节点时报告 “连接被拒绝”：
+ 验证 VPC 终端节点的`available`状态为：

  ```
  aws ec2 describe-vpc-endpoints --vpc-endpoint-ids $VPCE_ID \
    --region $REGION --query 'VpcEndpoints[0].State'
  ```
+ 确认您正在使用支持的端口（6514、1514 或 514）进行连接。
+ 验证 VPN 或 Direct Connect 路由允许从您的设备网络到 VPC 终端节点子网的流量。
+ 检查安全组是否允许您使用的端口上的入站流量。

## 由于速率限制而丢弃了邮件
<a name="CWL_Syslog_Troubleshooting_RateLimit"></a>

如果`SyslogMessagesDropped`指标显示`Reason=MessageRateLimitExceeded`，则表示您的系统日志流量已超过您账户的`PutLogEvents`配额。

要解决这一问题，请执行以下操作：

1. 在 Amazon Lo CloudWatch gs 下的 S [ervice Quotas 控制台中查看您当前的配额](https://console.amazonaws.cn/servicequotas/home#!/services/logs/quotas)。

1. 如果您的系统日志吞吐量需要，请申请增加配额。请参阅 [Service Quotas 用户指南中的申请增加](https://docs.amazonaws.cn/servicequotas/latest/userguide/request-quota-increase.html)*配额*。