Seit meinem letzten Neustart sehe ich alle 1–2 Minuten Folgendes:
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
am 29/07/2021 wurde der Zustrom aktualisiert von1.8.6-1Zu1.8.7-1. Das Betriebssystem ist ein Ubuntu 20.04-Server. Beim ersten Neustart danach begannen die Probleme.
Zunächst gab es ein Berechtigungsproblem mit /usr/lib/influxdb/scripts/influxd-systemd-start.sh
, das den Start verhinderte. Ich habe die Berechtigungen auf 0755 geändert und es startete, startet aber immer wieder neu. Es scheint, dass es zwischen den Neustarts Verbindungen und Daten akzeptiert, da Telegraf immer noch die Datenbank füllt und Grafana die Statistiken anzeigen kann, solange dies nicht mit dem Neustart zusammenfällt.
Ich sehe auch die Nachricht
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
Es lauscht auf diesen Ports
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))
Soweit ich weiß, wurden keine Konfigurationsänderungen vorgenommen. Es sind keine Firewall-Regeln aktiv.
Hat irgendjemand eine Idee, warum es angefangen hat, sich schlecht zu benehmen?
Antwort1
Es sieht so aus, als /usr/lib/influxdb/scripts/influxd-systemd-start.sh
würde ein Gesundheitscheck durchgeführt:
while [ "$result" != "200" ]; do
sleep 1
result=$(curl -s -o /dev/null http://$HOST:$PORT/health -w %{http_code})
done
das schlägt fehl. Dem Dateidatum nach wurde der Start-Wrapper erst am 21. Juli erstellt, daher sieht es so aus, als wäre die Startprüfung neu.
Wenn ich es manuell versuche, erhalte ich:
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
Es schlägt aus mehreren Gründen fehl.
- Da ich TLS konfiguriert habe, muss es https sein
- Da ich den Bind-Port nicht explizit definiert habe und den Standard verwende, erhält das Skript den falschen Port.
- Da TLS aktiviert ist, wird der FQDN und nicht der lokale Host benötigt, da sonst die Zertifikatsvalidierungsprüfung fehlschlägt.
- die Perms waren auch im Standard-Startskript falsch
Um das Problem zu beheben, habe ich die /lib/systemd/system/influxdb.service
Datei bearbeitet und
- Ändern Sie Type=forking in Type=simple
- ändern Sie ExecStart in:
ExecStart=/usr/bin/influxd -config /etc/influxdb/influxdb.conf --pidfile /var/lib/influxdb/influxd.pid $INFLUXD_OPTS
Antwort2
Dies ist ein Fehler, der in Influxdb v1.8.7 eingeführt wurde.Github-Problem.
Es gibt verschiedene Möglichkeiten, dies zu beheben.Ihre Lösungist eine der Möglichkeiten. In unserem Fall dauerte der Start von Influx etwas länger als das 10-Sekunden-Fenster, das das Startskript zulässt, also habe ich einfach die Zeile sleep 1
in der Datei geändert /usr/lib/influxdb/scripts/influxd-systemd-start.sh
, um sleep 2
Influx mehr Zeit zum Starten zu geben.