Exporter 是由于向 Prometheus 提供監控資料的程式,通常 Exporter 也抽象成一個 Target, Prometheus 通過 Pull 模式往 Target 中擷取監控資料。
來源區分
社群提供的 Exporter
自定義的 Exporter
支援方式區分
獨立的 Exporter 去暴露服務,例如 MySQL Exporter、Consul Exporter
服務自包含的 Exporter,例如 Kubelet 内置 cAdvisor、etcd
https://github.com/prometheus/node_exporterNode Exporter 部署
Node Exporter 在 Kubernetes 上可以直接通過 DaemonSet 的方式在每一個節點上啟動一個Pod
并且和主控端共用同一個 Network Namespace 或者通過 HostNetwork 的方式暴露 Metrics 端口
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-exporter-daemonset
namespace: monitoring
spec:
selector:
matchLabels:
app: node-exporter-daemonset
template:
metadata:
labels:
app: node-exporter-daemonset
spec:
containers:
- image: 'prom/node-exporter:v1.1.2'
name: node-exporter-daemonset
ports:
- containerPort: 9100
hostPort: 9100
name: metrics
protocol: TCP
dnsPolicy: ClusterFirst
hostNetwork: true
volumes:
- hostPath:
path: /proc
type: ''
name: proc
- hostPath:
path: /sys
type: ''
name: sys
- hostPath:
path: /
type: ''
name: root
---
spec:
containers:
image: 'prom/node-exporter:v1.1.2'
name: node-exporter-daemonset
ports:
- containerPort: 9528
name: metrics
protocol: TCP
hostNetwork: true
Node Exporter 資料暴露
通過 http://NodeIP:9100/metrics 去檢視暴露的資料

配置 Prometheus 采集規則
cat prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'node-exporter'
file_sd_configs:
- files:
- targets/node-exporter.yml
refresh_interval: 1m
cat targets/node-exporter.yml
- targets:
- "172.20.31.195:9100"
- "172.20.31.196:9100"
- "172.20.31.197:9100"
# 效果同樣,隻不過以下這種可以根據不同的目标去配置标簽等資訊。
cat targets/node-exporter.yml
- targets: ["172.20.31.195:9100"]
- targets: ["172.20.31.196:9100"]
- targets: ["172.20.31.197:9100"]
Grafana
Dashboard ID: 11074