You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将混在/var/syslog中的Sidekiq日志同步至CloudWatch?

解决Sidekiq日志同步至CloudWatch的方案

方案1:将Sidekiq日志输出到单独文件,再用CloudWatch Agent监控

Sidekiq支持输出到标准输出,你可以在启动时将stdout重定向到单独的日志文件:

# 启动Sidekiq时重定向日志到单独文件
bundle exec sidekiq >> /var/log/sidekiq.log 2>&1
  • 为避免日志文件过大,配置logrotate管理该文件,创建/etc/logrotate.d/sidekiq:
/var/log/sidekiq.log {
  daily
  missingok
  rotate 7
  compress
  delaycompress
  notifempty
  create 640 root adm
}
  • 配置CloudWatch Agent监控这个文件,在/etc/awslogs/awslogs.conf中添加:
[sidekiq-log]
file = /var/log/sidekiq.log
log_group_name = /your-app/sidekiq/production
log_stream_name = {instance_id}/sidekiq
datetime_format = %Y-%m-%d %H:%M:%S
  • 重启CloudWatch Agent服务让配置生效。

方案2:通过Syslog过滤分流Sidekiq日志

如果日志已经输出到/var/syslog,可以用rsyslog(或syslog-ng)将Sidekiq的日志单独提取到文件:

  1. 创建rsyslog配置文件/etc/rsyslog.d/sidekiq.conf:
:programname, isequal, "sidekiq" /var/log/sidekiq.log
& stop  # 阻止该日志继续写入syslog
  1. 重启rsyslog服务:
sudo systemctl restart rsyslog
  1. 后续步骤同方案1,配置CloudWatch Agent监控/var/log/sidekiq.log即可。

方案3:自定义Sidekiq日志格式,配合CloudWatch过滤收集

如果不想修改日志输出路径,可以自定义Sidekiq的日志格式,让日志带有专属标识,方便CloudWatch过滤:
在Rails项目的config/initializers/sidekiq.rb中添加:

Sidekiq.configure_server do |config|
  config.logger = Logger.new(STDOUT)
  config.logger.formatter = proc do |severity, timestamp, progname, msg|
    "[Sidekiq] #{timestamp.strftime('%Y-%m-%d %H:%M:%S')} #{severity}: #{msg}\n"
  end
end
  • 启动Sidekiq时保持输出到stdout,然后配置CloudWatch Agent收集该进程的stdout日志,或者将stdout重定向到文件后再收集。
  • 在CloudWatch控制台中,可通过[Sidekiq]标识过滤日志,实现单独查看。

内容的提问来源于stack exchange,提问作者RanH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:32:50