LoginSignup
1
2

More than 5 years have passed since last update.

supervisordで動かしたtd-agentで環境変数を参照する

Posted at

dockerでタイトルの環境を構築しログを出力していて、ホスト単位ではなくサービス単位でtagをまとめようとしてハマったのでメモ。

コンテナを起動するとき環境変数(ココではSERVICE_NAME)を渡してtd-agent.confで指定すれば良いと思い、以下のように記述。
fluent-plugin-config-expanderでホスト名を参照するため${hostname}と書いていたところを環境変数を参照するように書き換えてみた。

<source>
  type tail
  path /var/log/hoge.log
  tag "docker.hoge-#{ENV['SERVICE_NAME']}"
  format none
  pos_file /var/log/td-agent/hoge.log.pos
</source>

が、環境変数を参照出来ていない(空になっている)。
試しに#{1+1}のような式を書けば2になるので、rubyが動作していないわけではない模様。

printenvで環境変数が設定出来ていることは確認済み、かつsupervisordではなく手動で起動するときちんと参照出来ている。
このため、supervisordで動かす方法に問題があると推測。
恥ずかしながら、この問題に遭遇するまでserviceと/etc/init.d/xxxで動かす場合の違いを知らなかった。
環境変数を参照出来るよう以下のようにDockerfileを書き換えることで、環境変数を参照出来るようになった。

#ENTRYPOINT ["service", "supervisord", "start"]
ENTRYPOINT ["/etc/init.d/supervisord", "start"]
1
2
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
1
2