前面的文章介绍了Exporter在Prometheus中的概念和使用方式,这篇文章以Node Exporter为例来介绍一下如何在Prometheus中采集机器的CPU使用率、磁盘IO、内存使用率和网络状况等。
安装&运行 下载Node Exporter也是使用go语言开发,不存在其他的安装依赖包,只需要下载此二进制文件或者下载源码生成二进制即可运行。
- 二进制文件下载地址:https://github.com/prometheus/node_exporter/releases
根据不同操作系统获取相应的二进制文件压缩包即可,比如本文使用的是macOS,
liumiaocn:~ liumiao$ sw_vers ProductName: Mac OS X ProductVersion: 10.15.2 BuildVersion: 19C57 liumiaocn:~ liumiao$ uname -a Darwin liumiaocn 19.2.0 Darwin Kernel Version 19.2.0: Sat Nov 9 03:47:04 PST 2019; root:xnu-6153.61.1~20/RELEASE_X86_64 x86_64 liumiaocn:~ liumiao$
所以示例下载命令如下所示:
下载命令:wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.darwin-amd64.tar.gz
解压并运行解压文件并运行,即可启动Node Exporter,执行示例日志如下所示
liumiaocn:~ liumiao$ ls node_exporter-0.18.1.darwin-amd64.tar.gz node_exporter-0.18.1.darwin-amd64.tar.gz liumiaocn:~ liumiao$ tar xf node_exporter-0.18.1.darwin-amd64.tar.gz liumiaocn:~ liumiao$ cd node_exporter-0.18.1.darwin-amd64/ liumiaocn:node_exporter-0.18.1.darwin-amd64 liumiao$ ls LICENSE NOTICE node_exporter liumiaocn:node_exporter-0.18.1.darwin-amd64 liumiao$ ./node_exporter INFO[0000] Starting node_exporter (version=0.18.1, branch=HEAD, revision=3db77732e925c08f675d7404a8c46466b2ece83e) source="node_exporter.go:156" INFO[0000] Build context (go=go1.11.10, user=root@4a30727bb68c, date=20190604-16:47:36) source="node_exporter.go:157" INFO[0000] Enabled collectors: source="node_exporter.go:97" INFO[0000] - boottime source="node_exporter.go:104" INFO[0000] - cpu source="node_exporter.go:104" INFO[0000] - diskstats source="node_exporter.go:104" INFO[0000] - filesystem source="node_exporter.go:104" INFO[0000] - loadavg source="node_exporter.go:104" INFO[0000] - meminfo source="node_exporter.go:104" INFO[0000] - netdev source="node_exporter.go:104" INFO[0000] - textfile source="node_exporter.go:104" INFO[0000] - time source="node_exporter.go:104" INFO[0000] Listening on :9100 source="node_exporter.go:170"
可以看到缺省会在9100端口启动服务进程
结果确认 结果示例
可以看到9100端口下提供了Prometheus所需要的/metrics的HTTP服务地址
/metrics提供的监控信息如下所示:
/metrics地址返回很多监控指标数据,比如此处CPU相关的基础信息:
# HELP node_cpu_seconds_total Seconds the cpus spent in each mode. # TYPE node_cpu_seconds_total counter node_cpu_seconds_total{cpu="0",mode="idle"} 118025.82 node_cpu_seconds_total{cpu="0",mode="nice"} 0 node_cpu_seconds_total{cpu="0",mode="system"} 11462.36 node_cpu_seconds_total{cpu="0",mode="user"} 18924.68 ...省略 node_cpu_seconds_total{cpu="7",mode="idle"} 146908.51 node_cpu_seconds_total{cpu="7",mode="nice"} 0 node_cpu_seconds_total{cpu="7",mode="system"} 816.94 node_cpu_seconds_total{cpu="7",mode="user"} 644.52
以此处的CPU使用状况的监控为例进行说明,每种监控指标之前都会有HELP和TYPE的说明,HELP是对于此监控指标的概要说明,而TYPE则用于表明此指标的类型。从上述指标返回的监控数据中可以看到这是一个8核的CPU,而监控指标分别显示了CPU的空闲状况(idle)、用户空间进程的调用优先度(nice)、系统空间进程使用比率(system)、用户空间进程使用比率(user)等4个指标的信息。
启动选项Node Exporter在启动时常用的设定选项如下所示:
- 指定端口:缺省为9100,可以通过--web.listen-address=":9200" 的方式指定端口号为9200
- 指定服务地址:缺省为/metrics,可以通过--web.telemetry-path="/metrics" 的方式指定服务地址
- 指定日志等级:缺省为INFO,可以通过--log.level="info"的方式指定,日志等级类别有:debug, info, warn, error, fatal
- 启用Collector:可以通过Collector的指定来定制需要收集的信息,通过--collector.Collector名称 的方式指定希望收集的Collector数据
- 禁用Collector:可以通过Collector的指定来定制需要收集的信息,通过--no-collector.Collector名称 的方式指定不需要收集的Collector数据
- 禁用Exporter自身监控数据:可以通过--web.disable-exporter-metrics 的方式设定,这样promhttp_, process_, go_*等指标就不会出现了。
https://github.com/prometheus/node_exporter