Prometheus 上手指南

文章目录

  • Prometheus 相关概念
    • Prometheus 的特点
    • Prometheus 架构
    • 数据模型 Datemode
      • 使用场景
    • 指标类型 Metric type
      • 适用场景
    • 作业和实例 Jobs and instances
      • 使用场景
  • Prometheus 安装
  • Prometheus 配置
    • prometheus
    • alertmanager
  • Grafana 可视化
    • Grafana 安装
    • Grafana 配置选项
    • Grafana UI
  • PromQL
    • 使用位置
    • 样例
    • 格式


Prometheus 相关概念

Prometheus 是一个开源系统监控和警报工具包

Prometheus 的特点

  • 多维数学模型:基于时间序列的数据模型,每个时间序列由度量名称和键值对标签组成
  • PromQL 查询:Prometheus特有的查询语言,可让用户实时选择和聚合时间序列数据,并且表达式结果可显示为图形
  • 无分布式存储:不依赖分布式存储,单个服务器节点是自主的
  • 采用拉取模式:通过HTTP主动从目标处拉取指标数据
  • 可视化选项丰富:Prometheus内置 UI,并支持 Grafana 等可视化工具,支持多种图形和仪表盘

与Prometheus类似的监控系统有:

  • Nagios:传统的IT基础设施监控工具。
  • Zabbix:企业级的分布式监控解决方案。
  • Graphite:专注于时间序列数据存储和图形化。
  • InfluxDB:专门为时间序列数据设计的数据库,常与Telegraf结合使用。
  • Sensu:云原生监控工具,支持自动发现和动态环境。
  • Datadog:SaaS 型监控平台,提供全面的基础设施和应用程序监控。

Prometheus相较于其他监控系统的优势:

  1. 安装配置简单:安装和使用都相对简单,配置文件使用 YAML 格式
  2. 数据模型丰富:数据查询和聚合更加灵活和高效
  3. 专注于高性能:专注于监控和告警,而不是试图成为全能型解决方案,使得它在特定领域表现极为出色,可以每秒处理数百万个指标
  4. 云原生更好支持:与 Kubernetes 等容器编排系统有很好的集成,支持服务发现

Prometheus 架构

Prometheus 的架构与其他一些生态组件

在这里插入图片描述

metrics 是指标的意思

图片中间部分:

  1. Prometheus Server:
    • 核心组件,负责数据的采集、存储和查询
    • Retrieval:检索,负责从目标拉去指标数据
    • TSDB (Time Series Database) :时间序列数据库,用于存储所有采集到的时间序列数据
    • HTTP server:HTTP服务器,用于提供 API 接口,用于数据查询等接口操作
  2. Service discovery:
    • kubernetes:自动发现 Kubernetes 集群中的监控目标
    • file_sd:基于文件的服务发现,用于静态配置监控目标
  3. Node:
    • 表示运行 Prometheus 服务器的物理或者虚拟服务器
    • HDD/SSD:存储 TSDB 数据的硬盘

图片左侧部分:

  1. Prometheus Targets:
    • 通常是长期运行的服务或应用程序
    • 暴露 HTTP 接口提供 Prometheus 抓去指标数据
    • Jobs/exporters:被监控的目标(服务器、应用程序等)
  2. Pushgateway:
    • 用于接收短期作业的指标推送
    • 允许那些无法被 Prometheus 直接拉取的作业推送它们的指标数据
  3. Short-lived jobs:
    • 生命周期较短的作业,难以被 Prometheus 直接拉取
    • 在作业退出时将指标推送到 Prometheus

图片右侧部分:

  1. Data Visualization and Export:
    • Prometheus Web UI:Prometheus内置的简单用户界面
    • Grafana:Prometheus更好的可视化工具
    • API clients:使用 Prometheus API 的客户端应用程序
  2. PromQL:
    • Prometheus 查询语言,用于查询和聚合时间序列数据
  3. Alertmanager:
    • 处理由 Prometheus 服务器发送的警报
    • 对警报进行分组、去重,并路由到正确的接收方式(如 PagerDuty、Email 等)

