После моей последней перезагрузки я каждые 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
29/07/2021 приток был обновлен с1.8.6-1к1.8.7-1. Операционная система — Ubuntu 20.04 server. Проблемы начались после первой перезагрузки.
Изначально была проблема с разрешениями /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
это не удается. Из даты файла видно, что начальная оболочка была создана только 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 включен, требуется полное доменное имя, а не локальный хост, иначе проверка сертификата не пройдет.
- разрешения также были неправильными в сценарии запуска по умолчанию
Чтобы решить эту проблему, я отредактировал /lib/systemd/system/influxdb.service
файл и
- изменить Тип=разветвление на Тип=простой
- изменить ExecStart на:
ExecStart=/usr/bin/influxd -config /etc/influxdb/influxdb.conf --pidfile /var/lib/influxdb/influxd.pid $INFLUXD_OPTS
решение2
Это ошибка, появившаяся в Influxdb v1.8.7.Проблема с Github.
Есть множество способов исправить это,ваше решениеодин из способов. В нашем случае Influx запустился немного дольше, чем 10 секунд, которые позволяет скрипт запуска, поэтому я просто изменил строку sleep 1
в файле /usr/lib/influxdb/scripts/influxd-systemd-start.sh
, чтобы sleep 2
дать Influx больше времени на запуск.