Prometheus配置与管理

1 配置文件

Prometheus通过命令行和配置文件进行配置,命令行配置不能修改的系统参数(例如存储位置,要保留在磁盘和内存中的数据量等),但配置文件定义了与抓取作业及其实例相关的所有内容,以及哪些规则文件的加载。

Prometheus可以在运行时重新加载其配置。 如果新配置格式不正确,则更改将不会应用。 通过向Prometheus进程发送SIGHUP或向/-/reload端点发送HTTP POST请求(启用–web.enable-lifecycle)来触发配置重载,这还将重新加载所有已配置的规则文件。

在启动时可以使用--config.file参数指定要加载的配置文件。例如下面的全局配置指定在所有其他配置上下文中有效的参数,或者指定其他具体配置的默认值。

global:# 默认情况下抓取目标的频率.[ scrape_interval: <duration> | default = 1m ]# 抓取超时时间.[ scrape_timeout: <duration> | default = 10s ]# 评估规则的频率.[ evaluation_interval: <duration> | default = 1m ]# 与外部系统通信时添加到任何时间序列或警报的标签(联合,远程存储,Alertma# nager).即添加到拉取的数据并存到数据库中external_labels:[ <labelname>: <labelvalue> ... ]# 规则文件指定了一个globs列表. 
# 从所有匹配的文件中读取规则和警报.
rule_files:[ - <filepath_glob> ... ]# 抓取配置列表.
scrape_configs:[ - <scrape_config> ... ]# 警报指定与Alertmanager相关的设置.
alerting:alert_relabel_configs:[ - <relabel_config> ... ]alertmanagers:[ - <alertmanager_config> ... ]# 与远程写入功能相关的设置.
remote_write:[ - <remote_write> ... ]# 与远程读取功能相关的设置.
remote_read:[ - <remote_read> ... ]

其他具体的配置参数可以看官方文档:https://prometheus.io/docs/prometheus/latest/configuration/configuration/

2 规则

Prometheus支持两种类型的规则,这些规则可以定期配置,然后定期评估:记录规则(recored rule)和 警报规则(alert rule)。规则文件是yaml格式,通过Prometheus配置中的rule_files字段加载指定文件, 规则文件使用YAML。

通过将SIGHUP发送到Prometheus进程,可以在运行时重新加载规则文件。 kill -1 pid向指定进程发送SIGHUP信号

通过promtool工具可以对规则文件对语法进行检测,一般下载来整个Prometheus已经包含了promtool工具

promtool check rules /path/to/example.rules.yml

2.1 recored rule

recored rule允许预先计算经常需要或计算上复杂的表达式,并将其结果保存为一组新的时间序列。

groups:- name: examplerules:# 要输出的时间序列的名称- record: job:http_inprogress_requests:sum# 要评估的PromQL表达式expr: sum(http_inprogress_requests) by (job)

2.2 alert rule

警报规则基于Prometheus表达式定义警报条件,并将有关触发警报的通知发送到外部服务。 每当警报表达式在给定时间点生成一个或多个向量元素时,警报将视为这些元素的标签集的活动状态。

groups:
- name: examplerules:# 警报的名称- alert: HighErrorRate# 要评估的PromQL表达式。 每个评估周期都会在当前时间进行评估,并且所有结果时间序列都会成为待处理/触发警报。expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5for: 10mlabels:severity: pageannotations:summary: High request latency

3 PromQL

Prometheus提供一个函数式的表达式语言PromQL (Prometheus Query Language),可以使用户实时地查找和聚合时间序列数据。表达式计算结果可以在图表中展示,也可以在表达式浏览器中以表格形式展示,或者作为数据源提供给API请求

在Prometheus的表达式语言中,任何表达式或者子表达式都可以归为四种类型:

  • instant vector瞬时向量:它是指在同一时刻,抓取的所有度量指标数据。这些度量指标数据的key都是相同的,也即相同的时间戳,返回瞬时向量的表达式是唯一可以直接绘制图形的类型
  • range vector范围向量:它是指在任何一个时间范围内,抓取的所有度量指标数据
  • scalar 标量:一个简单的浮点值
  • string 字符串:一个当前没有被使用的简单字符串

3.1 字面量

字符串可以用单引号,双引号或反引号指定为文字。

"this is a string"
'these are unescaped: \n \\ \t'
`these are not unescaped: \n ' " \t"'`

标量浮点值可以直接写成形式 -[.(digits)]。

-2.43

