【问题标题】:Node exporter port already in use, service is failed节点导出器端口已在使用中,服务失败
【发布时间】:2021-05-26 06:14:34
【问题描述】:
节点导出器处于失败状态,journalctl 说:
level=fatal msg="listen tcp :9100: bind: address already in use" source="node_exporter.go:114"
我试过reset-failed 并重新启动服务仍然是同样的问题。然后我列出了使用 9100 端口的进程并终止了该进程(该进程是一个 node_exporter 进程)但是在我正常或使用 -9 终止它之后它只是启动一个新进程,因此我的 9100 端口始终在使用中并且可以' t 因为它而启动 node_exporter。有解决办法吗?
【问题讨论】:
标签:
linux
prometheus
prometheus-node-exporter
【解决方案1】:
-
了解使用9100端口的进程的process-id
netstat -lpn | grep 9100
-
了解进程的父 pid
ps -p PID -o ppid
-
如果父进程是systemd(pid为1),则通过
找到它的服务名
systemctl status PID
并决定如何处理它。
如果父进程是不是 systemd,而是类似 containerd-shim,这意味着这个进程是通过 Kubernetes Daemonset 管理的。
在这种情况下,您需要决定重用现有进程,或者更改 node_exporter.service 中的端口,您可以将--web.listen-address=:9101 添加到服务清单中的 ExecStart 属性并应用systemctl daemon-reload,然后重新启动服务。
【解决方案2】:
我遇到了同样的问题,但我找到了解决方案:
搜索使用9100端口的进程:
ss -ntpl 9100
查看进程的PID然后杀死他:
kill <pid>
另外,请记住节点污点和容忍度