Prometheus(普罗米修斯)

news2025/2/26 0:25:25

Prometheus : 入门

  • Prometheus简介
    • Prometheus 的主要特点
    • Prometheus架构:
    • 什么时候用它合适
    • 什么时候用它不合适
    • Prometheus VS InfluxDB
    • 基本概念
      • 数据模型
      • metric types(指标类型)
  • Prometheus 安装部署
    • 二进制安装部署
      • 1、将安装包prometheus-2.6.1.linux-amd64.tar放入opt目录下
      • 2、在/usr/local/目录下新建prometheus
      • 3、解压prometheus-2.6.1.linux-amd64.tar.gz 包
      • 4、将解压prometheus-2.6.1.linux-amd64 移动到安装目录/usr/local/prometheus
      • 5、进入目录/usr/local/prometheus
      • 6、修改配置文件vim prometheus.yml 底部监控本机
      • prometheus.yml中的配置文件含义
      • 7、启动服务
      • 启动选项了解:./prometheus --help
      • 8、测试访问:http://localhost:9090
      • 9、查看暴露指标:http://localhost:9090/metrics
  • Grafana可视化大型测量数据 开源程序
    • Grafana是什么?
    • Grafana 与 Kibana 的区别
    • grafana部署
      • 1、下载安装
      • 2、启动服务
      • 3、访问页面http://localhost:3000 ,默认账号、密码admin/admin
      • 4、Prometheus 和 Grafana 的对接

实验所需安装包百度云盘自提

Prometheus简介

Prometheus 是一个开源的监控系统。支持灵活的查询语言(PromQL),采用 http 协议的 pull 模式拉取数据等特点使 Prometheus 即简单易懂又功能强大。

Prometheus 的主要特点

多维度数据模型

灵活的查询语言

不依赖分布式存储,单个服务器节点是自主的

通过 pull 方式采集时序数据

可以通过中间网关进行时序列数据推送

通过服务发现或者静态配置来发现目标服务对象

支持多种界面展示方案,比如 grafana 等

Prometheus 由 server, client, push gateway, exporter, alertmanager 等核心组件构成。Prometheus server 主要用于抓取和存储数据。Client libraries 可以用来连接 server 并进行查询等操作。Push gateway 用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。不同的 exporter 用于不同场景下的数据收集,如收集主机信息的 node_exporter,收集 MongoDB 信息的 MongoDB exporter 等等。

Prometheus架构:

这张图展示了架构及其生态系统的一些组成部分:
在这里插入图片描述
Prometheus从工具化的作业中获取指标,要么直接获取,要么通过中介推送网关获取短期作业。它在本地存储所有抓取的样本,并对这些数据应用规则将这些数据进行聚合,并记录新的时间序列,或者生成警报。可以用Grafana或其他API来可视化收集的数据。

什么时候用它合适

Prometheus可以很好地记录任何纯数字时间序列。它既适合以机器为中心的监视,也适合高度动态的面向服务的体系结构的监视。在微服务的世界中,它对多维数据收集和查询的支持是一个特别的优势。

Prometheus是为可靠性而设计的,在你的服务宕机的时候,你可以快速诊断问题。每台Prometheus服务器都是独立的,不依赖于网络存储或其他远程服务。

什么时候用它不合适

Prometheus的值的可靠性。你总是可以查看有关系统的统计信息,即使在出现故障的情况下也是如此。如果你需要100%的准确性,例如按请求计费,Prometheus不是一个好的选择,因为收集的数据可能不够详细和完整。在这种情况下,最好使用其他系统来收集和分析用于计费的数据,并使用Prometheus来完成剩下的监视工作。

Prometheus VS InfluxDB

InfluxDB是一个开源的时间序列数据库,具有扩展和集群的商业选项。InfluxDB项目是在Prometheus开发开始将近一年后发布的,所以当时无法考虑将其作为替代方案。尽管如此,Prometheus和fluxdb之间仍然存在显著的差异。二者有许多相似之处。两者都有标签(在InfluxDB中称为tags)来有效地支持多维度度量。它们基本上使用相同的数据压缩算法。两者都具有广泛的集成,包括彼此之间的集成。两者都有挂钩,允许进一步扩展它们,例如在统计工具中分析数据或执行自动化操作。

下列情况,用InfluxDB更好:

