使用Node Exporter扩展Prometheus数据
在前一篇文章当中,我们介绍了在Kubernetes中使用Prometheus进行集群监控的方法,并配置了服务发现,让Prometheus从Kubernetes集群的各个组件中采集运行数据。 在之前的例子中,我们主要是通过kubelet中自带的cadvisor采集容器的运行状态。今天我们来进一步完善监控系统,使用Node Exporter采集底层服务器的运行状态。
Node Exporter简介 Exporter是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。 与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取,默认的抓取地址为http://CURRENT_IP:9100/metrics
Prometheus提供多种类型的Exporter用于采集各种不同服务的运行状态。Node Exporter顾名思义,主要用于采集底层服务器的各种运行参数。
目前Node Exporter支持几乎所有常见的监控点,比如conntrack,cpu,diskstats,filesystem,loadavg,meminfo,netstat等。 详细的监控点列表请参考其Github repo。
部署Node Exporter 在Kubernetes中部署Node Exporter非常简单,我们使用DaemonSet功能,可以非常方便的在集群内的所有主机上启动Node Exporter。 在配合上Prometheus的服务发现功能,无需额外的设置,我们就可以把这些Node Exporter Pod加入到被采集的列表当中。
将以下配置文件保存为node-exporter.yaml, 并运行 kubectl create -f node-exporter.yaml。
apiVersion: v1 kind: Service metadata: annotations: prometheus.io/scrape: 'true' labels: app: node-exporter name: node-exporter name: node-exporter spec: clusterIP: None ports: - name: scrape port: 9100 protocol: TCP selector: app: node-exporter type: ClusterIP ---- apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: node-exporter spec: template: metadata: labels: app: node-exporter name: node-exporter spec: containers: - image: prom/node-exporter:latest name: node-exporter ports: - containerPort: 9100 hostPort: 9100 name: scrape hostNetwork: true hostPID: true 国内的Kubernetes集群可以使用registry.