Logstash 起動script のconfigファイル読み込みについて

こんにちは

logstash の configファイルの読み込み方について教えてください。

以下の環境で yumから rpmで logstash をインストールして利用させて頂いています。
CentOS release 6.7 (Final)
logstash-2.0.0-1.noarch

logstash の起動は -f オプションでconfファイルを指定して起動しますが、
該当のrpmによりインストールされる /etc/init.d/logstash では、

LS_CONF_DIR=/etc/logstash/conf.d
program=/opt/logstash/bin/logstash
args="agent -f ${LS_CONF_DIR} -l ${LS_LOG_FILE} ${LS_OPTS}"

と指定されており、 /etc/logstash/conf.d 以下のファイル全てを
configファイルとして読み込んでしまいます。

configファイルを分けて読み込む事にメリットがあるのでしょうか?

configファイルのバックアップ等を同ディレクトリに保存しておくと、起動時に
そのバックアップファイルも読み込んでしまい、 port の conflict や
elasticsearch への重複登録が発生してしまいますので、
ファイル指定にした方が良いのではないかと感じました。

よろしくお願い致します。

configファイルを分けて読み込む事にメリットがあるのでしょうか?

RPM などのパッケージ管理の観点から言うとメリットがあります。

「A パッケージ」と「B パッケージ」を rpm コマンドでインストールしたときに、次のようにそれぞれのパッケージが自分の設定ファイルを置くようにします。

  • A パッケージ用の設定: conf.d/a.conf
  • B パッケージ用の設定: conf.d/b.conf

こうしておくと、例えば「A パッケージを削除する( rpm -e A パッケージ )」というときに、パッケージ側の処理で conf.d/a.conf を削除すれば、他のパッケージへの影響を最小限に抑えることができると思います。

configファイルのバックアップ等を同ディレクトリに保存しておくと

logstash に限らず、他のアプリケーションでも conf.d/ 形式を採用している例がありますので、「conf.d/ にバックアップファイルを置く」というやり方を変えてしまったほうが、今後のサーバ運用を考えると良い方法ではないかと思います。

設定ファイルを分けるメリットは、管理をしやすくするためだと。

例えば、アクセスログの処理用、アプリケーションのログの処理用と言った具合に
分けておくことで、別のサーバに移動させたり、処理を増やすことが簡単になるかと思います。

Suzuki様、 Ohtani様、ご回答有難うございます。

パッケージ管理、設定管理それぞれメリットがあるのですね。
なるほど、スッキリしました。

有難うございました。