前振り
Docker、Docker-compose、Fluentd力が無さ過ぎて苦労したので、苦労したことのまとめ。
その1 プラグインのインストール
- プラグインのインストールをするのなら、docker-compose.ymlとDockerfileの両方を使用する
- docker-compose.yml で build オプションを指定すると使用するDockerfileを指定できる
- 公式の説明でも使用されている
- docker-compose.ymlからみた相対パスでfluentdディレクトリを指定するには
build: ./fluentd
とする
- プラグインのインストールは、
gem install fluent-plugin-datacounter
でOK。-
td-agent-gem install
もあるけど、Dockerでやるときに若干困った。 -
RUN ["gem", "install", "fluent-plugin-elasticsearch", "--no-rdoc", "--no-ri", "--version", "1.9.2"]
てのもあるが、ヘッダーファイルのインストールと削除してとなると困った。
-
- Fluentd with Docker では、イメージサイズを小さく保つためにbuild-baseとruby-devが消してある
- プラグインのインストール時に、「mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h」というエラーが出ることがある。
- これは意図した仕様。
- 自分でインストールして使ってね。
その2 UDPの疎通ミスによる死活監視エラー
- Docker環境で使用していると、
[warn]: detached forwarding server '172.27.***.***:24224' host="172.27.***.***" port=24224
というエラーがでる。 - Docker、EC2環境でUDPのハートビート死活監視がこけていることが原因
- ハートビートの死活監視をTCPに制限するのが一番楽そう
-
heartbeat_type tcp
を指定して対応 - 公式の解説
- Amazon Linux でポートListenしてるか確認するコマンド
- telnetで生きてきたので、インストールされてなくて困った
- TCP :
nc -zv 172.27.16.170 24224
- UDP :
nc -zvu 172.27.16.170 24224
- 参考:【初心者向け】各OSのTCP通信チェックコマンド入門