View a markdown version of this page

設定 syslog 裝置 - Amazon CloudWatch Logs

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 syslog 裝置

設定 syslog 擷取後,設定您的 syslog 來源以傳送訊息至 VPC 端點 DNS 名稱。您的裝置會透過 VPN 或 Direct Connect 連線至 VPC 來到達端點。

注意

以下組態提供為範例。如需完整的組態選項和最佳實務,請參閱 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 Logs 中驗證交付 (通常在 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 連線使用 Amazon Trust Services 發行的 AWS受管憑證。大多數作業系統和 syslog 協助程式會自動信任此憑證,因為 Amazon Trust Services 根憑證包含在標準 CA 信任存放區中。

如果您的裝置預設不信任憑證,請從 https://www.amazontrust.com/repository/:// 下載 Amazon Trust Services 根憑證,並將其新增至裝置的 CA 信任存放區。