Exporter是Prometheus的指标数据收集组件。它负责从目标Jobs收集数据,并把收集到的数据转换为Prometheus支持的时序数据格式。 和传统的指标数据收集组件不同的是,他只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取,node-exporter 默认的抓取url地址:http://ip:9100/metrics
另外,如果因为环境原因,网络不可达的场景,Prometheus可以使用Pushgateway这个组件推送node-exporter的指标数据到远端Prometheus
node-exporter用于采集node的运行指标,包括node的cpu、load、filesystem、meminfo、network等基础监控指标,类似于zabbix监控系统的的zabbix-agent
node-export由Prometheus官方提供、维护,属于监控指标收集类UNIX内核操作系统的必备的exporter。
node-exporter用于采集类UNIX内核的硬件以及系统指标
Windows系统使用 WMI-exporter
如果是采集NVIDIA的GPU指标,可以使用 prometheus-dcgm
根据不同的类UNIX操作系统,node-exporter采集指标的支持也是不一样的,如:
diskstats 支持 Darwin, Linux
cpu 支持 Darwin, Dragonfly, FreeBSD, Linux, Solaris等,
GitHub地址:node_exporter
--collectors.enabled
指定node_exporter收集的功能模块
--no-collector
指定不需要的模块
Prometheus使用exporter工具来暴露主机和应用程序上的指标,目前有很多可用于各种目的的exporter。现在我们将专注于一个特定的exporter:Node Exporter。
它是用Go语言编写的,提供了一个可用于收集各种主机指标数据(包括CPU、内存和磁盘)的库。它还有一个textfile收集器,允许你导出静态指标,我们很快就会看到这对发送有关节点的信息很有帮助,此外它还可以从批处理作业导出指标。
、
现在在这个目录中创建一个新的指标。刚创建的目录中,指标在以.prom结尾的文件内定义,并且使用Prometheus特定文本格式。
它们是Docker守护进程、SSH守护进程和RSyslog守护进程。使用--collector.systemd.unit-whitelist参数进行配置,它会匹配systemd的正则表达式。
最后,可以在其中一个Docker节点上启动node_exporter,如下所示:
- job_name: 'BJ Linux Server'
basic_auth:
username: prometheus
password: 123456
static_configs:
- targets: ['192.168.179.99:9100','192.168.179.100:9100']
labels:
idc: tongniu
project: www
params:
collect[]:
- cpu
这里,我们将被抓取的指标限制在上面的收集器列表中,使用params块中的collect[]列表指定,然后将它们作为URL参数传递给抓取请求。你可以使用Node Exporter实例上的curl命令来对此进行测试。
- job_name: 'kubernetes-node-exporter'
kubernetes_sd_configs:
- role: node
relabel_configs:
- source_labels: [__address__]
regex: '(.*):10250'
replacement: '${1}:9100'
target_label: __address__
action: replace
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
params:
collect[]:
- cpu