2018年7月5日木曜日

docker で rsyslog を使ってみる

概要

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 件のコメント:

コメントを投稿