关于Prometheus Targets与Pushgateway:

Pormetheus Targets:

作用:

  • 是 Prometheus 直接抓取指标数据的目标
  • 通常是长期运行的服务或应用程序

特点:

  • 暴露 HTTP 端点(通常是 /metrics),Prometheus 定期从这个端点拉取数据
  • 被动等待 Prometheus 来抓取数据

适用场景:

  • 持续运行的服务,如 web 服务器、数据库、应用服务器等
  • 能够持续暴露最新指标的系统
  • 适合大多数标准的监控场景

Pushgateway:

作用:

  • 作为中间人接收来自短期作业的指标推送
  • 存储这些指标,知道 Prometheus 来抓取

特点:

  • 主动接收来自客户端推送的指标数据
  • 允许短期作业在完成时推送它们的指标

适用场景:

  • 短期作业或者批处理任务
  • 防火墙后不能直接被 Prometheus 访问的作业
  • 需要汇总多个源数据后再提供给 Prometheus 的场景
区别Prometheus TargetsPushgateway
数据流向被动等待拉取主动接收推送
持久性长期运行处理短期作业
数据新鲜度最新数据存储旧数据,直到被覆盖
复杂度简单直接额外的组件和复杂性

无法被 Prometheus 直接拉取的作业示例:

  • 批处理作业:如夜间数据处理、定期报告生成等
  • CI/CD 流水线中的构建作业
  • 定期备份任务
  • 防火墙后的内部服务,Prometheus 无法直接访问
  • 短期的云函数或 serverless 任务
  • 分布式系统中的临时工作节点
  • 离线数据处理任务,如 ETL 作业
  • 定期维护脚本或系统检查
  • 动态扩缩容的实例,可能在 Prometheus 下一次抓取前就已经消失。
  • 需要聚合多个微服务数据的场景,where 个别微服务可能短暂不可用

以上场景需要使用 Pushgateway


数据模型 Datemode

Prometheus官网介绍:https://prometheus.io/docs/concepts/data_model/

