Prometheus的安装和配置
Linux环境下下载二进制分发包,解压后就安装完了。javascript
1. 启动
解压后,在解压后的路径内执行命令./premetheus
便可以使用默认配置启动Prometheus应用。php
默认使用的是同目录下的
prometheus.yml
文件java
能够经过浏览器访问http://宿主机ip:9090
测试启动状况。正则表达式
2. 配置
执行 prometheus
命令的时候能够经过参数 --config.file
来指定配置文件路径。Prometheus 服务运行过程当中若是配置文件有改动,能够给服务进程发送 SIGHUP 信号来通知服务进程从新从磁盘加载配置。这样无需重启,避免了服务中断。浏览器
prometheus.yml 中的配置详解
<boolean>
: 布尔值,true 或 false<duration>
: 持续时间,格式符合正则表达式[0-9]+(ms|[smhdwy])
<labelname>
: 标签名,格式符合正则表达式[a-zA-Z_][a-zA-Z0-9_]*
<labelvalue>
: 标签值,能够包含任意 unicode 字符<filename>
: 文件名,任意有效的文件路径<host>
: 主机,能够是主机名或 IP,后面可跟端口号<path>
: URL 路径<scheme>
: 协议,http 或 https<string>
: 字符串<secret>
: 密钥,好比密码<tmpl_string>
: 模板字符串,里面包含须要展开的变量
一个典型的配置
global: # 抓取间隔,默认为 1m [ scrape_interval: <duration> | default = 1m ] # 抓取超时时间,默认为 10s [ scrape_timeout: <duration> | default = 10s ] # 规则评估间隔,默认为 1m [ evaluation_interval: <duration> | default = 1m ] # 抓取配置 scrape_configs: [ - <scrape_config> ... ] # 规则配置 rule_files: [ - <filepath_glob> ... ] # 告警配置 alerting: alert_relabel_configs: [ - <relabel_config> ... ] alertmanagers: [ - <alertmanager_config> ... ]
global
全局配置节点下的配置对全部其它节点都有效,同时也是其它节点的默认值。rule_files
规则配置包含记录规则配置和告警规则配置,节点下只是列出文件,具体配置在各个文件中。记录规则配置接下来会讲,告警规则配置在后面的告警实验中会讲解。alerting
告警配置用于 Alertmanager
抓取配置
抓取配置能够有多个,通常来讲每一个任务(Job)对应一个配置。单个抓取配置的格式以下:ruby
# 任务名 job_name: <job_name> # 抓取间隔,默认为对应全局配置 [ scrape_interval: <duration> | default = <global_config.scrape_interval> ] # 抓取超时时间,默认为对应全局配置 [ scrape_timeout: <duration> | default = <global_config.scrape_timeout> ] # 协议,默认为 http,可选 https [ scheme: <scheme> | default = http ] # 抓取地址的路径,默认为 /metrics [ metrics_path: <path> | default = /metrics ] # 抓取地址的参数 params: [ <string>: [<string>, ...] ] # 是否尊重抓取回来的标签,默认为 false [ honor_labels: <boolean> | default = false ] # 静态目标配置 static_configs: [ - <static_config> ... ] # 单次抓取的采样值个数限制,默认为 0,表示没有限制 [ sample_limit: <int> | default = 0 ]
honor_labels
表示是否尊重抓取回来的标签。当抓取回来的采样值的标签值跟服务端配置的不一致时,若是该配置为 true
,则以抓取回来的为准。不然以服务端的为准,抓取回来的值会保存到一个新标签下,该新标签名在原来的前面加上了“exported_”,好比 exported_job。bash
要抓取的实例目标
static_configs
下配置了该任务要抓取的全部实例,按组配置,包含相同标签的实例能够分为一组,以简化配置。单个组的配置格式以下:学习
# 目标地址列表,地址由主机+端口组成 targets: [ - '<host>' ] # 标签列表 labels: [ <labelname>: <labelvalue> ... ]
抓取目标能够是动态也但是静态的,此处讲的是静态抓取。测试
记录规则配置
记录规则容许咱们把一些常常须要使用而且查询时计算量很大的查询表达式,预先计算并保存到一个新的时序。查询这个新的时序比从原始一个或多个时序实时计算快得多,而且还可以避免没必要要的计算。在一些特殊场景下这甚至是必须的,好比仪表盘里展现的各种定时刷新的数据,数据种类多且须要计算很是快。lua
记录规则配置文件的格式以下:
groups:
[ - <rule_group> ]
记录规则配置按组来组织,一个组下的全部规则按顺序定时执行。单个组的格式以下:
# 组名,在文件内惟一 name: <string> # 规则评估间隔,默认为对应的全局配置 [ interval: <duration> | default = global.evaluation_interval ] rules: [ - <rule> ... ]
每一个组下包含多条规则,格式以下:
# 规则名称,也就是该规则产生的时序数据的度量指标名
record: <string> # PromQL 查询表达式,表示如何获得采样值 expr: <string> # 关联标签 labels: [ <labelname>: <labelvalue> ]
3. 使用
学会安装和配置以后,接下来咱们经过使用 Prometheus 监控其自身来学习 它的基本用法。
配置 Prometheus 监控其自身
Prometheus 服务自己也经过路径 /metrics
暴露了其内部的各项度量指标,只须要把它加入到监控目标里就能够。
global: # 全局默认抓取间隔 scrape_interval: 15s scrape_configs: # 任务名 - job_name: 'prometheus' # 本任务的抓取间隔,覆盖全局配置 scrape_interval: 5s static_configs: # 抓取地址同 Prometheus 服务地址,路径为默认的 /metrics - targets: ['localhost:9090']
配置完成后启动服务:
$ ./prometheus
可打开地址 http://主机名:9090/metrics
来确认是否有抓取到数据。

prometheus_target_interval_length_seconds
这个度量指标的含义是实际抓取目标时的间隔秒数。可使用表达式prometheus_target_interval_length_seconds{quantile="0.99"}
来查询0.99
分位线的采样值,也就是小于这个采样值的数量低于总数的99%
。使用表达式count(prometheus_target_interval_length_seconds)
能够查询到该度量指标包含的时序个数。关于查询表达式的更多语法后续实验会讲到。
做者:小孩真笨连接:https://www.jianshu.com/p/bedd169676b6来源:简书