概要
Dockerのlogging driver
経由で出力されるログを監視している場合、監視設定を確認するために任意のメッセージを送りたいことがあります。
簡単にテストを実施するためにアプリケーション・ミドルウェアのコンテナに変わって任意のメッセージを送信する方法を紹介します。
Dockerのコンテナに限らず、Linuxのプロセスに関するTIPSです。
ユースケース
- GGP: GKEからStackdriver Loggingへ送信されるログをフィルターテストしたい
- AWS: AWSからCloudWatch Logsへ送信されるログをフィルターテストしたい
環境
- OS: Alpine v3.7
- Docker: v17
方法
# containerへログインする
# 対象のPIDを検索
container$ pid=$(pgrep -o xxx)
# 任意のメッセージをstderrに出力
# OSにより適宜fdへのパスは`/dev`などに読み変えてください
container$ echo '[error] テストだよ' >> /proc/${pid}/fd/2
# 任意のメッセージをstdoutに出力
# fdの番号を変えれば対応する出力先を選択できます
container$ echo '[info] テストだよ' >> /proc/${pid}/fd/1
あとはフィルター内容があっているか確認!!
感謝
深尾さん教えてくれてありがとう!