如果你正在进行事件日志记录
商业选项为InfluxDB提供集群,这对于长期数据存储也更好
最终实现副本之间数据的一致性

下列情况,用Prometheus更好:

如果你主要做的是度量
如果你需要更强大的查询语言、警报和通知功能
更高的可用性和正常运行时间,用于绘图和报警
InfluxDB由一家遵循开放核心模型的商业公司维护,提供高级特性,如闭源集群、托管和支持。

Prometheus是一个完全开源和独立的项目,由许多公司和个人维护,其中一些还提供商业服务和支持。

基本概念

数据模型

Prometheus基本上将所有数据存储为时间序列:属于同一指标和同一组标记维度的时间戳值流。除了存储时间序列外,Prometheus还可以根据查询结果生成临时派生的时间序列。

(PS:这里对时间序列的解释是这样的,time series: streams of timestamped values belonging to the same metric and the same set of labeled dimensions

(1) Metric names and labels

Every time series is uniquely identified by its metric name and optional key-value pairs called labels.

(每个时间序列都由其指标名称和称为标签的可选键值对唯一标识)

指标名称指定要度量的系统的一般特性(例如,http_requests_total表示接收的HTTP请求的总数)。它可能包含ASCII字母和数字,以及下划线和冒号。它必须匹配正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*

标签名称可以包含ASCII字母、数字和下划线。它们必须匹配正则表达式[a-zA-Z_][a-zA-Z0-9_]*。以__开头的标签名称保留内部使用。

标签值可以包含任何Unicode字符。

(2) Sample-样本

样本构成实际的时间序列数据。每个样本包括:

  • a float64 value
  • a millisecond-precision timestamp

(3) notation-记法

给定一个度量名称和一组标签,时间序列通常使用以下符号标识:

<metric name>{<label name>=<label value>,...}

例如,有这样一个时间序列,指标名称是api_http_requests_total,有两个标签method=“POST"和handler=”/messages",那么这个时间序列可以这样写:

api_http_requests_total{method="POST", handler="/messages"}

metric types(指标类型)

(1)Counter-计数器

计数器是一个累积指标,它表示一个单调递增的计数器,其值只能在重启时递增或重置为零。例如,可以使用计数器来表示已服务的请求数、已完成的任务数或错误数。不要使用计数器来反映一个可能会减小的值。例如,不要使用计数器表示当前正在运行的进程的数量,这种情况下,你应该用gauge。

(2)Gauge-计量器

计量器表示一个可以任意上下移动的数值。

计量器通常用于测量温度或当前内存使用量等,也用于“计数”,比如并发请求的数量。

(3)Histogram直方图、柱状图

直方图对观察结果(通常是请求持续时间或响应大小之类的东西)进行采样,并在可配置的桶中计数。它还提供了所有观测值的和。

直方图用一个基本的指标名暴露在一个抓取期间的多个时间序列:

  • 观察桶的累积计数器,格式为_bucket{le=“”}
  • 所有观测值的总和,格式为_sum
  • 已观察到的事件的计数,格式为_count

(4)Summary-摘要

与柱状图类似,摘要样例观察结果(通常是请求持续时间和响应大小之类的内容)。虽然它还提供了观测值的总数和所有观测值的总和,但它计算了一个滑动时间窗口上的可配置分位数。

Prometheus 安装部署

二进制安装部署

1、将安装包prometheus-2.6.1.linux-amd64.tar放入opt目录下

[root@localhost ~]# cd /opt/
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# ls
prometheus-2.6.1.linux-amd64.tar.gz  rh

在这里插入图片描述

2、在/usr/local/目录下新建prometheus

[root@localhost opt]# mkdir /usr/local/prometheus

在这里插入图片描述

3、解压prometheus-2.6.1.linux-amd64.tar.gz 包

[root@localhost opt]# ls
prometheus-2.6.1.linux-amd64.tar.gz  rh
[root@localhost opt]# tar xvzf prometheus-2.6.1.linux-amd64.tar.gz 

在这里插入图片描述

4、将解压prometheus-2.6.1.linux-amd64 移动到安装目录/usr/local/prometheus

[root@localhost opt]# ls
prometheus-2.6.1.linux-amd64  prometheus-2.6.1.linux-amd64.tar.gz  rh
[root@localhost opt]# mv prometheus-2.6.1.linux-amd64 /usr/local/prometheus

在这里插入图片描述

5、进入目录/usr/local/prometheus

[root@localhost opt]# cd /usr/local/prometheus
[root@localhost prometheus]# ls
prometheus-2.6.1.linux-amd64

在这里插入图片描述

6、修改配置文件vim prometheus.yml 底部监控本机

[root@localhost prometheus-2.6.1.linux-amd64]# ls
console_libraries  consoles  LICENSE  NOTICE  prometheus  prometheus.yml  promtool
[root@localhost prometheus-2.6.1.linux-amd64]# vim prometheus.yml 

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    # 监控本地及端口
    - targets: ['localhost:9090']

在这里插入图片描述

注:Prometheus从目标机上通过http方式拉取采样点数据, 它也可以拉取自身服务数据并监控自身的健康状况。

注:当然Prometheus服务拉取自身服务采样数据,并没有多大的用处,但是它是一个好的DEMO。

prometheus.yml中的配置文件含义

global:
  # 默认情况下,每15s拉取一次目标采样点数据。
  scrape_interval:     15s 
  # 我们可以附加一些指定标签到采样点度量标签列表中, 用于和第三方系统进行通信, 包括:federation, remote storage, Alertmanager
  external_labels:
    # 下面就是拉取自身服务采样点数据配置
    monitor: 'codelab-monitor'
scrape_configs:
  # job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上
  - job_name: 'prometheus'
    # 覆盖global的采样点,拉取时间间隔5s
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

7、启动服务

[root@localhost prometheus-2.6.1.linux-amd64]# ./prometheus --config.file=prometheus.yml

在这里插入图片描述

启动选项了解:./prometheus --help

global:
  # 默认情况下,每15s拉取一次目标采样点数据。
  scrape_interval:     15s 
  # 我们可以附加一些指定标签到采样点度量标签列表中, 用于和第三方系统进行通信, 包括:federation, remote storage, Alertmanager
  external_labels:
    # 下面就是拉取自身服务采样点数据配置
    monitor: 'codelab-monitor'
scrape_configs:
  # job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上
  - job_name: 'prometheus'
    # 覆盖global的采样点,拉取时间间隔5s
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

8、测试访问:http://localhost:9090

在这里插入图片描述

9、查看暴露指标:http://localhost:9090/metrics

在这里插入图片描述

Grafana可视化大型测量数据 开源程序

Grafana是什么?

grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。

Grafana 官方还对 Grafana 的适用场景以及基本特征作了介绍:

grafana最常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。
grafana有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。

这里需要留意的是,上面官方列举的数据源都是时序型数据库。这也透露出 Grafana 的另一大适用性:Grafana 一般是配合时序数据库做数据展示的。

Grafana 与 Kibana 的区别

Kibana 是运维圈耳熟能详的后端数据实时展示工具。日常工作中,大家都用 Kibana 结合Logstash、ElasticSearch 等组件一起使用做日志展示、索引、分析的。但Kibana也可以接入其他数据源的,只不过最常见的用法还是展示日志。

Grafana 最早其实应该是 Kibana3 的一个分支。不同的是,Grafana 拥有自己的权限管理和用户管理系统,而 Kibana 没有权限管理系统。Kibana 和 ES 结合紧密,支持强大的ES语法,比较适合做一些多维度的分析和查询,而Grafana更适合用于展示,图形比Kibana美观很多。

grafana部署

1、下载安装

[root@localhost ~]# cd /opt/
[root@localhost opt]# wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.2.0-1.x86_64.rpm
[root@localhost opt]# ls
grafana-4.2.0-1.x86_64.rpm  prometheus-2.6.1.linux-amd64.tar.gz  rh

在这里插入图片描述

[root@localhost opt]# sudo yum install initscripts fontconfig -y

在这里插入图片描述

[root@localhost opt]# sudo rpm -Uvh grafana-4.2.0-1.x86_64.rpm

警告:grafana-4.2.0-1.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 24098cb6: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:grafana-4.2.0-1                  ################################# [100%]
### NOT starting on installation, please execute the following statements to configure grafana to start automatically using systemd
 sudo /bin/systemctl daemon-reload
 sudo /bin/systemctl enable grafana-server.service
### You can start grafana-server by executing
 sudo /bin/systemctl start grafana-server.service
POSTTRANS: Running script

在这里插入图片描述

2、启动服务

[root@localhost opt]# service grafana-server start
Starting grafana-server (via systemctl):                   [  确定  ]

在这里插入图片描述

3、访问页面http://localhost:3000 ,默认账号、密码admin/admin

在这里插入图片描述
在这里插入图片描述

4、Prometheus 和 Grafana 的对接

官网操作手册文档:https://prometheus.io/docs/visualization/grafana/

点击“添加数据源”
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

stable-diffusion-webui(1.2.1版本) win10系统本地电脑部署

在安装stable-diffusion-webui(1.2.1版本)之前需要确认win10本地电脑具有的环境 1.显卡类型&#xff1a;NVIDIA&#xff08;英伟达&#xff09; 建议显存高于4G以上&#xff0c;这样512*512的还是可以运行的 2.python(版本必须最好是3.10.6&#xff09;和 git最新版 正式…

【MySQL高级篇笔记 (上) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、MySQL的数据目录 小结 二 、用户与权限管理 MySQL8密码管理(了解) 权限管理 授予权限的原则 收回权限 权限表 访问控制(了解) 角色管理 三、逻辑架构 服务器处理客户端请求 MySQL 中的 SQL执行流程 SQL语法顺序…

chatgpt赋能Python-python_numpy画图

Python Numpy画图&#xff1a;快速绘制高质量的数据可视化 Python语言不仅在数据科学和人工智能领域得到广泛应用&#xff0c;还被广泛用于数据可视化方面。NumPy是一个Python的科学计算库&#xff0c;提供了高性能的多维数组对象和广播功能&#xff0c;被广泛应用于数据科学、…

Packet Tracer – VLAN 间路由练习

Packet Tracer – VLAN 间路由练习 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 R1 G0/0 172.17.25.2 255.255.255.252 不适用 G0/1.10 172.17.10.1 255.255.255.0 不适用 G0/1.20 172.17.20.1 255.255.255.0 不适用 G0/1.30 172.17.30.1 255.255.255…

十三、人脸识别

文章目录 1、人脸认证和人脸识别2、One shot学习3、siamese network4、Triplet loss function5、人脸识别和二分类问题THE END 1、人脸认证和人脸识别 \qquad 人脸认证表示输入一幅图片和一个name/ID&#xff0c;输出这个图片和ID是否是同一个人。 \qquad 人脸识别表示数据库中…

OMA通道-3

4 Transport API 传输 API 作为开放移动 API 的一部分&#xff0c;为开放移动设备中可用的 SE 提供通信框架 4.1 概述 传输 API 的作用是为应用程序提供访问设备上可用的 SE 的方法。 提供的访问权限基于 ISO/IEC 7816-4 [ISO 7816-4] 定义的概念&#xff1a; • APDU&#…

WIN提权 烂土豆dll劫持

烂土豆配合令牌劫持提权&#xff08;win2012及以下版本可以尝试&#xff09; 两者配合使用可以直接从web权限提升到system权限 msf反弹后监听 上传文件Potato.exe upload /home/yx/桌面/Potato.exe上传至目标主机目录 烂土豆也很鸡肋 在shell中使用 whoami /priv 查看当…

2023年电工杯报名队伍破万!!!!

截止2023年5月24日凌晨0:56分&#xff0c;刚刚使用账号进行电工杯队伍注册&#xff0c;电工杯报名队伍已经达到10600只队伍&#xff0c;作为本年度上半学年&#xff0c;最后一场大型认可度较高的比赛&#xff0c;本次比赛的时间设置、报名费免费等优势使得&#xff0c;这场比赛…

C++ 图像线特征提取及匹配(LineSegmentMatching)

C++ 线特征提取及匹配【LineSegmentMatching】 1 源码下载2 环境配置2.1 添加预定义设置:2.2.配置项目环境2.1 C/C++ --》常规--》附加包含目录:2.2 链接器-》常规--》附加库目录:2.3 链接器-》常规--》输入:3 编译时踩坑记录4.匹配效果输入两幅图像,分别提取两幅图像中的…

【学习日记2023.5.23】 之 Redis入门未入坑

文章目录 1. Redis入门1.1 Redis简介1.2 Redis下载与安装1.2.1 Redis下载1.2.2 Redis安装 1.3 Redis服务启动与停止1.3.1 服务启动命令1.3.2 客户端连接命令1.3.3 修改Redis配置文件1.3.4 Redis客户端图形工具 2. Redis数据类型2.1 五种常用数据类型介绍2.2 各种数据类型特点 3…

shell sed命令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 sed 命令sed 编辑器sed 的工作流程的三个过程命定格式常用选项常用操作 实验操作打印内容使用地址删除行替换插入 sed 命令 sed 编辑器 sed是一种流编辑器&#x…

什么是 Java 中的数据库连接池?为什么使用连接池来管理数据库连接?

文章目录 1. 数据库连接池的好处1.1 提高性能1.2 连接的重用1.3 连接管理和监控 2. 代码演示2.1 新建maven项目2.2 配置maven地址2.3 配置 Druid 数据源2.4 编写测试代码2.4.1 创建一个 Druid 数据源连接池和获取连接2.4.2 编写测试类2.4.3 新建数据库表2.4.4 运行截图 3. 完整…

进程控制-进程的替换

回顾 对于进程&#xff0c;我们已经有了初步的了解&#xff0c;我们学会了进程的终止&#xff0c;进程的等待&#xff0c;还有如果创建子进程。 这次&#xff0c;我们来学习如何把一个进程运行的代码和数据替换成其他的代码和数据。 进程的替换 为什么要进程替换&#xff0…

Spark大数据处理讲课笔记----Spark任务调度

零、本节学习目标 理解DAG概念了解Stage划分了解RDD在Spark中的运行流程 一、有向无环图 &#xff08;一&#xff09;DAG概念 DAG&#xff08;Directed Acyclic Graph&#xff09;叫做有向无环图&#xff0c;Spark中的RDD通过一系列的转换算子操作和行动算子操作形成了一个…

进程控制--进程的等待

回顾 之前我们已经学习了进程的状态和进程的退出如果你没有这些基础知识&#xff0c;应先去了解进程的相关基础知识。 这次我们主要来学习如何让进程等待子进程的退出。 为什么要等待子进程&#xff1f; 之前我们在学习进程的状态的时候&#xff0c;我们知道了进程有一种状态…

JavaEE——阻塞式队列

文章目录 一、阻塞式队列二、生产者消费者模型1.发送方和接受方之间的 “解耦合”2. “削峰填谷”保证系统稳定性3、代码实现阻塞式队列 一、阻塞式队列 阻塞式队列&#xff0c;顾名思义也是一个队列&#xff0c;这个队列遵循的是先进先出的原则。 这里简单提一个特殊的队列&…

chatgpt赋能Python-python_output用法

Python Output 用法介绍 Python 是一种非常流行的编程语言&#xff0c;其简单而有效的语法和丰富的功能集使其成为了各种应用程序和数据分析项目的首选工具。 Python 在输出方面有非常灵活的方式&#xff0c;本文将介绍 Python Output 的用法。 使用 print 函数输出 Python …

python爬虫之request库的使用(友好版)

以下所有爬取的网站都是可以爬取的&#xff0c;爬取时请先学学法律哦~ 如有侵权&#xff0c;私信删除~ 本章目录~。~ 一&#xff0c;request库简介&#xff1a; 二&#xff0c;requests使用方法 1.GET请求 1.1&#xff0c;发起一个get请求 1.2&#xff0c;利用GET请求发…

三、数据仓库实践-拉链表设计

1 写在开头的话 拉链表&#xff0c;学名叫缓慢变化维&#xff08;Slowly Changing Dimensions&#xff09;&#xff0c;简称渐变维&#xff08;SCD&#xff09;&#xff0c;俗称拉链表&#xff0c;是为了记录关键字段的历史变化而设计出来的一种数据存储模型&#xff0c;常见于…

蓝奏云软件库源码分享下载(后端源码)

正文&#xff1a; FreePlus后台管理系统是一个基于[Thinkphp]的后台管理系统&#xff0c;提供了基本的应用管理、用户管理 、卡密管理 、笔记管理 、邮箱管理 、商城管理 、论坛管理 、附件管理、软件库、工具箱等功能。#### 软件架构thinkphp5.1mysql实现#### 安装教程(php必…