3 Prometheus安装

news2024/10/7 8:21:00

目录

1. 安装Prometheus

2. 基于linux安装Prometheus

下载安装包

将安装包放在合适的目录下

 启动prometheus

访问

3. 配置Prometheus

3.1 global

3.2 alerting

3.3 rule_files

3.4 static_configs

4. 第一个指标

5 表达式浏览器

指标列表自动填充

指标名称筛选

 指标条件筛选

 6. 聚合时间序列

sum函数进行累加

PromQL 子句by按特定维度聚合 

Rate()函数计算每秒平均增长率

7. 容量规划

7.1 内存

 7.2 磁盘

 7.3 CPU


1. 安装Prometheus

Prometheus支持以下平台进行安装:

  • Linux: 32位、64位和ARM。
  • Max OS X: 32位和64位。
  • FreeBSD: 32位、64位和ARM。
  • OpenBSD: 32位、64位和ARM。
  • NetBSD:32位、64位和ARM。
  • Windows: 32位、64位。
  • DragonFly: 64位。

在 Prometheus下载官网地址 可以下载以上所有版本。当前Linux上的最新版本是2.45.0 。

有以下安装方式:

单独安装
  • 基于linux安装
  • 基于windows安装
  • 基于mac安装
通过监控套件安装
  • 使用Docker Compose安装Prometheus、Node Exporter和Grafana。
  • 使用Docker Compose单节点安装Prometheus、Alertmanager、Node Exporter和Grafana。
  • 使用Docker Swarm安装Prometheus。
通过配置管理工具安装

可用于安装Prometheus的配置管理资源,有以下各种配置管理工具的示例:

  • Puppet的Prometheus模块
  • Chef的Prometheus cookbook
  • Ansible的Prometheus role
  • SaltStack的Prometheus formula
通过K8S安装通过K8S安装Prometheus

这里会介绍如何在linux上安装Prometheus。

2. 基于linux安装Prometheus

下载安装包

wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz

promethues安装包

将安装包放在合适的目录下

一般将安装包解压到/usr/local目录下。

tar -xzf prometheus-2.45.0.linux-amd64.tar.gz
sudo mv prometheus-2.45.0.linux-amd64 /usr/local/prometheus

 启动prometheus

可以将prometheus.yml拷贝到对应的目录下,通过参数 --config.file指定配置文件进行启动。

    /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

访问

 笔者这里没有开放9090端口供外部访问,因此需要开放下端口。

sudo iptables -I INPUT -p tcp --dport 9090 -j ACCEPT

 

这里就基于linux简单搭建了prometheus了。 

3. 配置Prometheus

Prometheus是通过YAML文件来配置的。当运行Prometheus二进制文件,会指定一个配置文件。Prometheus自带默认的配置文件prometheus.yml,该文件位于刚刚解压缩的目录中。

YAML配置容易出错,需要注意缩进等相关问题。可以使用YAML Lint在线方式或者在命令行使用yamllint来验证YAML配置文件。YAMLlint 在线校验YAML网站

以下是 Prometheus默认的配置文件:

# 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"]

可以看见在默认配置文件中定义了4个YAML块:

  • global
  • alerting
  • rule_files
  • scrape_configs

3.1 global

 顾名思义,global包含了控制Prometheus服务器行为的全局配置。

其第一个参数scrape_interval是用来制定服务抓取数据的时间间隔(默认15S)。这个值是时间序列的颗粒度,即该序列中每一个数据点所覆盖的时间段。

建议:仅设置抓取时间间隔为全局参数以保持颗粒度一致,同时确保所有时间序列具有相同的颗粒度,可以组合在一起计算。

参数 evaluation_interval 是用来指定Prometheus评估规则的频率。目前主要有两种规则:记录规则(recording rule)和警报规则(alerting rule)。

  • 记录规则: 允许预先计算使用频繁且开销大的表达式,并将结果保存为一个新的时间序列数据。
  • 警报规则: 允许定义警报条件。

3.2 alerting

它是用来设置Prometheus的警报。警报是由名为Alertmanager的独立工具进行管理的。Alertmanager是一个可以集群化的独立警报管理工具

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

在默认配置中,alerting部分包含服务器的警报配置,其中alertmanagers块会列出Prometheus服务器使用的每个Alertmanager,static_configs块表示我们要手动指定在targets数组中配置的Alertmanager。

