前回の再起動以降、1〜2 分ごとに次のメッセージが表示されます。
Aug 02 13:53:00 monitor systemd[1]: influxdb.service: start operation timed out. Terminating.
Aug 02 13:53:00 monitor systemd[1]: influxdb.service: Failed with result 'timeout'.
Aug 02 13:53:00 monitor systemd[1]: Failed to start InfluxDB is an open-source, distributed, time series database.
Aug 02 13:53:00 monitor systemd[1]: influxdb.service: Scheduled restart job, restart counter is at 4.
Aug 02 13:53:00 monitor systemd[1]: Stopped InfluxDB is an open-source, distributed, time series database.
Aug 02 13:53:00 monitor systemd[1]: Starting InfluxDB is an open-source, distributed, time series database...
Aug 02 13:53:00 monitor influxd-systemd-start.sh[3539]: Merging with configuration at: /etc/influxdb/influxdb.conf
2021年7月29日に流入が更新されました1.8.6-1に1.8.7-1。OS は Ubuntu 20.04 サーバーです。この後の最初の再起動で問題が発生しました。
最初は の権限の問題があり/usr/lib/influxdb/scripts/influxd-systemd-start.sh
、起動できませんでした。権限を 0755 に変更すると起動しましたが、再起動し続けます。再起動と重ならない限り、telegraf がデータベースに引き続きデータを入力し、Grafana が統計を表示できるため、再起動間で接続とデータを受け入れているようです。
私もメッセージを見ています
influxd-systemd-start.sh[12171]: [tcp] 2021/08/02 14:21:40 tcp.Mux: Listener at 127.0.0.1:8088 failed failed to accept a connection, closing all listeners
これらのポートでリッスンしています
root@monitor$ ss -ilpn | grep influx
tcp LISTEN 0 4096 127.0.0.1:8088 0.0.0.0:* users:(("influxd",pid=15115,fd=3))
tcp LISTEN 0 4096 *:8086 *:* users:(("influxd",pid=15115,fd=32))
私の知る限り、構成は変更されていません。ファイアウォール ルールはアクティブではありません。
なぜ動作がおかしくなったのか、誰か分かるでしょうか?
答え1
/usr/lib/influxdb/scripts/influxd-systemd-start.sh
ヘルスチェックをしようとしているようです:
while [ "$result" != "200" ]; do
sleep 1
result=$(curl -s -o /dev/null http://$HOST:$PORT/health -w %{http_code})
done
これは失敗しています。ファイルの日付から、開始ラッパーは 7 月 21 日に作成されたばかりなので、開始チェックは新しいようです。
手動で試してみると次のようになります:
root@monitor$ curl https://127.0.0.1:8088/health
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to 127.0.0.1:8088
いくつかの理由で失敗します。
- TLSを設定しているのでhttpsにする必要があります
- バインド ポートを明示的に定義しておらず、デフォルトを使用しているため、スクリプトは間違ったポートを取得します。
- TLS が有効になっているため、localhost ではなく FQDN が必要であり、そうでないと証明書の検証チェックが失敗します。
- デフォルトの起動スクリプトの権限も間違っていました
それを解決するためにファイルを編集し/lib/systemd/system/influxdb.service
、
- Type=forking を Type=simple に変更します
- ExecStartを次のように変更します:
ExecStart=/usr/bin/influxd -config /etc/influxdb/influxdb.conf --pidfile /var/lib/influxdb/influxd.pid $INFLUXD_OPTS