fluentdでNginxのログをmongoに流し込む毎日技術日誌やりつくされてそうなネタですが、ちょっと研究の一環でログをうまいこと扱う必要が出てきたのでやってみました。Composeを使ってNginxfluentdMongoDBを立ち上げて、Nginxのログをfluentdが拾って、MongoDBに流し込むということをやってみました。今回はログが複数のコンテナやノードに分散すると言ったことは考慮していません。Nginxが8080で立ち上がるのでアクセスすると、数秒程度でMongoDBのadminデータベースのtestコレクションに書き込まれます。8081番でWebGUIであるmongo-expressというのが上がっているのでアクセスすることで確認することができます。Pluginの説明から拾ってきてコピペしたものだが、fluentdのconfigはこんな感じ。-fと同じ)してくれます。それをformatで指定したフォーマットを使って取り込んでくれるという認識。ltsvはタブで各項目を区切るフォーマットらしく、fluentdではよく使われてる気がした。初期設定のフォーマットだと、入ってくる文字によってはparseに失敗することがあるらしい。matchではmongoを指定しています。mongoに関してはDockerイメージには含まれていないので、自分でイメージをビルドする必要があります。後の設定はまぁ見ればわかるでしょうという感じ。ところで、今回DBの中身を見るために使用したmongo-expressですが、MongoDB側のポートが開くまで待ってくれるという処理がなさそうなので、depends_onやlinkでmongoを指定してもDBが立ち上がるより前にMongoDBを見に行って勝手に落ちてくれちゃいます。ポートが開くのを待ちたかったのでwait-for-itというシェルスクリプトをDockerイメージの中に仕込んでみた。github.comDockerイメージは以下のような感じ。/docker-entrypoint.shこれで解決した。久々に真面目な技術記事を書いた。行けたかのように涼しげな顔で書いているがここまでうまく動かすのに結構な時間を使ってしまったのはちょっと反省。Dockerで動かす必要があったのかと言われればそうではなく、手軽さを求めてのDockerだったわけだが、手こずるなら仮想マシンとか用意すればよかった気がした。»プロフィールid:uutarouゆるく広く浅くをモットーに頑張る。毎日技術日誌やってます。年末年始をまとめる近況報告的な記事(趣味要素つよめ)社会人になって半年経った。月別アーカイブはてなブログをはじめよう!uutarouさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。