PS: Prometheus还支持Alertmanager的服务发现功能。如可以通过查询外部源(如Consul服务器)来返回可用的Alertmanager列表,而不是单独指定每个Alertmanager。

3.3 rule_files

 它是用来指定包含记录规则和警报规则的文件列表,后续文章会详细讲到。

3.4 static_configs

它是用来指定Prometheus抓取的所有目标。Prometheus将它抓取的指标的数据源称为端点。为了抓取这些端点的数据,Prometheus定义了一个目标,这个目标里包含的信息是抓取数据所必须的。如用到的标签、建立连接所需的身份验证,或者其他定义数据抓取的信息。若干目标构成的组称为作业,作业里每个目标都有一个名为实例(instance)的标签,用来唯一标识这个目标。

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

在默认配置中定义了一个作业prometheus,它的static_configs参数部分列出了抓取的目标,这些特定的目标被单独列出来,而不是通过自动服务发现。当然,你也可以将静态配置理解为手动或人工服务发现。

这里的作业prometheus只有一个监控目标,即Prometheus服务器自身。它从本地的9090端口抓取数据并返回服务器的健康指标。Prometheus假设抓取的指标将返回到/metrics路径下,因此它会被追加到目标中然后抓取地址 http://localhost:9090/metrics。

4. 第一个指标

Prometheus服务器运行后,可以通过浏览 http://{ip}:9090/metrics 查看正在抓取的端点和一些原始的Prometheus指标。

通过运行以下指令能看见原始指标。

# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 4.9549e-05
go_gc_duration_seconds{quantile="0.25"} 8.1253e-05
go_gc_duration_seconds{quantile="0.5"} 0.000120463
go_gc_duration_seconds{quantile="0.75"} 0.000182489
go_gc_duration_seconds{quantile="1"} 0.000866808
go_gc_duration_seconds_sum 0.004768729
go_gc_duration_seconds_count 28

  ...

指标go_gc_duration_seconds,里面有个标签quantile="0.5",表示这衡量的是第50百分位数,后面的数字是这个指标的值。

5 表达式浏览器

直接通过上面的方式查看指标对用户不太友好,所以可以使用Prometheus的内置表达式浏览器来查看,可访问 http://{ip}:9090/graph 获得。

指标列表自动填充

指标名称筛选

 指标条件筛选

Prometheus在服务器中内置了一种名为PromQL的高度灵活的表达式语言,允许查询和聚合指标。

数据集是PromQL查询语言中的表达式可以返回的四种数据类型之一,该类型称为即时向量:一组包含每个时间序列的单个样本的时间序列集合,其中所有时间序列都共享相同的时间戳。

 6. 聚合时间序列

在上面的查询界面中还可以进行指标的复杂聚合。选择指标go_gc_duration_seconds,查看它的总数。

sum函数进行累加

PromQL 子句by按特定维度聚合 

sum(go_gc_duration_seconds) by (instance)

Rate()函数计算每秒平均增长率

rate(go_gc_duration_seconds_count[1m]) 

这里我们计算1分钟范围向量的速率。 范围向量(range vector)是第二个PromQL数据类型,包含一组时间序列,每个时间序列都包含一系列数据点。范围向量允许我们显示该时间段的时间序列,持续时间被包含在[]中,内容是一个整数值后跟着一个单温,单位缩写为:

  • s 表示秒
  • m 表示分钟
  • h 表示小时
  • d 表示天
  • w 表示周

 rate()函数用来计算一定范围内时间序列的每秒平均增长率,只能与计数器一起使用,最适合用于增长较缓慢的计数器或用于警报的场景。

7. 容量规划

Prometheus的性能很大程度取决于配置、所收集的时间序列数量以及服务器上规则的复杂性,单位时间内采集的数据越多占用的内存就越多,对CPU消耗也大。常规的容量规划关注于两个问题: 内存磁盘

7.1 内存

Prometheus在内存中做了很多工作。每个收集的时间序列、查询和记录规则都会消耗进程内存。关于Prometheus的容量规划没有绝对的标准,经验之谈是将每秒采集的样本数乘以样本的大小

假设每个样本大小2个字节,12小时内每秒收集100000个样本。内存使用情况:

100000*2 bytes*43200 seconds=8.64GB。

Prometheus可以参考以上值,并预留查询和记录规则方面的内存冗余。

