😺

LogstashのSecrets keystoreを使用したらハマった

2020/09/30に公開

Secrets keystoreとは?

Logstashの設定ファイルを下記のように設定してないでしょうか?

    output {
      elasticsearch {
        hosts => [""]
	user => "elastic"
	password => "mypassword"
      }
    }

設定ファイルに、userやpassword情報が直接書かれてしまっています
これを避けたい!
そんな時に役に立つのが 「Secrets keystore」
「Secrets keystore」に「es_user」「es_pwd」を登録すれば下記のように設定できます

    output {
      elasticsearch {
        hosts => [""]
	user => "${es_user}"
	password => "${es_pwd}"
      }
    }

手順

下記手順の通りにやれば・・・ 私は動かなかった
※環境は、CentOS6、Logstash7.8.1で実施した

  1. キーストアーの作成(パスワードを設定しないと後でコマンドラインで聞かれます)
set +o history
export LOGSTASH_KEYSTORE_PASS=mypassword
set -o history
sudo -E /usr/share/logstash/bin/logstash-keystore --path.settings /etc/logstash create
  1. 「es_pwd」を設定(後で、値は聞かれて設定します)
sudo -E /usr/share/logstash/bin/logstash-keystore --path.settings /etc/logstash add es_pwd
  1. 設定されたか確認
sudo -E /usr/share/logstash/bin/logstash-keystore --path.settings /etc/logstash list
es_pwd
  1. Logstashを再起動する

何が起きたのか?

下記エラーが発生した

Found a file at /etc/logstash/logstash.keystore, but it is not a valid Logstash

ふむふむ、よく分からん・・・・

下記に答えがあった。
どうも、手順1で設定した「LOGSTASH_KEYSTORE_PASS=mypassword」を
サービス起動時のファイルに設定しないと動かないらしい

Logstash keystore / run as service / missing password / error message / misleading. #9711

  1. LOGSTASH_KEYSTORE_PASSの設定
    サービスファイルが「/etc/init/logstash.conf」を使用しているため下記を修正
    ここらへんは、使用しているOSによって異なります
sudo vim  /etc/default/logstash
LOGSTASH_KEYSTORE_PASS="mypassword"
  1. Logstashを再起動する
    上手く動きました!!

Discussion