おすすめ書籍はじめにこんにちは。前回に続いてログの扱いをあれこれ調べてました。今回はログ集約をやってみたくてFluentdについてです。Docker上に構築したLaravelだとどうやるのかを調べています。5.8.29Fluentdについて冒頭にもあるように、ログ集約のためのミドルウェアで、Ruby製OSSです。サーバ上ではnginx,Apache,MySQL,Redis,postfixなど様々なミドルウェアと、その上に構築・実装したアプリケーションが都度ログを吐き出しています。通常はあちこちに散ってるログを一括して受けつけ、任意の形式・場所にまとめて出力してくれるのがFluentdです。短く言うと「ログの入出力を一本化するミドルウェア」になるでしょうか。今まで関わったプロジェクトのサーバで「なんかログ集めるやつが動いてる」という雑な認識しかしておらず、自分で構築やチューニングした経験はありませんでした。目的DockerでFluentdを動作させたいLaravelのアプリから吐き出したログをFluentdで受け付けたいnginxのログをFluentdに出力する記事はすぐ見つかったんですが、Laravelのログはどうすれば?というのが見当たらなかったので、入門がてら調べてみたのが今回の記事になります。公式がイメージを用意してくれていますので、docker-compose.ymlに記述すれば使えるようになります。以下、nginx+PHP-FPM+MariaDB+Fluentd全ての設定を記述したファイルです。それぞれ説明を後述します(全項目はさすがに説明しきれませんが...)。"docker.{{.Name}}"fluentdFluentdの最新は1.6系ですが、stableとlatestは1.3系です。Linuxで、別途debian版もあります。以下、fluentdビルド用のDockerfileです。イメージからコンテナを作るだけでなく、コンテナ内であれこれしたい場合はbuildで指定したパスにDockerfileを置きます。--no-cacheでパッケージを個別にインストールしています。bashはコンテナ内でCUIを操作しないのであれば不要です。LinuxのデフォルトがUTC+0なので、日本のタイムゾーンに合わせるためです。/etc/timezone以下、FLUENTD_CONFで指定して差し替えているFluentdの設定ファイルです。sourceでFluentdへの入力、matchで出力を制御しています。各オプションについてはまだ理解しきれていませんが、こちらを参考にさせてもらい、作成しました。%Y%m%dT%H%M%S%z</match></label>dbデータベースのコンテナです。今回はDBログには触れてないのと、docker-compose.ymlに書いてある以上のことはしていないため、割愛します。appPHP-FPMが稼働するコンテナです。Fluentd導入に際して特別なことはしていませんが、ビルド用のDockerfileは以下のとおりです。testappを実行してLaravelをインストールしています。/var/www/htmlwebnginxコンテナです。loggingセクション以下でログドライバとしてfluentdを指定し、ログの出力先とタグを指定しています。タグはFluentdの基本機能で、受け付けたログの出し分けに使います。本筋から外れるのと、私がまだきちんと理解しきれていないので、参考ページの紹介に留めます...今回の主旨はLaravelのログ出力ですが、nginxのログも以下のように出力しています(見やすく整形)。Safari/537.36\"","container_id":"f10447b18f1b515bac3a2afc29fe17f4c1a552b737514e7ff598cd5c95f322cd"}LaravelからログをFluentdに出力するパッケージ導入Laravelデフォルトではstorage/logs以下にログファイルがデイリーで生成されていきます。LaravelはロガーとしてMonologを使用しており、Monolog用のログハンドラがパッケージとして公開されていますので、有り難く使わせていただきます。successfully.PHPコード例Laravelからは以下のように出力します。5.6以降はconfig/logging.phpに記述することでもっとスマートに書けるかなと思うのですが、一応動くコードです。view('auth.register');}これでFluent側のログには以下のように出力されます。見やすいように改行を入れてますが、実際は1行です。docker.**内で指定したパスになります。\"http://localhost/login\"","container_id":"f10447b18f1b515bac3a2afc29fe17f4c1a552b737514e7ff598cd5c95f322cd","container_name":"/20190725_web_1"}さいごに昔から知ってはいたFluentdですが、いざ触ってみると自由度が高く、出力先としてS3やBigQueryを選べたり、夢が広がります。引き続き学習して使いこなせるようになりたいです。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイト上に表示された文字を入力してください。私たちは無料アプリもリリースしています、ぜひご覧ください。下記のアイコンから無料でダウンロードできます。