记录一次exporter故障
现象:
prometheus 上查看 exporter 节点爆红
exporter 的 pod 曾经 oom 过,重启后使用内存增长迅速,log 报错 timout,手动通过 url 访问没任何问题
1 考虑服务本身问题
1.1 查看事件
因为操作完写的文档,没有记录了,当时有OOM killed字段,怀疑硬件资源问题
1.2 查看系统硬件日志
搜索 oom 会找到报错,重点是:mems_allowed=0,所以 pod 被 kill 掉了
1 | dmesg -T |grep oom |
1.3 查看内存使用
1 | kubectl top pod -n kube-system test-exporter-57bb88f4b4-92b6c --use-protocol-buffers |
1.4 手动访问测试
手动测试没任何问题
1 | curl http://10.1.1.1:9100/metrics -I |
1.5 再次查看 prometheus
因为手动访问没任何问题,只能在看看 prometheus,于是发现一开始节点状态是正常的,但是过一会发现又报红了
1.6 再次查看资源使用情况
发现内存使用增长迅速
1 | kubectl top pod -n kube-system test-exporter-57bb88f4b4-92b6c --use-protocol-buffers |
1.7 尝试 pod 里查看资源使用情况
pod 里面资源使用也正常,没有多余进程
2 检查 prometheus
因为这服务一切正常,只能考虑 prometheus,后来发现这个
2.1 查看配置
是 10 秒拉取一次,而我们有两个 prometheus,平均 5 秒拉取一次,因为这个 exporter 是 Python 写的,所有性能比较低,考虑可能并发问题于是改成 2 分钟拉取一次
1 | - job_name: kubernetes-cadvisor |
继续观察发现节点正常,总结: prometheus 拉取频率要合理,优化代码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 云原生基站!
评论