Rails on Elastic Beanstalk 如何配置 rsyslog?

在 Elastic Beanstalk 的 Rails 环境中配置 rsyslog:通过 .ebextensions 写 rsyslog 配置文件把 Rails 日志转发到集中日志服务器或 CloudWatch。本文给出 .ebextensions 配置示例与注意事项。

最佳实践
Rails on Elastic Beanstalk 如何配置 rsyslog?封面

EB 环境自定义 rsyslog 的标准通道是 .ebextensions:在配置文件中用 files: 键写入 /etc/rsyslog.d/ 下的规则文件,并用 container_commands 重启 rsyslog 生效。

配置示例

# .ebextensions/rsyslog.config
files:
  "/etc/rsyslog.d/10-rails-logs.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      # 把 Rails 日志转发到集中日志服务器
      if $programname == 'rails' then @@logserver.internal:514
      & ~

container_commands:
  01_restart_rsyslog:
    command: "service rsyslog restart"

@@ 表示 TCP 传输(@ 是 UDP);& ~ 表示匹配到的日志不再写入本地文件。

让 Rails 日志进 syslog

Rails 侧用 Syslog::Logger 或 remote_syslog_logger gem,把日志输出指向 syslog 并打上 programname 标签,与上面的 rsyslog 规则呼应。

更简单的替代

EB 平台日志可直接集成 CloudWatch Logs(控制台一键开启)——没有集中 syslog 服务器时优先用它,日志再经订阅过滤器送往其他地方。

常见问题(FAQ)

Q:配置改了没生效? 检查 /var/log/cfn-init.log 与 eb-engine.log,确认 files 段写入成功、rsyslog 重启无报错。

Q:Amazon Linux 2023 注意事项? rsyslog 服务名与路径基本一致,用 systemctl restart rsyslog

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台