今天prometheus的监控突然通过alertmanager的邮件告警,某个主机节点宕机了。登录上去发现并没有宕机,分析发现是prometheus抓取node_exporter的数据的时候,报错context deadline exceeded。
一般出现这种情况就是网络问题,然后是node_exporter进程出了问题
解决办法:
1、端口未开放,被防火墙拦截
#修改node_exporter监听端口(记住同步修改prometheus的抓取端口)
/usr/local/node_exporter/node_exporter --web.listen-address=0.0.0.0:9300
2、防火墙开放端口
# 使用相应的防火墙管理命令
sudo firewall-cmd --add-port=9100/tcp --permanent #返回success
sudo firewall-cmd --reload #返回success
3、重启node_exporter
#sudo systemctl restart node_exporter
4、特殊原因,需要仔细追查
发现该服务器抓取本地的资源使用情况很慢,尤其是命令:df -h
使用命令df -h 查看磁盘情况,就会卡住,反应时间较长,超过一分钟。
使用strace工具追踪卡住原因。
①、安装工具:yum install strace -y
②、命令排查问题:strace df -h
当命令运行到上图红框位置时,会卡住不动,响应时间较长。
③、查看目录的详情信息:mount | grep "问题目录"
由上图可以分析出,是挂载的远程磁盘,然后排查具体问题
④、如果问题目录不使用,卸载掉挂载:umount -l "挂载点"
至此抓取服务器节点上node_exporter数据超时问题已经解决。