Ubuntu上に構築したELK環境のElasticsearchが起動していない事が多発したので原因調査と対応を行った内容を記載します。
journalctlでログを確認します。
$ sudo journalctl --unit elasticsearch
発生していたエラーは以下の通りです。
systemd[1]: Starting Elasticsearch...
systemd[1]: elasticsearch.service: start operation timed out. Terminating.
systemd[1]: elasticsearch.service: Failed with result 'timeout'.
systemd[1]: elasticsearch.service: Unit process 812 (java) remains running after unit stopped.
systemd[1]: elasticsearch.service: Unit process 853 (controller) remains running after unit stopped.
systemd[1]: Failed to start Elasticsearch.
systemd[1]: elasticsearch.service: Consumed 1min 27.028s CPU time.z
上から三行目に「Failed with result ‘timeout’.」とありますので、タイムアウトしたことが伺えます。
また、一番下には「Consumed 1min 27.028s CPU time.z」とあるので、おおよそ90秒でタイムアウトしたと思われます。
まずは現在の設定を確認します。
$ sudo systemctl show elasticsearch | grep ^TimeoutStartUSec
TimeoutStartUSec=1min 30s
タイムアウト値が1分30秒となっており、エラーメッセージとほぼ一致しています。
この設定値を5分に延ばしたいので、以下のように300秒を設定します。
$ sudo mkdir /etc/systemd/system/elasticsearch.service.d
$ echo -e "[Service] \nTimeoutStartSec = 300" | sudo tee /etc/systemd/system/elasticsearch.service.d/startup-time
out.conf
<出力結果>
[Service]
TimeoutStartSec = 300
$ sudo systemctl daemon-reload
これでタイムアウトが5分に延びました。
OS再起動時の自動起動でElasticsearchがタイムアウトになることは無くなりました。