過去の記事
前々回
前回
実現したいこと
Nginxと同じようにRailsのアプリケーションログもKibanaで参照できるようにしたい。
引き続き、過去の記事で使用した環境に変更を加えていくのでdiffを記載していく。
Rails
参考
基本的には参考サイトの通りやれば実現可能。
ただ、act-fluent-logger-railsに関してリリースされている最新の0.5.0ではRails6に対応していない。
Githubを確認したところmasterブランチには修正が適応されていたのでGemfileでGithubを指定すれば可能。
Gemfile
--- a/Gemfile +++ b/Gemfile @@ -47,3 +47,6 @@ end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] + +gem 'act-fluent-logger-rails', git: 'https://github.com/actindi/act-fluent-logger-rails.git' +gem 'lograge'
Gemfileを更新したのでdocker-compose build webを行っておく。
config/application.rb
--- a/config/application.rb +++ b/config/application.rb @@ -15,5 +15,9 @@ module Myapp # Application configuration can go into files in config/initializers # -- all .rb files in that directory are automatically loaded after loading # the framework and any gems in your application. + config.log_level = :info + config.logger = ActFluentLoggerRails::Logger.new + config.lograge.enabled = true + config.lograge.formatter = Lograge::Formatters::Json.new end end
config/fluent-logger.yml
ファイルを新規に作成。ひとまずdevelopmentのhostのみ設定しておく。
development: fluent_host: fluentd fluent_port: 24224 tag: 'rails' messages_type: 'string' test: fluent_host: '127.0.0.1' fluent_port: 24224 tag: 'rails' messages_type: 'string' production: fluent_host: '127.0.0.1' fluent_port: 24224 tag: 'rails' messages_type: 'string'
Fluentd
fluent.conf
ひとまず、Nginxの設定をほぼコピペで設定。
--- a/fluentd/fluent.conf +++ b/fluentd/fluent.conf @@ -14,3 +14,13 @@ logstash_format true logstash_prefix nginx.access </match> + +<match rails> + @type elasticsearch + host elasticsearch + buffer_type memory + port 9200 + type_name rails + logstash_format true + logstash_prefix rails.access +</match>
この状態で、localhostにアクセスをしてKibanaでCreate index patternをするとrailsのログがきているはず。