Prometheus 安装和配置

Stella981
• 阅读 764

Prometheus的安装和配置

Linux环境下下载二进制分发包,解压后就安装完了。

1. 启动

解压后,在解压后的路径内执行命令./premetheus 即可以使用默认配置启动Prometheus应用。

默认使用的是同目录下的prometheus.yml文件

可以通过浏览器访问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)对应一个配置。单个抓取配置的格式如下:

# 任务名
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。

要抓取的实例目标
static_configs 下配置了该任务要抓取的所有实例,按组配置,包含相同标签的实例可以分为一组,以简化配置。单个组的配置格式如下:

# 目标地址列表,地址由主机+端口组成
targets:
  [ - '<host>' ]

# 标签列表
labels:
  [ <labelname>: <labelvalue> ... ]

抓取目标可以是动态也可是静态的,此处讲的是静态抓取。

记录规则配置

记录规则允许我们把一些经常需要使用并且查询时计算量很大的查询表达式,预先计算并保存到一个新的时序。查询这个新的时序比从原始一个或多个时序实时计算快得多,并且还能够避免不必要的计算。在一些特殊场景下这甚至是必须的,比如仪表盘里展示的各类定时刷新的数据,数据种类多且需要计算非常快。

记录规则配置文件的格式如下:

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自身的监控指标

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
来源:简书

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Mysql 5.7版本安装:mysql 服务无法启动。
\Mysql5.7版本安装:mysql服务无法启动。\​一、解压文件​下载好MySQL后,解压到D盘下,也可以根据个人喜好解压在其他盘符的路径下,解压后的路径是:D:\\mysql5.7.17winx64。解压好后不要太兴奋,需要配置默认文件呢!​二、安装MySQ
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这