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