前面的文章介绍了Exporter在Prometheus中的概念和使用方式,这篇文章以Node Exporter为例来介绍一下如何在Prometheus中采集机器的CPU使用率、磁盘IO、内存使用率和网络状况等。
Node Exporter也是使用go语言开发,不存在其他的安装依赖包,只需要下载此二进制文件或者下载源码生成二进制即可运行。
根据不同操作系统获取相应的二进制文件压缩包即可,比如本文使用的是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在启动时常用的设定选项如下所示:
https://github.com/prometheus/node_exporter