根据loki配置页面,可以在运行时重新加载promtail。 link-loki_configuration_info
但是每当我尝试重新加载时,都会收到以下错误:
panic: duplicate metrics collector registration attempted
goroutine 200 [running]:
github.com/prometheus/client_golang/prometheus.(*Registry).MustRegister(0x3e7294d?, {0xc00194b0e0?, 0x1, 0xb?})
/drone/src/vendor/github.com/prometheus/client_golang/prometheus/registry.go:405 +0x78
github.com/grafana/loki/clients/pkg/promtail/wal.NewWatcherMetrics({0x478b7b0, 0x648ec00})
/drone/src/clients/pkg/promtail/wal/watcher_metrics.go:73 +0xa79
github.com/grafana/loki/clients/pkg/promtail/client.NewManager(0x0?, {0x4770b20, 0xc0006ba9b0}, {0x40c3880000000000, 0x2710, 0x0, 0x1, 0x0, 0x0, 0x0}, ...)
/drone/src/clients/pkg/promtail/client/manager.go:61 +0x85
github.com/grafana/loki/clients/pkg/promtail.(*Promtail).reloadConfig(0xc0009481e0, 0xc0016ce000)
/drone/src/clients/pkg/promtail/promtail.go:170 +0x88c
github.com/grafana/loki/clients/pkg/promtail.(*Promtail).reload(0xc0009481e0)
/drone/src/clients/pkg/promtail/promtail.go:286 +0xa5
github.com/grafana/loki/clients/pkg/promtail.(*Promtail).watchConfig(0xc0009481e0)
/drone/src/clients/pkg/promtail/promtail.go:271 +0x3d1
created by github.com/grafana/loki/clients/pkg/promtail.(*Promtail).Run in goroutine 1
/drone/src/clients/pkg/promtail/promtail.go:214 +0xcd
洛基版本:
loki, version 2.9.3 (branch: HEAD, revision: 2535f9bede)
build user: root@998f10a08814
build date: 2023-12-11T19:17:52Z
go version: go1.21.3
platform: windows/amd64
tags: netgo
Promtail 版本:
promtail, version 2.9.3 (branch: HEAD, revision: 2535f9bede)
build user: root@998f10a08814
build date: 2023-12-11T19:17:52Z
go version: go1.21.3
platform: windows/amd64
tags: netgo
有什么想法可以解决这个问题吗? 谢谢。
我希望在向 /reload 端点发送 HTTP POST 请求后,promtail 将识别更新的配置文件并继续运行。
您的问题已在此问题中描述。它的修复已合并到 main 中,但我在发布分支中没有看到它。
我不熟悉 loki 的发布流程,但你可能可以基于
release_2.9.x
将解决方案挑选到单独的分支中,并提出一个 PR 供维护人员审查。
否则,我认为除了等待 2.10 或自己编译包含修复程序的 promtail 之外,你没有太多选择。