3.2时间序列选择器

瞬时向量选择器允许在给定时间戳(即时)为每个选择一组时间序列和单个样本值

# 选择所有时间序列度量名称为http_requests_total的样本数据
http_requests_total# 选择具有http_requests_total度量标准名称的时间系列,该名称也将job标签设置为prometheus,并将其group标签设置为canary
http_requests_total{job="prometheus",group="canary"}# 度量指标名称为http_requests_total,正则表达式匹配标签environment为staging, testing, development的值,且http请求方法不等于GET
http_requests_total{environment=~"staging|testing|development",method!="GET"}

范围向量的工作方式与即时向量相同,不同之处在于它们从当前即时选择回采样范围。 在语法上,范围持续时间附加在向量选择器末尾的方括号([])中,指定为每个结果范围向量元素提取多长时间值

选择在过去5分钟内为度量标准名称为http_requests_total且job标签设置为prometheus的所有时间序列记录的所有值:

http_requests_total{job="prometheus"}[5m]

offset偏移修饰符允许在查询中改变单个瞬时向量和范围向量中的时间偏移

# 返回过去相对于当前查询评估时间5分钟的http_requests_total值:
http_requests_total offset 5m

4 API

在Prometheus服务器上的/api/v1下可以访问当前稳定的HTTP API,API返回是JSON格式,每个请求成功的返回值都是以2xx开头的编码。如果API处理的是无效请求,返回一个JSON错误对象,并返回下面的错误码:

  • 400 Bad Request。当参数错误或者丢失时。
  • 422 Unprocessable Entity。当一个表达式不能被执行时。
  • 503 Service Unavailable。当查询超时或者中断时。

在 query请求时可以指定参数如下

  • query=: Prometheus表达式查询字符串。
  • time=<rfc3339 | uninx_timestamp>:执行时间戳,如果time缺省,则用当前服务器时间表示执行时刻
  • timeout=: 执行超时时间设置,可选项,默认由-query.timeout标志设置

4.1 请求监测数据

如下所示为一个query请求指定时间点up参数的数据

$ curl 'http://localhost:9090/api/v1/query?query=up&time=2015-07-01T20:10:51.781Z'
{"status": "success","data":{"resultType": "vector","result" : [{"metric" : {"__name__" : "up","job" : "prometheus","instance" : "localhost:9090"},"value": [ 1435781451.781, "1" ]},{"metric" : {"__name__" : "up","job" : "node","instance" : "localhost:9100"},"value" : [ 1435781451.781, "0" ]}]}
}

同理,可以使用/api/v1/query_range接口请求一段时间内的数据

  • query=: Prometheus表达式查询字符串。
  • start=<rfc3339 | unix_timestamp>: 开始时间戳。
  • end=<rfc3339 | unix_timestamp>: 结束时间戳。
  • step=: 以持续时间格式查询分辨率步长或浮点秒数。
  • timeout=:评估超时,默认为-query.timeout标志的值并受其限制。

4.2 请求元数据

通过/api/v1/series接口可以对元数据信息进行查询,通过match[]参数可以指定选择器

$ curl -g 'http://localhost:9090/api/v1/series?match[]=up&match[]=process_start_time_seconds{job="prometheus"}'
{"status" : "success","data" : [{"__name__" : "up","job" : "prometheus","instance" : "localhost:9090"},{"__name__" : "up","job" : "node","instance" : "localhost:9091"},{"__name__" : "process_start_time_seconds","job" : "prometheus","instance" : "localhost:9090"}]
}

4.3 查询目标

通过/api/v1/targets可以查询Prometheus监控的目标信息

$ curl http://localhost:9090/api/v1/targets
{"status": "success","data": {"activeTargets": [{"discoveredLabels": {"__address__": "127.0.0.1:9090","__metrics_path__": "/metrics","__scheme__": "http","job": "prometheus"},"labels": {"instance": "127.0.0.1:9090","job": "prometheus"},"scrapeUrl": "http://127.0.0.1:9090/metrics","lastError": "","lastScrape": "2017-01-17T15:07:44.723715405+01:00","health": "up"}],"droppedTargets": [{"discoveredLabels": {"__address__": "127.0.0.1:9100","__metrics_path__": "/metrics","__scheme__": "http","job": "node"},}]}
}

还有一些用于查询的API接口,可以详见https://prometheus.io/docs/prometheus/latest/querying/api/