另外可以通过检查 process_resident_memory_bytes指标来查看Prometheus进程的内存使用情况。如下所示。

 7.2 磁盘

磁盘使用量受存储的时间序列数量和这些时间序列的保留时间限制。默认情况下,指标会在本地时间序列数据库中存储15天。数据库的位置和保留时间由命令行选项控制。

  • --storage.tsdb.path 选项:它的默认数据目录位于Prometheus的目录中,用于控制时间序列数据库位置。
  • --storage.tsdb.retention选项: 控制时间序列的保留期。默认值为15d。

使用SSD作为时间序列数据库的磁盘,效果更佳(当然成本也更高)。

假设每个样本2个字节,每秒10万个样本,保存15天。

2 byte*100000*(15*24*60*60) s =247GB。

Prometheus可以参考以上值,并预留磁盘上的一些冗余。

 7.3 CPU

cpu尽量关注下Prometheus部署的及其的CPU利用率。

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

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

相关文章

pytorch的whl文件安装

下载.whl文件&#xff0c;离线安装 提示&#xff1a;下载torch的稳定版本网址[https://download.pytorch.org/whl/torch_stable.html](https://download.pytorch.org/whl/torch_stable.html) 首先&#xff0c;查看主机显卡和安装的cuda版本。 可以在命令行输入:nvcc -V 如果…

使用jquery遇到的问题Unresolved function or method $()

今天在使用jquery的时候&#xff0c;发现页面中即使引入了jquery.min.js&#xff0c;js代码中仍然说找不到$()&#xff0c;原来的项目也是用的jquery.min.js&#xff0c;为什么之前的就没有这个问题呢。 然后利用搜索引擎查了一下解决方案&#xff0c;最后还是决定改成未压缩版…

触摸按键控制LED灯亮灭

文章目录 前言一、触摸按键介绍二、触摸按键电路原理模式一&#xff1a;模式二&#xff1a; 三、系统设计1、模块框图2、RTL视图 四、源码1、touch_led模块 五、效果六、总结七、参考资料 前言 环境&#xff1a; 1、Quartus18.1 2、vscode 3、板子型号&#xff1a;原子哥开拓者…

前端熟练发起ajax请求的多种方法

1.原生发起ajax 1.1概念&#xff1a; 说明&#xff1a;XMLHttpRequest是 JavaScript 的内置对象&#xff0c;用于在Web应用程序中向服务器发送HTTP请求和接收响应。通过XMLHttpRequest对象&#xff0c;可以实现异步加载数据&#xff0c;无需刷新整个页面即可更新部分内容。常…

Ubuntu 22.04 LTS RTX 2060 6G 显卡 GPU测试 甜甜圈 geeks3d GpuTest

下载 GpuTest主页地址 GpuTest - Cross-Platform GPU Stress Test and OpenGL Benchmark for Windows, Linux and OS X | Geeks3D.com 下载页 GpuTest download | Geeks3D 下载链接 https://ozone3d.net/gputest/dl/GpuTest_Linux_x64_0.7.0.zip 测试 unzip GpuTest_Li…

【C#】并行编程实战:同步原语(上)

在第4章中讨论了并行编程的潜在问题&#xff0c;其中之一就是同步开销。当将工作分解为多个工作项并由任务处理时&#xff0c;就需要同步每个线程的结果。线程局部存储和分区局部存储&#xff0c;某种程度上可以解决同步问题。但是&#xff0c;当数据共享时&#xff0c;就需要用…

