Desde minha última reinicialização, vejo o seguinte a cada 1-2 minutos:
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
em 29/07/2021 o influxo foi atualizado de1.8.6-1para1.8.7-1. O sistema operacional é o servidor Ubuntu 20.04. A primeira reinicialização depois disso foi quando os problemas começaram.
Inicialmente houve um problema de permissão com o /usr/lib/influxdb/scripts/influxd-systemd-start.sh
, o que o impediu de iniciar. Alterei as permissões para 0755 e começou, mas continua reiniciando. Parece que está aceitando conexões e dados entre as reinicializações, pois o telegraf ainda está preenchendo o banco de dados, e o Grafana consegue exibir as estatísticas, desde que não coincidam com a reinicialização.
Também estou vendo a mensagem
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
Ele está escutando nessas portas
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))
Pelo que sei, nenhuma configuração foi alterada. Não há regras de firewall ativas.
Alguém tem alguma ideia de por que começou a se comportar mal?
Responder1
Parece que /usr/lib/influxdb/scripts/influxd-systemd-start.sh
está tentando fazer uma verificação de integridade:
while [ "$result" != "200" ]; do
sleep 1
result=$(curl -s -o /dev/null http://$HOST:$PORT/health -w %{http_code})
done
isso está falhando. A partir da data do arquivo, o wrapper inicial só foi criado em 21 de julho, então parece que a verificação inicial é nova.
Se eu tentar manualmente, recebo:
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
Ele falha por vários motivos.
- Como configurei o TLS, ele precisa ser https
- Como não defini explicitamente a porta de ligação, porque estou usando o padrão, o script obtém a porta errada.
- como o TLS está habilitado, ele precisa do FQDN, não do host local ou a verificação de validação do certificado falha.
- as permissões também estavam erradas no script de inicialização padrão
Para resolver isso editei o /lib/systemd/system/influxdb.service
arquivo e
- altere Type=forking para Type=simple
- altere ExecStart para:
ExecStart=/usr/bin/influxd -config /etc/influxdb/influxdb.conf --pidfile /var/lib/influxdb/influxd.pid $INFLUXD_OPTS
Responder2
Este é um bug introduzido no Influxdb v1.8.7.Problema no Github.
Há uma variedade de maneiras de consertar isso,sua soluçãosendo um dos caminhos. No nosso caso, o Influx demorou um pouco mais para inicializar do que a janela de 10 segundos que o script de inicialização permite, então simplesmente mudei a linha sleep 1
no arquivo /usr/lib/influxdb/scripts/influxd-systemd-start.sh
para sleep 2
para dar ao Influx mais tempo para inicializar.