摘要:
node-exporter;Endpoint;
1、AirNet物理主机安装node-exporter服务;
[Unit]
Description=node_exporter
Documentation=https://github.com/prometheus/node_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter --collector.ntp --collector.mountstats --collector.systemd --collector.perf --collector.tcpstat
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
Restart=always
[Install]
WantedBy=multi-user.target
配置ServiceMonitor,通过Labels选择无头Service,没有selector的service不会出现Endpoint的信息,需要手工创建Endpoint绑定,Endpoint可以是内部的pod,下面是外部的服务,这里指定到要监控的AirNet物理主机的IP,一个Endpoints切片方式配置可以绑定多台物理服务器的IP。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: airnet-node-exporter
namespace: monitoring
labels:
airnet: airnet-node-exporter
namespace: monitoring
spec:
jobLabel: airnet-app
endpoints:
- interval: 30s
port: api
scheme: http
namespaceSelector:
matchNames:
- monitoring
selector:
matchLabels:
airnet: airnet-node-exporter
---
apiVersion: v1
kind: Service
metadata:
labels:
airnet: airnet-node-exporter
name: airnet
namespace: monitoring
spec:
clusterIP: None
clusterIPs:
- None
ports:
- name: api
port: 9100
protocol: TCP
targetPort: api
type: ClusterIP
---
kind: Endpoints
apiVersion: v1
metadata:
name: airnet
namespace: monitoring
subsets:
- addresses:
- ip: 192.168.31.158
nodeName: airnet-fdp1
- ip: 192.168.31.184
nodeName: airnet-acc-fdo1
ports:
- port: 9100
name: api
protocol: TCP
问题:手动指定的外部Endpoints的IP地址过一段时间自动变为空值,导致Grafana监控无数据:
- 原因是对于没有selector的service不会出现Endpoint的信息,需要手工创建Endpoint绑定,Endpoint可以是内部的pod,也可以是外部的服务。
- 对于配置了selector的service,Service Controller会自动查找匹配这个selector的pod,并且创建出一个同名的endpoint对象,如果没有查找到匹配这个selector的pod,会出现自动创建的endpoint的IP地址为空的情况,因为与之前手工创建的外部Endpoint同名,覆写了手工创建Endpoint外部IP绑定,所以导致手工创建Endpoint绑定的外部IP没了。