Exporter 是由于向 Prometheus 提供监控数据的程序,通常 Exporter 也抽象成一个 Target, Prometheus 通过 Pull 模式往 Target 中获取监控数据。
来源区分
社区提供的 Exporter
自定义的 Exporter
支持方式区分
独立的 Exporter 去暴露服务,例如 MySQL Exporter、Consul Exporter
服务自包含的 Exporter,例如 Kubelet 内置 cAdvisor、etcd
https://github.com/prometheus/node_exporter
Node 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 containerPort9100 hostPort9100 name metrics protocol TCP dnsPolicy ClusterFirst hostNetworktrue 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 containerPort9528 name metrics protocol TCP hostNetworktrue
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
Grafana
Dashboard ID: 11074