Prometheus 的数据模型基于时间序列。每个时间序列的组成:

  • 指标名称(Metirc name):描述被测量的系统特征(例如 http_requests_total
  • 标签对(Label pairs):键值对的形式,用于进一步区分指标的不同维度(例如 method="POST",status="200"
  • 时间戳(Timestamp):数据点的采集时间
  • 样本值(Sample value):在特定时间点测量的数值

示例:

http_requests_total{method="POST",status="200"} 1234 1600781977

使用场景

  • 需要存储和查询随时间变化的数据
  • 需要对数据进行多维度分析

指标类型 Metric type

Prometheus官网介绍:https://prometheus.io/docs/concepts/metric_types/

四种指标类型:

  1. 计数器(Counter):单调递增的累计值
  2. 仪表盘(Gauge):可以上下波动的瞬时值
  3. 直方图(Histogram):对观察值进行采样,提供总和和观察次数
  4. 摘要(Summary):类似直方图,但提供基于滑动窗口的分位数计算

适用场景

  • Counter: 用于累积值,例如:请求总数、错误总数
  • Gauge: 用于可变值,例如:当前温度、内存使用量
  • Histogram: 用于需要分布情况的数据,例如:响应时间分布
  • Summary: 用于需要准确百分位数的场景,例如:请求持续时间的第 90 百分位

作业和实例 Jobs and instances

Prometheus官网介绍:https://prometheus.io/docs/concepts/jobs_instances/

  • 作业(Job):一组执行相同任务的实例集合
  • 实例(Instance):一个可以被抓取的端点,通常对应一个单独的进程

yaml 文件中 Prometheus 自动为每个抓取的目标添加这些标签:

  • job:配置的作业名称
  • instance:被抓取的目标 <host>:<port>

示例 yaml 配置:

scrape_configs:- job_name: 'node exporter'static_configs:- targets: ['192.168.84.10:9100', '192.168.84.11:9100', '192.168.84.12:9100']

使用场景

  • 需要对多个相似的目标进行分组和管理
  • 需要区分相同服务的不同实例

Prometheus 安装

此处以三台 CentOS 9 虚拟机为例:

虚拟机安装推荐文章:Linux CentOS9安装配置-CSDN博客

虚拟机固定 IP主机名
192.168.84.10node1
192.168.84.11node2
192.168.84.12node3

Prometheus组件下载地址:https://prometheus.io/download/

需要下载的组件:

组件介绍
prometheusPrometheus监控系统与时间序列数据库
node_exporter机器指标导出器
pushgateway用于临时和批量作业的推送接受器
alertmanagerPrometheus 警报管理器

介绍都是官方直译

  1. 在 node1 节点上上传解压这四个组件(此处对组件进行了重命名,去除了.linux-amd64 后缀)

在这里插入图片描述

  1. 进入 prometheus 组件目录

在这里插入图片描述

其中 prometheus.yml 是它的配置文件(由后缀可以看出改配置文件使用的是 yaml 语法),默认内容为:

# my global config
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["localhost:9090"]
  1. scrape_configs 模块中 static_configstargets 内容 localhost 改为 node1 IP或主机名(需注意是否配置主机名映射)
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["192.168.84.10:9090"]
  1. 通过 pushgateway 组件获取数据,需要在 prometheus.yml 文件 scrape_configs 中配置相关 job_name

注意修改 IP 地址,默认端口为 9091

- job_name: 'pushgateway'static_configs:- targets: ['192.168.84.10:9091']labels:instance: pushgateway
  1. 第一部分:通过 node_export 组件获取数据,需要在 prometheus.yml 文件中配置相关 job_name

从 node1、node2、node3 三台节点拿取数据

注意 node1、node2、node3 IP 地址,默认端口为9100

- job_name: 'node exporter'static_configs:- targets: ['192.168.84.10:9100', '192.168.84.11:9100', '192.168.84.12:9100']
  1. 第二部分:将 node_exporter 分发到 node2、node3
#分发给node2
scp -r /home/fishpie/apps/node_exporter-1.8.2 root@192.168.84.11:/home/fishpie/apps
#分发给node3
scp -r /home/fishpie/apps/node_exporter-1.8.2 root@192.168.84.11:/home/fishpie/apps

或是在node2、node3下载安装 node_exporter-1.8.2

  1. 在 node1、node2、node3 启动 node_exporter-1.8.2 ,在 node1 启动 prometheus

为了使 node_exporterprometheus 服务做到开机自启动与监控中断后自动重启,我们可以将其作为一个系统服务并设置为开机自启动(类似于会自动重启的 nohup)

  • 第一步:node1、node2、node3 禁用 SELinux:
sudo vim /etc/selinux/config

将文件内 SELINUX 参数改为 disabled ,如下图
在这里插入图片描述

node1、node2、node3 重启系统使修改生效

sudo reboot
  • 第二步:node1 创建 prometheus 服务文件
sudo vim /etc/systemd/system/prometheus.service

添加以下内容,注意改为自己的 prometheus 命令位置、prometheus.yml 位置, User 为自己系统的用户

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target[Service]
User=fishpie
ExecStart=/home/fishpie/apps/prometheus-3.0.0/prometheus --config.file=/home/fishpie/apps/prometheus-3.0.0/prometheus.yml
Restart=always[Install]
WantedBy=multi-user.target
  • 第三步:node1、node2、node3 创建 node_exporter 服务文件
sudo vim /etc/systemd/system/node_exporter.service

添加一下内容,注意修改自己 node_exporter 命令

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target[Service]
User=fishpie
ExecStart=/home/fishpie/apps/node_exporter-1.8.2/node_exporter
Restart=always[Install]
WantedBy=multi-user.target
  • 第四步:重新加载 systemd 管理器配置,在 node1、node2、node3 节点执行
sudo systemctl daemon-reload
  • 第五步:启动服务

node1上:

sudo systemctl start prometheus
sudo systemctl start node_exporter

node2、node3上:

sudo systemctl start node_exporter
  • 第六步:检查服务状态

node1上:

sudo systemctl status prometheus
sudo systemctl status node_exporter

node2、node3上:

sudo systemctl status node_exporter

如果 prometheusnode_exporter 服务正常则会显示:
在这里插入图片描述

  • 第七步:确认无误后设为服务开机自启动

node1:

sudo systemctl enable prometheus
sudo systemctl enable node_exporter

node2、node3:

sudo systemctl enable node_exporter
  • 访问网页 192.168.84.10:9090 查看 Target 运行状态

找到 Target 如果正常则会有一下页面
在这里插入图片描述

如果出现:

Error scraping target: Get “http://192.168.84.11:9100/metrics”: dial tcp 192.168.84.11:9100: connect: no route to host

则需要检查自己的防火墙是否关闭或者 9100 端口是否放行

  • 如果有需要启动 pushgateway 的情况

node1 在 pushgateway 目录下执行 :

nohup ./pushgateway --web.listen-address :9091 > ./pushgateway.log 2>&1 &

后台运行 pushgateway
在这里插入图片描述

此时我们的 pushgateway 就是 up 状态了
在这里插入图片描述

  • 如果有需要启动 alertmanager 的情况

node1 在 alertmanager 目录下执行:

nohup ./alertmanager --config.file=alertmanager.yml > ./alertmanager.log 2>&1 &

Prometheus 配置

prometheus

  • 目录内容
    在这里插入图片描述

prometheus.yaml 是 Prometheus 服务器的主要配置文件,定义了 Prometheus 如何收集指标、管理数据、配置告警等所有核心行为

prometheus.yaml 使用 YAML 格式,支持动态重载

  • prometheus 配置文件prometheus.yaml默认内容:
# my global config
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["192.168.84.10:9090"]- job_name: 'pushgateway'static_configs:- targets: ['192.168.84.10:9091']labels:instance: pushgateway- job_name: 'node exporter'static_configs:- targets: ['192.168.84.10:9100', '192.168.84.11:9100', '192.168.84.12:9100']

以上配置文件分为四个大模块:

  1. 全局配置(global):
global:scrape_interval: 15sevaluation_interval: 15s
  • scrape_interval :设置全局默认的数据抓去间隔
  • evaluation_interval :设置规则评估时间(告警检查的时间)
  1. Alertmanager 配置(alerting):
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093
  • 用于配置 Alertmanager ,配置信息中 alertmanager 填为安装启动了 alertmanager 的主机名或IP
  1. 规则文件(rule_files):
rule_files:# - "first_rules.yml"# - "second_rules.yml"
  • 用于指定告警规则和记录规则文件
  1. 抓取配置 (scrape_configs) 注意缩进问题
- job_name: "prometheus"static_configs:- targets: ["192.168.84.10:9090"]
  • 定义了 Prometheus 从哪些目标收集指标,此处配置为 Prometheus 抓去自己的指标,监控地址为 192.168.84.10:9090
- job_name: 'pushgateway'static_configs:- targets: ['192.168.84.10:9091']labels:instance: pushgateway
  • 配置抓取 Pushgateway 的指标,地址为 192.168.84.10:9091
  • 添加了一个自定义标签 instance: pushgateway

自定义标签 instance: pushgateway 的作用:

  • 标识:这个标签帮助唯一标识这个特定的 Pushgateway 实例
  • 查询和过滤:在 Prometheus 的查询语言 PromQL 中,你可以使用这个标签来过滤或选择特定的指标,例如使用查询 {instance="pushgateway"} 来选择所有来自这个 Pushgateway 的指标
  • 区分数据源:在多个数据源的情况下,这个标签可以区分哪些指标是 Pushgateway 的
  • 可视化部分:这个标签可以帮助在 Grafana 等可视化工具组织和过滤仪表板
- job_name: 'node exporter'static_configs:- targets: ['192.168.84.10:9100', '192.168.84.11:9100', '192.168.84.12:9100']
  • 配置抓取三个 Node Exporter 实例的指标,分别位于三个不同的 IP 地址上

alertmanager

  • 目录内容
    在这里插入图片描述

alertmanager 配置文件为 alertmanager.yml

采用 YAML语法

  • alertmanager 配置文件 alertmanager.yml 默认内容:
route:group_by: ['alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 1hreceiver: 'web.hook'
receivers:- name: 'web.hook'webhook_configs:- url: 'http://127.0.0.1:5001/'
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']

alertmanager.yml 配置文件由三个大模块构成:

  1. route(路由):
route:group_by: ['alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 1hreceiver: 'web.hook'
  • group_by: 按 ‘alertname’ 对告警进行分组

  • group_wait: 在发送分组的第一个告警前等待 30 秒,允许收集更多相关告警

  • group_interval: 发送同一组的后续告警的间隔为 5 分钟

  • repeat_interval: 如果告警持续存在,每 1 小时重复发送一次

  • receiver: 指定默认接收者为 ‘web.hook’(由以下 receiver 定义)

  1. reveivers(接受者):
receivers:- name: 'web.hook'webhook_configs:- url: 'http://127.0.0.1:5001/'
  • 定义了一个名为 ‘web.hook’ 的接收者,并将告警发送到 http://127.0.0.1:5001/
  • 接受者可以定义多个
  1. inhibit_rules(抑制规则)
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']
  • 当存在严重级别为 ‘critical’ 的告警时,抑制严重级别为 ‘warning’ 的相关告警
  • ‘alertname’、‘dev’ 和 ‘instance’ 标签必须相同才会触发抑制

Grafana 可视化

Prometheus 官方推荐的可视化操作界面,使用 Grafana 需要有以下两个必需组件:

  • prometheus
  • node_exporter

Grafana 安装

两种方法可以为 Grafana 配置 Prometheus。可以使用 Grafana Cloud 上托管的 Grafana 实例或在本地运行 Grafana ,此处选择本地运行 Grafana

也可以选择安装 Windows 客户端 ,此处选择在 Linux 安装

Grafana 安装包地址:https://grafana.com/grafana/download

此处选取两种安装方式:

  1. 独立 Linux 二进制文件,在需要的安装目录
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-11.2.0.linux-amd64.tar.gztar -zxvf grafana-enterprise-11.2.0.linux-amd64.tar.gz
  1. yum 安装,能自动作为系统服务,不需要再手动配置(推荐)
sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-11.2.0-1.x86_64.rpm

此处我们采用 yum 安装
在这里插入图片描述

如果 grafana 使用 YUM 正常安装,则在输入

whereis grafana

后会以下显示
在这里插入图片描述


Grafana 配置选项

Grafana 完整配置文档:https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/

Grafana 后端在其配置文件中定义了许多配置选项(在 Linux 系统上通常位于/etc/grafana/grafana.ini)

在这里插入图片描述

如图

现在我们编辑这个 grafana.ini 文件

大多数情况下,默认配置就足够了。只有在需要特定设置时才需要修改

修改配置后一定要重启Grafana服务以使更改生效

一定备份原始的 grafana.ini 文件!

sudo vim /etc/grafana/grafana.ini
  • 更改 HTTP 端口(默认为 3000)
[server]
http_port = 3000

在这里插入图片描述

  • 设置根 URL(如果Grafana在反向代理后面)
[server]
root_url = http://这里的汉字改为你的域名/grafana
# 根据自己的代理路径进行更改
  • 配置数据库(默认使用 SQLite)
[database]
type = mysql
host = <数据库的地址>:3306
name = <你的数据库名称>
user = <你的数据用户>
password = <你的数据库密码>
  • 配置 Grafana 的用户名和密码
[security]
admin_user = <自己设置用户名>
admin_password = <自己设置密码>
  • 配置日志
[log]
mode = console file
level = info

修改完配置后,保存退出文件并启动 Grafana 服务

#启动 grafana服务
sudo systemctl start grafana-server
#平滑重启 grafana 服务
sudo systemctl restart grafana-server

Grafana UI

作者是在 node1 节点(192.168.84.10)安装配置的 Grafana

如果上述步骤正确完成,则在访问 http://192.168.84.10:3000/ 会有
在这里插入图片描述

此处输入自己设置的 用户名 和 密码 即可进入 Grafana 监控页面
在这里插入图片描述

添加 Prometheus 数据源
在这里插入图片描述

选择 Prometheus 数据源
在这里插入图片描述

设置 Prometheus 所在 URL
在这里插入图片描述

下拉保存

创建仪表盘
在这里插入图片描述

创建新的仪表盘
在这里插入图片描述
在这里插入图片描述

查看 CPU 使用情况
在这里插入图片描述

一些常见的监控项目指标:

系统资源:

  • CPU使用率:node_cpu_seconds_total
  • 内存使用:node_memory_MemTotal_bytes - node_memory_MemFree_bytes
  • 磁盘使用:node_filesystem_free_bytes
  • 网络流量:node_network_receive_bytes_total, node_network_transmit_bytes_total

应用性能:

  • HTTP请求率:http_requests_total
  • 请求延迟:http_request_duration_seconds
  • 错误率:http_requests_total{status=~"5.."} / http_requests_total

数据库指标:

  • 连接数:mysql_global_status_threads_connected
  • 查询性能:mysql_global_status_queries

容器和编排指标(如果使用Kubernetes):

  • 容器CPU使用:container_cpu_usage_seconds_total
  • 容器内存使用:container_memory_usage_bytes

更用法请详见官方文档:https://grafana.com/docs/grafana/latest/panels-visualizations/visualizations/time-series/

现成的仪表盘:https://grafana.com/grafana/dashboards/


PromQL

PromQL(Prometheus Query Language)是专为 Prometheus 设计的查询语言,用于从 Prometheus 数据库中提取、过滤和聚合监控数据

使用位置

  • Prometheus 自带 UI 中
    在这里插入图片描述

  • 在 Grafana 中

仪表盘中选择
在这里插入图片描述


样例

以下是一些常用的 PromQL 的使用样例:

  • 返回所有 CPU 相关的时间序列
node_cpu_seconds_total
  • 返回空闲 CPU 时间的时间序列
node_cpu_seconds_total{mode="idle"}
  • 返回过去 5 分钟的空闲 CPU 时间数据
node_cpu_seconds_total{mode="idle"}[5m]

  • 使用 rate() 函数返回过去 5 分钟内每秒的平均 CPU 空闲率
rate(node_cpu_seconds_total{mode="idle"}[5m])
  • 使用 sum() 函数计算每个实例的总 CPU 使用率
sum(rate(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance)
  • 组合函数计算每个实例的 CPU 使用百分比
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

  • 预测 4 小时后哪些实例的根分区可能耗尽空间
predict_linear(node_filesystem_free_bytes{mountpoint="/"}[1h], 4 * 3600) < 0

格式

可以看出 PromQL 有一些规律:

# 基本格式
<metric name>{<label matcher>}[<time range>]
  • <metric name>: 指标名称

  • {<label matcher>}: 可选的标签匹配器

  • [<time range>]: 可选的时间范围选择器

标签匹配器格式:

{label1="value1", label2=~"regex2", label3!="value3"}
  • =: 精确匹配

  • !=: 不等于

  • =~: 正则匹配

  • !~: 正则不匹配

更多细节详见:https://prometheus.io/docs/prometheus/latest/querying/basics/


Prometheus 官网:https://prometheus.io/

Grafana 文档:https://grafana.com/docs/grafana/latest/getting-started/get-started-grafana-prometheus/

Grafana 仪表盘:https://grafana.com/grafana/dashboards/

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序开发第五课

一 vant-app # https://vant-contrib.gitee.io/vant-weapp/#/home1.1 集成步骤 # 0 必须使用专门为小程序提供的npm包&#xff0c;通常好多包用不了&#xff0c;比如第三方包用了dom&#xff0c;小程序没有 https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.h…

MATLAB画图,曲线图如何绘制美观,曲线图10种美化方法

曲线图是比较常用的图形&#xff0c;本文以二维曲线图为例&#xff0c;展示曲线的图的不同美化方法&#xff0c;如图1所示&#xff0c;是一个标准的曲线图&#xff0c;横坐标为x&#xff0c;纵坐标为y, 图1 标准曲线图 调整方法1 首先可以通过改变线的颜色&#xff0c;不同…

使用API有效率地管理Dynadot域名,为域名进行隐私保护设置

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…

js中的 赋值 浅拷贝 和 深拷贝 详细解读

js数据类型主要分基本数据类型和引用数据类型。前者包括Number,String等&#xff0c;后者主要是Object,因此以下会针对不同的数据类型来分析,需要的朋友可以参考一下 基本数据类型&#xff08;Primary Data Types&#xff09;: String&#xff08;字符串&#xff09; Number&…

【4】AT32F437 OpenHarmony轻量系统移植教程(1)

开源地址&#xff1a;https://gitee.com/AT32437_OpenHarmony 1.学习本文档的意义 1.学习移植OpenHarmony轻量系统到AT32全系列mcu上&#xff0c;本文档移植的具体型号为AT32F437ZMT7 2.学习OpenHarmony轻量系统开发 2.移植前的准备工作 1.移植之前必须要先熟悉AT-START-F…

C:字符串函数(完)-学习笔记

目录 前言&#xff1a; 1、strstr 1.1 strstr的使用 4.2 strstr的模拟实现 5、strtok 5.1 strtok函数的介绍 5.2 strtok函数的使用 6、strerror 前言&#xff1a; 这篇文章将介绍strstr函数&#xff0c;strtok函数&#xff0c;strerror函数 1、strstr 1.1 strstr的使用…

Android JetPack系列之——Navigation

[转] 由于Android的开源性&#xff0c;在开始的几年呈现出了百家齐放的盛况&#xff0c;层出不穷的API和以及官方的API各自大放异彩&#xff0c;在丰富了android生态的同时也带来了一个很严重的问题&#xff0c;即android 的碎片化和规范化的问题。碎片化主要集中于国内的各大…

MYSQL解说

MySQL是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛用于网站和应用程序的后端数据存储。 MySQL的基础知识&#xff1a; 1. 数据库和表 数据库&#xff08;Database&#xff09;&#xff1a;存储数据的逻辑容器。表&#xff08;Table&…

MT8370|MTK8370(Genio 510 )安卓核心板参数介绍

MTK Genio 510 (MT8370)安卓核心板是一款极为先进的高性能平台&#xff0c;专为满足边缘处理、先进多媒体功能及全面的连接需求而设计&#xff0c;适用于多种人工智能(AI)和物联网(IoT)应用场景。它具备多个高分辨率摄像头支持和可联网触摸屏显示&#xff0c;适用于使用多任务高…

使用PyTorch检测和验证多GPU环境的Python脚本

使用PyTorch检测和验证多GPU环境的Python脚本 在深度学习和机器学习中&#xff0c;GPU的计算能力对模型训练和推理的速度有着极大的影响。随着多GPU系统的普及&#xff0c;如何确保多GPU能被正确识别并使用&#xff0c;是一个非常关键的问题。本文将为大家介绍一段简洁的Pytho…

怎么理解机器学习与数据融合的集成?

在科技进步的浪潮中&#xff0c;数据的重要性日益成为共识。但数据本身&#xff0c;若不经过有效的整合与分析&#xff0c;其价值便难以充分发挥。本文将探讨如何通过集成数据融合与机器学习&#xff0c;提升预测和决策的准确性。将海量数据转化为富含洞察力的信息&#xff0c;…

828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台

828华为云征文&#xff5c;华为云Flexus X实例docker部署最新Appsmith社区版&#xff0c;搭建自己的低代码平台 华为云最近正在举办828 B2B企业节&#xff0c;Flexus X实例的促销力度非常大&#xff0c;特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Ng…

算法打卡 Day34(贪心算法)-分发饼干 + 摆动序列 + 最大子序和

文章目录 理论基础Leetcode 455-分发饼干题目描述解题思路类似题目2410-运动员和训练师的最大匹配数 Leetcode 376-摆动序列题目描述解题思路 Leetcode 53-最大子序和题目描述解题思路 理论基础 贪心算法的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪心算…

【WPF】02 按钮控件圆角配置及状态切换

按钮圆角 先从工具箱里拖进来一个Button控件&#xff0c;然后对这个按钮进行美化。 首先在 xaml 里按钮控件部分 添加如下代码&#xff1a; <Button x:Name"btnLogin" Content"登录" HorizontalAlignment"Center" Margin"0,399,0,0&q…

详解Vite创建Vue3项目router-less-scss-pinia-持久化

前言 Vite 和 Webpack 都是现代化的前端构建工具&#xff0c;它们可以帮助开发者优化前端项目的构建和性能。虽然它们的目标是相似的&#xff0c;但它们在设计和实现方面有许多不同之处。webpack可以看我的上一篇文章 一、准备工作安装工具 这里我们简单介绍一下文章中使用到…

C#|.net core 基础 - 扩展数组添加删除性能最好的方法

今天在编码的时候遇到了一个问题&#xff0c;需要对数组变量添加新元素和删除元素&#xff0c;因为数组是固定大小的&#xff0c;因此对新增和删除并不友好&#xff0c;但有时候又会用到&#xff0c;因此想针对数组封装两个扩展方法&#xff1a;新增元素与删除元素&#xff0c;…

利用教育和参与的力量来推动你的应用程序的成功

在竞争激烈的应用推广领域&#xff0c;脱颖而出需要的不仅仅是华丽的广告和充满活力的视觉效果。真正吸引和留住用户的秘诀在于两个经常被忽视但非常强大的策略&#xff1a;教育和参与。如果做得对&#xff0c;这些元素可以将你的应用程序从单纯的下载转变为用户生活中必备的工…

使用jmeter进行接口测试

1、添加「测试计划」 2、添加「测试片段」&#xff0c;按照业务模块进行划分&#xff0c;不通的业务模块可以放在不同的「测试片段」中&#xff0c; 在「测试片段」中添加不同的控件&#xff1a; 3、测试数据比较多&#xff0c;放在文件中&#xff0c;所以要读取测试数据 4、…

包管理工具

目录 全文概要概念介绍代码共享方案包是什么包管理工具常用的包管理工具 npmnpm 的安装npm 基本使用初始化配置文件搜索包下载安装包require 导入 npm 包基本流程 项目安装生产环境与开发环境生产依赖与开发依赖 npm install 原理package-lock.jsonnpm其他常用命令配置命令别名…

HarmonyOS ArkTS 用户首选项的开发及测试

本节以一个“账本”为例&#xff0c;使用首选项的相关接口实现了对账单的增、删、改、查操作&#xff0c;并使用自动化测试框架arkxtest来对应用进行自动化测试。 为了演示该功能&#xff0c;创建一个名为“ArkTSPreferences”的应用。应用源码可以在文末《跟老卫学HarmonyOS开…