欢迎来到Prometheus教程的安装篇!
Prometheus 通过在目标节点的 HTTP 端口上采集 metrics(遥测专用词,度量指标)来监控目标节点,本文教你怎么安装、配置和使用Prometheus。你可以在本地下载并运行 Prometheus,配置采集自身和示例应用的运行数据,然后使用查询语句、规则和图形工具来使用收集到的时间序列数据。
下载Prometheus
下载适合你所使用系统的最新版本的(下载地址:
https://prometheus.io/download)Prometheus,执行以下命令解压:
tar xvfz prometheus-*.tar.gz
cd prometheus-*
Prometheus服务是一个名为prometheus(或Microsoft Windows上的prometheus.exe)的二进制文件。可以通过传 --help 参数来运行二进制文件查看帮助内容
./prometheus --help
usage: prometheus [<flags>]
The Prometheus monitoring server
. . .
在启动Prometheus之前,先做一些配置。
配置Prometheus
Prometheus的配置文件是YAML格式的,下载的Prometheus文件包里面有一个示例配置文件,文件名称是prometheus.yml,可以参考这个示例文件进行配置。
如下的例子是已经删除了大多数注释后的,以使其更加简洁(注释是以#为前缀的行)。
global:
scrape_interval: 15sevaluation_interval: 15srule_files:
# - "first.rules"
# - "second.rules"scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
在示例配置文件中有三个配置块:global、rule_files和scrape_configs。
global配置块用来控制Prometheus服务的全局配置。global有两个配置项,第一个是scrape_interval,控制Prometheus抓取目标数据的频率。可以针对每个目标单独配置来覆盖这里的配置。在本例中,全局设置是每15秒抓取一次。evaluation_interval配置项作用是控制Prometheus评估规则的频率。Prometheus使用规则来创建新的时间序列并生成警报。
rule_files配置块用来指定我们希望Prometheus服务加载规则的位置。本例中没有规则。
scrape_configs配置块用来控制Prometheus监控的资源。由于Prometheus可以将自己的数据在HTTP端口上公开,因此它也可以抓取和监控自己的运行状况。在默认配置中,有一个名称为prometheus的job,它抓取由prometheus服务公开的时间序列数据。该job包含一个静态配置的目标,即localhost的9090端口。Prometheus默认通过/metrics路径收集metrics。因此这个默认job是通过
http://localhost:9090/metrics 这个URL进行抓取。
返回的时间序列数据可以详细监控到Prometheus服务器的状态和性能。
完整配置选项说明请查看配置文档
https://prometheus.io/docs/introduction/first_steps/
启动Prometheus
1、使用二进制文件启动Prometheus
切换到Prometheus二进制文件所在路径,执行如下命令来使用上一步刚创建的配置文件启动Prometheus
./prometheus --config.file=prometheus.yml
2、使用docker启动Prometheus
第一种是和宿主机共享配置文件 prometheus.yml:
dockerrun \
-p 9090:9090 \
-v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
第二种是和宿主机共享包含 prometheus.yml 的文件夹
dockerrun \
-p 9090:9090 \
-v /path/to/config:/etc/prometheus \
prom/prometheus
此时 Prometheus 应该已经启动了。可以通过浏览器打开 localhost:9090。稍等30秒左右 Prometheus 就可以从自己的 HTTP metrics 端点收集到自己的数据了。
可以访问 metrics 端点 localhost:9090/metrics 验证 Prometheus 是否正在提供 metrics 服务。
使用表达式浏览器
我们来看下 Prometheus 收集到的关于自己的 metrics 数据。为了使用 Prometheus 内置的表达式浏览器,访问
http://localhost:9090/graph 并选择"Graph" 标签页中的 “Table” 视图。
正如可以从 localhost:9090/metrics 收集 metrics,Prometheus 暴露的一个度量指标称为
promhttp_metric_handler_requests_total(Prometheus服务的/metrics接口请求量)。继续在表达式控制台输入:
promhttp_metric_handler_requests_total
会返回许多不同的时间序列(以及为每个时间序列记录的最新值),它们都使用度量名称
promhttp_metric_handler_requests_total,但是使用了不同的标签。这些标签表示不同的请求状态。
如果只想查HTTP状态码为200的请求,可以使用如下语句查询:
promhttp_metric_handler_requests_total{code="200"}
要计算时间序列数据的总量,可以这样写:
count(promhttp_metric_handler_requests_total)
更多表达式语言,请查看文档
https://prometheus.io/docs/querying/basics/
使用绘图接口
访问
http://localhost:9090/graph 并选择"Graph" 标签页,打开图形绘制界面
例如,输入以下表达式来绘制 Prometheus 自我采集http状态码为200的速率:
rate(promhttp_metric_handler_requests_total{code="200"}[1m])
你也可以自己尝试使用图形范围参数和其他设置看下效果。
监控其他目标
Prometheus不仅仅只能收集自身的metrics。为了更好地了解Prometheus可以做什么,建议多查看关于其他exporters的文档。