# 查询配置规则信息
curl http://localhost:9090/api/v1/rules
# 查询所有活动警报的列表
curl http://localhost:9090/api/v1/alerts
# 查询运行时信息
curl http://localhost:9090/api/v1/status/runtimeinfo

4.4 管理API

Prometheus提供了一些用于管理的API如下

# 健康检测,始终返回200,应用于检查Prometheus的运行状况。
curl http://localhost:9090/-/healthy# 准备检查,当Prometheus准备服务流量(即响应查询)时,返回200
GET /-/ready# 重载:请求对配置和规则文件的重新加载。 默认情况下它是禁用的,可以通过--web.enable-lifecycle标志启用
curl -X POST http://localhost:9090/-/reload
# 也可以通过将SIGHUP发送到Prometheus进程来触发配置重载。
kill -HUP pid# 退出,Prometheus的正常关闭。 默认情况下它是禁用的,可以通过--web.enable-lifecycle标志启用
PUT  /-/quit
POST /-/quit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024阿里云优惠,云服务器61元一年起

2024年最新阿里云主机价格&#xff0c;最低配置2核2G3M起步&#xff0c;只要61元一年&#xff0c;还可以在阿里云CLUB中心领券 aliyun.club 专用满减优惠券。 1、云服务器ECS经济型e实例2核2G、3M固定带宽99元一年 2、轻量应用服务器2核2G3M带宽轻量服务器一年61元 3、阿里云轻…

ECMAScript日常总结--ES2019(ES10)

ECMAScript日常总结–ES2019(ES10) 文章目录 ECMAScript日常总结--ES2019(ES10)1. Object.fromEntries() -- 将键值对的列表转换为对象2. Array.prototype.flat() -- 用于将嵌套数组&#xff08;多维数组&#xff09;扁平化为一维数组3. String.prototype.trimStart() 和 Strin…

蓝桥杯备战——3.定时器前后台

1.STC15F2k61S2的定时器 阅读STC15系列的手册&#xff0c;我们可以看到跟STC89C52RC的定时器还是有不同之处的&#xff1a; 由上图可以看到我们可以通过AUXR寄存器直接设置定时器的1T/12T模式了 在定时器0/1模式上也可以设置为16位自动重装载。 另外需要注意IAP15F2K61S2只有…

使用 SpringBoot 读取 YAML 文件并将数据转为 Map,在嵌套 Map 中递归获取指定层级下的所有数据

文章目录 引入认识 YAML 格式规范定义脱敏规则格式主要逻辑实现优化方法完整工具类 引入 在项目中遇到一个需求&#xff0c;需要对交易接口返回结果中的指定字段进行脱敏操作&#xff0c;但又不能使用AOP注解的形式&#xff0c;于是决定使用一种比较笨的方法&#xff1a; 首先…

nvm安装的node,脚手架安装 vue 项目时报错

npm install -g vue/cli 时报错 解决办法 //修改npm的资源镜像: npm config set registry http://registry.npm.taobao.org重新脚手架安装 npm install -g vue/cli成功到下一步&#xff0c;当执行&#xff1a;vue create my-vue-demo时又报新的错 原因&#xff1a;【HTTPS …

part2. jdk9/10/11/12/16新特性详解

1.jdk9 1.1 模块化机制 定义模块&#xff1a;module-info.java module com.newfeature.test {requires java.se;requires lombok;requires junit; }package com.newfeature.test;import java.lang.reflect.Field;public class Main {public static void main(String[] args) …

mysql字符集

一、查看字符集 //查看数据库字符集 SHOW CREATE DATABASE database; //查看表字符集 SHOW CREATE DATABASE table; //查看指定表全部字段字符集 show full columns from table; 二、修改字符集 将超出utf8字符集范围的字符比如&#x2aa27;插入到utf8字符集的字段上会…

Element UI样式修改之NavMenu导航菜单箭头样式修改

UI设计稿给的菜单箭头样式可能与我们饿了么组件NavMenu的菜单箭头样式不一致,目前我们侧边导航菜单的上下翻转箭头如下所示: 希望得到如下的结果: 找到饿了么Icon里我们想要向下箭头,F12后复制content内容content: “\e790”; content: "\e790";然后将默认的c…

C语言基本概念

目录 2.1 编写一个简单的C程序 2.1.1 编译和链接 2.1.2 集成开发环境 2.2 简单程序的一般形式 2.2.1 指令 2.2.2 函数 2.2.3 语句 2.3 注释 2.4 变量和赋值 2.4.1 类型 2.4.2 声明 2.4.3 赋值 2.4.4 显示变量的值 2.4.5 初始化 2.4.6 显示表达式的值 2.5 读入…

