概要
docker で rsyslog コンテナを立ててログを受け付けてみました
あまり情報がなかった (そもそも需要がない?) ので試してみました
環境
- macOS 10.13.5
- docker 18.03.1-ce
- Ubuntu 16.04
- logger 2.27.1
rsyslog コンテナを立てる
docker run -d -p 514:514 -p 514:514/udp voxxit/rsyslog
TCP および UDP で LISTEN するのを忘れずに
logger コマンドで動作確認
macOS の logger コマンドはローカルにしか送信できないので適当に Ubuntu を立てて確認しました
logger -n 172.28.128.1 "test"
こんな感じでログを送信すると以下のように rsyslog コンテナ内の /var/log/messages
にログが記載されます
docker exec -it epic_wozniak tail -f /var/log/messages
2018-07-05T07:58:26.417740+00:00 ubuntu-xenial vagrant test
priority
を変えて送信してみます
logger -n 172.28.128.1 -p "local7.info" "local7 info test"
これで /var/log/boot.log
にもログが出力されます
rsyslog コンテナの設定ファイルは /etc/rsyslog.conf
にありデフォルトの設定値は https://github.com/voxxit/dockerfiles/blob/master/rsyslog/etc/rsyslog.conf になります
設定を変更したい場合は直接コンテナに設定ファイルをコピーするか Dockerfile を作成して独自のイメージを作成するなりしてください
最後に
docker で rsyslog サーバコンテナを立ててログの受信をしてみました
TCP/UDP の両方で LISTEN する必要があるのがポイントです
今回は logger コマンドを使ってログの送信確認を行いました
実際の運用ではアプリやミドルウェアから送信するケースがほとんどだと思います
例えば nginx であれば syslog:server
などのディレクティブで定義することができます
http://nginx.org/en/docs/syslog.html
dockerhub で rsyslog を検索すると結構イメージが出てきます
今回は voxxit/rsyslog
というイメージを使いましたが他にもいろいろとあります
Web で調べると自分で Dockerfile を書いて rsyslog イメージを作成している人もいます
とりあえず pull 数と Star が多いイメージを選択しましたが、今回のやり方にこだわる必要はないかなと思います
0 件のコメント:
コメントを投稿