LoginSignup
4
6

More than 3 years have passed since last update.

syslog受信 → S3保存 してくれるDockerコンテナ お手軽セット

Last updated at Posted at 2020-02-05

https://github.com/yagrush/docker-td-agent-syslog-to-s3
↑成果物は、こちらへどうぞ!

実現したかったこと

syslogをS3に勝手に保存してくれる環境を、簡単に量産できるようにしたい!

作ったもの概要

ポート514にsyslogを送ると S3にgzipで1時間毎に保存してくれるDockerコンテナが、すぐ作れます。
(実際は、Dockerコンテナの中で td-agent が常駐しています)

必要なもの

syslogを保存するS3バケット

S3バケットにアクセス権限を持つIAMユーザー

docker, docker-compose が入ったEC2インスタンス

Amazon Linux release 2 (Karoo) で動作確認済。
ポート514の受信許可(セキュリティグループの設定)もお忘れなく。

→ 必要でしたら こちら(AWS EC2 AmazonLinux2 のdockerホスト用初期設定)もご参照下さい。

使い方

詳細部分は README.md をご参照頂ければと思いますが、
全体的な流れも含めてざっくり説明しますと…

  • S3に、syslogを保存するためのバケットを作成。
  • そのバケットに書き込む権限を持つIAMユーザーを作成。
  • そのIAMユーザーのアクセスキーとシークレットをダウンロードしておく。
  • DockerホストとなるEC2インスタンスを作成。
  • そのインスタンスがポート514でsyslogを受信できるようセキュリティグループを設定しておく。
  • そのインスタンスにSSHで接続。
  • docker, docker-compose をインストールしてセットアップする。
  • 本成果物をダウンロードする。(gitとかcurlなどで。)
  • 中のディレクトリに cd する。
  • .env.template.env にリネーム。
  • .env を編集する。(S3に接続するための設定を書く。)
  • (保存間隔やファイル名のカスタムなどは、td-agent.conf をお好みで編集。)
  • Dockerイメージをビルドする。 docker-compose build
  • イメージからコンテナを起動する。 docker-compose up -d
  • 余裕があれば、動作テストなどしておく。
  • syslog送信側端末にて、送信先を上記のインスタンスのポート514に設定!

ミソ

1: .env から S3接続設定を拾って Dockerfile 内で(ビルド中に)使う

今回、S3接続設定を td-agent.conf から外出し(.env)したのですが、これができるまで結構ハマりました・・・

外部ファイルから docker-compose.yml 内で値を拾うことは割とすんなりできたのですが、
環境変数として

  • docker-compose.yml 内の environment で渡し、
  • Dockerfile 内の ENV で拾う

でビルド中に渡そうとしても、どうにもできず・・・
どうやらその方法では、コンテナが起動した後でないと有効にならないそうでした。
(起動後、コンテナ内のシェルに繋いで env すると、間違いなく設定されてはいるのですが・・・)

で、アンサーはというと

  • docker-compose.yml 内の args で渡し、
  • Dockerfile 内の ARG で拾う

これで、Dockerfile内で $HOGE_HOGE で利用可能には、なりました。が・・・

2: td-agent.conf 内で使う

しかーし!
今度は、td-agent.conf 内で環境変数として引用 ${ENV{'HOGE_HOGE'}} できない・・・

Dockerfile 内でわざわざ ARG → ENV で拾い直してもダメ・・・

どうやら、今回 td-agent を Docker内のサービス(デーモン)として起動する仕組みにした影響っぽく。
工数的限界もあり、ここはゴリ押しで sed で置換する方法にしました:laughing:

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6