使用kube-prometheus部署的prometheus-operator,如果node在集群内,prometheus从node-exporter收集到的指标中是没有node ip的,只有node的hostname,使用label: instance来标记的。
最近有个需求是(集群内)节点告警的时候需要知道具体的ip。
修改node-exporter-serviceMonitor.yaml中以下内容:
修改完成node-exporter-serviceMonitor.yaml后,重新apply到集群中,就可以通过prometheus dashboard ui看到值已经指标已经明显发生变化。
其实现在的话通过instance标签就可以取到节点的具体ip了。
如果不想通过截取ip:port方式的话,还可以通过label_replace的方式,增加一个ip专门用来表示节点的ip。
label_replace(node_memory_MemTotal_bytes{node="m1.main.dev.cloudtogo.local"},"ip", "$1", "instance", "(.*):.*")