AWS 日志管理与 DNS 服务:S3 与 Route 53 的应用
1. 日志存储至 S3
日志系统应与基础设施中的其他核心服务松散耦合,这样日志系统的故障才不会扩散并导致其他服务失败。之前我们搭建了一个中央 Logstash 服务器,它通过 TCP 接收客户端的日志消息。但如果中央 Logstash 实例崩溃或不可用,客户端将无法发送日志消息,尝试发送会导致管道破裂错误,因为客户端无法与中央服务器建立 TCP 连接。不过,Filebeat 客户端能识别此类故障并在本地跟踪日志消息,待中央 Logstash 服务器恢复后,这些消息会重新发送。
若使用 UDP 传输,传输会无声失败,消息会丢失而非存储在发送端。对于转发 Syslog 而非运行本地 Filebeat 或 Logstash 客户端的实例,情况可能相同,这是否可接受取决于日志保留策略。
将消息本地存储直到能发送到服务器的过程称为存储转发,类似于电子邮件系统的工作方式。若 Logstash 服务器只是暂时不可用,在客户端短暂保留消息不会有问题,但长时间中断可能导致客户端实例上堆积过多缓冲数据,若临时文件过大,可能影响客户端实例的正常运行。
使用 S3 作为日志文件的中间存储位置可进一步解耦客户端和主 Logstash 实例。客户端不再直接将日志文件发送到 Logstash 服务器,而是写入一个商定的 S3 存储桶,中央 Logstash 代理负责定期从 S3 下载这些日志文件并按常规处理。
使用 S3 作为中间存储有诸多好处,主要是解耦。即使 Logstash 服务器长时间不可用,日志文件也会在 S3 上排队,待服务器恢复后处理。其次,有助于扩展日志系统。若向中央 Logstash