Python实现PSO粒子群优化算法优化XGBoost回归模型(XGBRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 PSO是粒子群优化算法&#xff08;Particle Swarm Optimization&#xff09;的英文缩写&#xff0c;是一…

在线培训系统成为未来自主学习利器

传统教育模式存在的一个重要问题是&#xff0c;学生往往需要跟随教师和课堂的步调前进。这种模式可能会导致一些学生在学习过程中感到压力和挫败&#xff0c;并且不可避免地会出现部分学生落后于其他同学的情况。然而&#xff0c;在线培训系统可以赋予学生更多的自主权&#xf…

Linux系统编程(环境变量编程)

文章目录 前言一、环境变量表二、环境变量读写接口总结 前言 本篇文章我们来讲解环境变量编程&#xff0c;环境变量在Linux中可以说是非常重要的&#xff0c;那么这篇文章将会带大家来学习环境变量的编程。 一、环境变量表 在Linux系统中&#xff0c;环境变量是一种特殊的变…

SQL-每日一题【595.大的国家】

题目 World 表&#xff1a; 如果一个国家满足下述两个条件之一&#xff0c;则认为该国是 大国 &#xff1a; 面积至少为 300 万平方公里&#xff08;即&#xff0c;3000000 km2&#xff09;&#xff0c;或者人口至少为 2500 万&#xff08;即 25000000&#xff09; 编写一个…

kafka第一课-Kafka快速实战以及基本原理详解

一、Kafka介绍 Kafka是一个分布式的发布-订阅消息系统&#xff0c;可以快速地处理高吞吐量的数据流&#xff0c;并将数据实时地分发到多个消费者中。Kafka消息系统由多个broker&#xff08;服务器&#xff09;组成&#xff0c;这些broker可以在多个数据中心之间分布式部署&…

react学习笔记——复习模块

前言&#xff1a;最近开始学习react&#xff0c;之前学习vue没有把笔记整理的特别好&#xff0c;非常后悔&#xff0c;感觉学了等于没学&#xff0c;这次要好好整理啊&#xff01;本次学习参考教程为B站&#xff0c;张天禹老师的react全家桶。 文章目录 类的基本知识创建一个类…

时间序列分类 论文和数据集汇总

时间序列分类 时间序列广泛应用于金融、工业领域、健康、运维、交通领域。 其实异常检测任务也可以看作是一个时间序列分类任务&#xff0c;异常与否两类&#xff0c;或者异常有很多种&#xff0c;则是多分类问题。 时间序列分类的数据是多种的&#xff1a;时间轨迹数据&#x…

Real-time Short Video Recommendation on Mobile Devices 阅读笔记

摘要 用户会实时兴趣转移&#xff0c;为实现在客户端重排&#xff0c;提出一种 context-aware re-ranking 方法&#xff0c;基于 adaptive beam search 1 引言 1.1 之前架构的问题&#xff1a; 1&#xff0c;需解决 real-time feedback 的问题 2&#xff0c;速度问题 1.2…

【Spring Boot】开发环境热部署

开发环境热部署 在实际的项目开发调试过程中会频繁地修改后台类文件&#xff0c;导致需要重新编译、重新启动&#xff0c;整个过程非常麻烦&#xff0c;影响开发效率。下面介绍Spring Boot如何解决这个问题。 1.devtools实现原理 我们在开发调试Spring Boot项目时&#xff0…

Flink 系列三 Flink 实战

目录 ​编辑 前言 1、安装flink环境 2、在idea中创建flink的第一个demo 2.1、执行如下maven命令 2.2、填写groupId、artifactId、version、package 2.3、选择Yes即可生成创建好的工程 3、开发第一个flink程序 3.1、开发一个简单的统计程序 3.2、直接编译得到jar包 4、…

【Java基础】AQS (AbstractQueuedSynchronizer) 抽象队列同步器

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读1.1 CLH锁 二、概览三、使用场景3.1 AQS 对资源的共享方式…

【自我提升】JPA从搭建到CRUD快速入门(IDEA+MAVEN)

写在前面&#xff1a;今天又学习一点新的东西&#xff0c;方面日后查询和巩固学习&#xff0c;下面将学习过程记录下来。 一、创建MAVEN工程 1. 打开IDEA创建一个纯净的maven工程项目 2. 打开pom文件&#xff0c;导入maven坐标 注意&#xff1a;我使用的postgres数据库&#x…

【微服务】搭建项目以及子模块

目录 方法一&#xff1a;搭建远程仓库新建idea 项目创建子模块创建父模块的pom父模块的gitignore文件修改查看远程代码仓库 方法二 方法一&#xff1a; 搭建远程仓库 选择 下载地址 新建idea 项目 复制 项目远程仓库的下载地址 下载完成 创建子模块 导入微服务的必要组件…

Apache Pulsar 分布式部署

1.Pulsar 简介 Pulsar 是一个支持多租户的、高性能的消息中间件&#xff1b;最初是由 Yahoo 研发的开源&#xff0c;分布式pub-sub系统&#xff0c;现在是Apache的一个顶级开源项目 Pulsar 提供了四种订阅类型&#xff0c;它们可以共存在同一个主题上&#xff0c;以订阅名进行区…