View a markdown version of this page

配置系统日志设备 - 亚马逊 CloudWatch 日志

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

配置系统日志设备

设置系统日志提取后,将系统日志源配置为向 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

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

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

快速验证

在任何可以到达 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

网络设备

大多数防火墙、路由器和交换机都支持通过指定目标 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 证书信任

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

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