自上次重启以来,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。操作系统是 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,所以它需要 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 问题

有很多方法可以解决这个问题,你的解决方案是方法之一。在我们的案例中,Influx 的启动时间比启动脚本允许的 10 秒窗口要长一些,因此我只需将sleep 1文件中的行更改/usr/lib/influxdb/scripts/influxd-systemd-start.shsleep 2让 Influx 有更多时间启动。

相关内容