自上次重启后,每隔 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-1到1.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
它因多种原因而失败。
- 因为我已经配置了 TLS,所以需要是 https
- 因为我没有明确定义绑定端口,所以我使用了默认值,所以脚本获取了错误的端口。
- 因为启用了 TLS,所以它需要 FQDN,而不是本地主机,否则证书验证检查会失败。
- 默认启动脚本中的权限也是错误的
为了解决这个问题,我编辑了/lib/systemd/system/influxdb.service
文件并
- 将 Type=forking 更改为 Type=simple
- 将 ExecStart 更改为:
ExecStart=/usr/bin/influxd -config /etc/influxdb/influxdb.conf --pidfile /var/lib/influxdb/influxd.pid $INFLUXD_OPTS