网络通信(15)-C#TCP客户端掉线重连实例

本文上接前面的文章使用Socket在C#语言环境下完成TCP客户端的掉线重连实例。 掉线重连需要使用心跳包发送测试网络的状态,进而进入重连循环线程。 前面实例完成的功能: 客户端与服务器连接,实现实时刷新状态。 客户端接收服务器的数据。 客户端发送给服务器的数据。 客…

pytorch代码实现注意力机制之MLCA

MLCA注意力机制 简要&#xff1a;注意力机制是计算机视觉中使用最广泛的组件之一&#xff0c;可以帮助神经网络强调重要元素并抑制不相关的元素。然而&#xff0c;绝大多数信道注意力机制仅包含信道特征信息而忽略了空间特征信息&#xff0c;导致模型表示效果或目标检测性能较…

docker之部署青龙面板

青龙面板是一个用于管理和监控 Linux 服务器的工具&#xff0c;具有定时运行脚本任务的功能。在实际情况下也可以用于一些定期自动签到等任务脚本的运行。 本次记录下简单的安装与使用&#xff0c;请提前安装好docker&#xff0c;参考之前的文章。 一、安装部署 1、拉取镜像 # …

weak_ptr 与 一个难发现的错误(循环依赖问题)笔记

推荐B站视频&#xff1a;7.weak_ptr与一个非常难发现的错误_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL/?p7&spm_id_frompageDriver&vd_sourcea934d7fc6f47698a29dac90a922ba5a3一、weak_ptr weak_ptr并不拥有所有权并不能调用 -> 和 解引…

ACL--访问控制列表概述、组成、分类、应用

目录 一、ACL概述 二、ACL的组成 三、ACL分类 四、举例说明 1、基于标准ACL和基础的高级ACL应用 2、基于端口的ACL 一、ACL概述 访问控制列表ACL&#xff08;Access Control List&#xff09;是由一条或多条规则组成的集合。所谓规则&#xff0c;是指描述报文匹配条件的…

热门免费API集合收藏

IP归属地-IPv4区县级&#xff1a;根据IP地址查询归属地信息&#xff0c;包含43亿全量IPv4&#xff0c;支持到中国地区&#xff08;不含港台地区&#xff09;区县级别&#xff0c;含运营商数据。 IP归属地-IPv6区县级&#xff1a;根据IP地址&#xff08;IPv6版本&#xff09;查…

黑马程序员——javase进阶——day02——关键字,接口,代码块,枚举

目录&#xff1a; Java中的关键字 static关键字final关键字Java中的权限修饰符代码块 构造代码块静态代码块接口 接口的介绍接口的定义和特点接口的成员特点接口的案例接口中成员方法的特点枚举随堂小记 继承方法重写抽象类模板设计模式staticfinal权限修饰符接口回顾上午内容…

大数据开发之Spark(完整版)

第 1 章&#xff1a;Spark概述 1.1 什么是spark 回顾&#xff1a;hadoop主要解决&#xff0c;海量数据的存储和海量数据的分析计算。 spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 hadoop与spark历史 hadoop的yarn框架比spark框架诞生的晚&#xff…

Objective-C方法的声明实现及调用

1.无参数的方法 1)声明 a.位置&#xff1a;在interface括弧的外面 b.语法&#xff1a; - (返回值类型)方法名称; interface Person : NSObject -(void) run; end 2)实现 a.位置&#xff1a;在implementation中实现 b.语法&#xff1a;加大括弧将方法实现的代码写在大括孤之中 …

mybatisPlus apply作用及代码示例

MyBatis Plus 的 apply 方法可以帮助我们在查询条件中使用自定义的 SQL 片段&#xff0c;它允许我们将任意的 SQL 代码片段作为查询条件添加到 SQL 语句中。当我们需要通过 SQL 函数或表达式来构建复杂的查询条件时&#xff0c;就可以使用 apply 方法。 apply 方法的使用方法比…

KernelGPT: LLM for Kernel Fuzzing

KernelGPT: Enhanced Kernel Fuzzing via Large Language Models 1.Introduction2.Background2.1.Kernel and Device Drivers2.2.Kernel Fuzzing2.2.1.Syzkaller规约2.2.2.规约生成 3.Approach3.1.Driver Detection3.2.Specification Generation3.2.1.Command Value3.2.2.Argum…