Influxdbは前回の再起動以来、頻繁に再起動しています

Influxdbは前回の再起動以来、頻繁に再起動しています

前回の再起動以降、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-11.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 

いくつかの理由で失敗します。

  1. TLSを設定しているのでhttpsにする必要があります
  2. バインド ポートを明示的に定義しておらず、デフォルトを使用しているため、スクリプトは間違ったポートを取得します。
  3. TLS が有効になっているため、localhost ではなく FQDN が必要であり、そうでないと証明書の検証チェックが失敗します。
  4. デフォルトの起動スクリプトの権限も間違っていました

それを解決するためにファイルを編集し/lib/systemd/system/influxdb.service

  1. Type=forking を Type=simple に変更します
  2. ExecStartを次のように変更します: ExecStart=/usr/bin/influxd -config /etc/influxdb/influxdb.conf --pidfile /var/lib/influxdb/influxd.pid $INFLUXD_OPTS

答え2

これは Influxdb v1.8.7 で導入されたバグです。Githubの問題

これを修正する方法はいろいろありますが、あなたの解決策sleep 1方法の 1 つです。私たちのケースでは、Influx の起動に、起動スクリプトで許可されている 10 秒の時間枠よりも少し長くかかったため、ファイル内の行を/usr/lib/influxdb/scripts/influxd-systemd-start.shに変更してsleep 2、Influx の起動時間を長くしました。

関連情報