Promethues是什么?

什么是Prometheus?

Prometheus是一个开源的系统监控以及报警系统。整和zabbix的功能,系统,网络,设备。

promethues可以兼容网络、设备、容器监控、告警系统。因为和k8s是一个项目基金开发的产品,天生就匹配k8s的原生系统。容器化和云原生服务适配性很高。

Prometheus是一个服务监控系统和时序数据库,提供了通用的数据模型和快捷的数据采集,存储和接口查询。

核心组件:Prometheus server 定期从静态配置的监控目标或者基于服务发现的自动配置目标中进行拉取数据。拉取到数据会持久化的保存到存储设备之中。

Prometheus会先拉取数据纳入到监控系统当中,才能进行时序数据采集、存储、告警和展示

基于pod部署的Prometheus能够直接把api sever作为服务发现系统使用。可以实现动态监控,动态发现。

Prometheus的特点

  1. 多维的数据模型。根据不同的函数计算方法,对同一数据可以做出不同的结论。prom QL

  2. 时间序列的数据,按照时间的顺序记录系统,设备变化的数据,包括容器化的数据。每一个数据都是一个样本。例如:服务器指标数据、应用程序的性能监控、网络数据等等。

  3. 通过静态,也可以通过 服务自动发现收集数据

  4. Prometheus自带的原生数据展示不是很友好,有专门为他匹配的数据化展示工具。grafana

Prometheus的存储引擎

Prometheus使用的存储引擎是TSDB

TSDB的特点

  1. 能够存储的数据量很庞大

  2. 大部分时间都是写入操作,读不多。只是从获取数据,将数据写入数据库当中。

  3. 写入操作是时序添加。大多数情况下都是按照时间排列

  4. 很少更新数据,采集到的数据在秒级或分钟级之后写入数据库

  5. 基本数据大。一般超过了内存的大小。数据按照一定时间区间展示,缓存在这里不起作用。由于展示实时数据,所以对持久化要求不高。

  6. 读操作,一般都是高并发的操作。

  7. 就是为了大数据、高并发而生的。

Prometheus的组件

Prometheus的服务核心组件采用pull的方式采集监控数据,通过http协议进行传输,存储时间序列的数据,基于告警规则生成告警通知。

1、 Prometheus server是核心,核心分为三个部分:

  1. retrieval 负责在目标主机抓取监控指标数据

  2. Storage 用于存储,把采集的数据保存到磁盘当中。默认只保存15天

  3. promQL 负责把数据按照一定的规则通过指定的语法形成一个结果,最后通过 grafana 展示出来

2、 exports 负责在节点收集数据,通过Node-Exports服务收集服务器节点的状态数据、CPU、内存、网络、磁盘等等。默认端口9100

3、 client Library 客户端库,用于应用程序的内部测量系统。内部测试

4、 cadvisor 用于监控容器内部的资源信息,但是k8s从1.20之后自带这个部分组件

5、 blackbox-exporter 用于监控容器的存活性,一般不用

6、 Altermanager 是独立的告警模块,从Prometheus server 收到告警通知之后,Altermanager进行重组、分类、发送到对应的接收方。例如:电子邮件、钉钉、企业微信

7、 pushgateway 类似于一个中转站,server端只会使用pull的方式拉取数据。节点的数据只能以上传(push)的方式发送,先把数据源保存在pushgateway,Prometheus server同一从pushgateway拉取数据

8、 grafana 图形化工具

Prometheus的工作流程

  1. Prometheus server为核心,收集和存储数据(时间序列数据),从监控目标中通过pull的方式拉取数据,或者通过pushgateway把采集到的数据,拉取到server当中。

  2. 拉渠道的数据,将监控指标数据保存到本地磁盘当中。

  3. 如果监控的指标数据触发了告警,发送到altermanager

  4. 通过Prometheus自带的uiweb界面,通过promql可以查询到监控用户数据

  5. grafana可以介入Prometheus的数据源。把监控数据以图形化的方式展示出来

Prometheus的局限性以及和zabbix的对比

Prometheus的局限性

  1. Prometheus只是一款指标监控系统,不适合存储时间,也不适合保存日志。更多的是一种趋势性的监控和展示。并非是一个精准的数据。

  2. Prometheus认为只有最近的数据才有查询的需要,保存在本地的数据默认只有15天,不支持大量的历史数据进行存储,也不支持查询过往的历史数据。基于远端存储,上传到influxDB或者是openTSDB系统

  3. 集群化成都不高,一般都是单节点部署

Prometheus和zabbix的区别

zabbix:

  1. zabbix是大而全的系统,而且功能非常完善,机制非常成熟。

  2. 具有完善的web页面,可视化和告警。在页面上可以满足绝大部分的操作。

  3. 上手难度比较低,可以快速掌握

  4. 由于集成度太高,定制化比较困难。而且扩展性也比较差。

Prometheus:

  1. Prometheus是近几年比较火的监控系统,基于go语言开发。只是专注于监控的功能,提供一个简单的ui界面供用户查询

  2. grafana提供可视化。Altermanager提供告警。通过第三方程序实现

  3. 比较小巧灵活。但是门槛较高,上手比较难

zabbix和Prometheus功能比较

zabibx指标收集方式:

  1. 通过server和agent收集

  2. agent部署在目标服务器,数据推送到server,基于tcp进行通信

  3. agent把数据推送到server,或者是server主动发送请求获取agent的数据

Prometheus指标收集方式:

  1. Prometheus也是基于客户端进行数据收集,server端定时与客户端交互,通过pull的方式获取监控数据。

数据存储

zabbix使用外部的数据来保存数据

Prometheus存储在内置的TSDB当中,时间序列数据库中

查询性能

zabbix的查询性能较弱,只能在web界面做一些有限的操作

Prometheus查询功能强大。Prometheus自带查询语句,查询结果都是以图形或表格数据展示。

zabbix更成熟,上手难度低,对于传统的服务器、系统和网络都有优秀的监控能力,zabbix不适配云原生,不适配容器监控。

Prometheus就是容器化的监控,支持k8s的监控功能,promQL上手难度高。

二进制部署Prometheus

master01  20.0.0.32
node01  20.0.0.34
node02  20.0.0.35

master01
tar -xf prometheus-2.45.0.linux-amd64.tar.gz
mv prometheus-2.45.0.linux-amd64 prometheus
cd prometheus
cat prometheus.yaml | grep -v "^#"
#查看他的配置文件
scrape_interval: 15s
#采集数据的间隔时间,默认是1分钟
evaluation_interval: 15s
#告警的间隔时间,默认1分钟
scrape_timeout: 10s
#数据采集的超时时间,默认10s
alerting
#告警的实例配置

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

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
#配置告警的规则
scrape_configs
#参数时序数据的源,配置采集的主机,静态或动态。
- job_name: "prometheus"
#每一个监控实例都是以- job_name:的形式来表示整体的集合
metrics_path defaults to '/metrics'
#指标数据采集的默认路径
static_configs:
#静态配置发现实例(目标节点服务器)

vim /usr/lib/systemd/system/prometheus.service
#添加到系统服务中

[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/usr/local/prometheus/data/ \
--storage.tsdb.retention=15d \
--web.enable-lifecycle
  
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl restart prometheus.service
systemctl status prometheus.service
默认端口号9090


配置节点监控:
tar -xf node_exporter-1.5.0.linux-amd64.tar.gz

mv node_exporter-1.5.0.linux-amd64/node_exporter /usr/local/bin/

vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter \
--collector.ntp \
--collector.mountstats \
--collector.systemd \
--collector.tcpstat
 
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

systemctl start node_exporter
systemctl enable node_exporter
netstat -natp | grep :9100

vim /usr/local/prometheus/prometheus.yml
#在末尾添加
  - job_name: nodes
    metrics_path: "/metrics"
    static_configs:
    - targets:
          - 20.0.0.32:9100
          - 20.0.0.34:9100
          - 20.0.0.35:9100
      labels:
        service: kubernetes

systemctl reload prometheus

进入页面查看
http://20.0.0.32:9090

node01和node02都添加ndoe节点监控

tar -xf node_exporter-1.5.0.linux-amd64.tar.gz

mv node_exporter-1.5.0.linux-amd64/node_exporter /usr/local/bin/

vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter \
--collector.ntp \
--collector.mountstats \
--collector.systemd \
--collector.tcpstat
 
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

systemctl start node_exporter
systemctl enable node_exporter
netstat -natp | grep :9100

到页面查看两个节点状态是否正常

在moster01安装grafana

rpm -ivh grafana-enterprise-7.5.11-1.x86_64.rpm
systemctl start grafana-server.service
systemctl enable grafana-server.service
systemctl status grafana-server.service

页面登录测试
20.0.0.32:3000

开始和Prometheus匹配

 开始添加k8s集群

导入模板即可11074、15172

https://grafana.com/grafana/dashboards 
#模板网站

总结

prometheus:就是一个监控。时序数列的图形化监控工具,不在意数据的持久化,只关注最近需要查找的数据。

更适配k8s集群。也可以对服务器进行一般监控(内存、cpu、硬盘、网络)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

离线安装nginx_银河麒麟系统_nginx报错_503_500 Internal Server Error----nginx工作笔记007

如果报这个错误,意思就是,对于nginx.conf文件中指定的,文件夹没有权限 那么这个是去给对应的文件夹赋权限: chmod 777 /opt/module/test_web 就可以了,然后再去访问就不会报错了,还有 503的错误都可以这样解决 然后关于离线安装nginx,尝试了一下如果把之前安装过的nginx,直接…

AI-数学-高中-10-2-分数指数幂计算

原作者视频:初等函数】2分数指数幂的计算(基础)_哔哩哔哩_bilibili 方法1: 方法2:

Matlab绘图技巧-NAN元素绘图出现锯齿状解决办法

Matlab绘图技巧-NAN元素绘图出现锯齿状解决办法 想必有很多同学遇到绘制3维曲面热力图,有一些数据是nan,绘制出来的图会出现锯齿状:如下图:    如果用matlab直接绘制带nan的矩阵的话,则会像上图一样,当然…

【教程】iOS 手机抓包工具介绍及教程

📱 最近又发现APP Store一款宝藏软件,克魔助手抓包工具,app刚上架,功能不断迭代中,目前18软妹币实惠价可享受终身版!现在是下手的最好时机。 引言 移动端开发中,抓包工具已成为必备的工具之一…

电脑文件夹怎么加密保护?文件夹加密软件推荐

电脑文件夹可以帮助我们管理各种文件,而文件夹加密则可以有效地保护数据安全。那么,电脑文件夹该怎么加密保护呢?下面我们就一起来了解一下。 超大文件夹加密 电脑中会有一些存放着视频、图纸等大文件的文件夹。这些文件夹体积庞大&#xff…

面试官:Mysql中EXISTS与IN的使用有哪些差异

在数据库查询优化中,查询效率直接关系到应用程序性能。其中,IN和EXISTS是两种常见的子查询操作符,广泛应用于SQL查询语句,但它们在执行效率上有所不同。 本文深入探讨IN和EXISTS的工作原理,以及在何种情境下选择更为合…

QGIS使用地理配准将3857坐标系转成上海城建坐标

控制点格式 如 mapX mapY sourceX sourceY enable dX dY residual -58653 70641 13452659.39 3746386.025 1 0 0 0 -58653 65641 13452693.09 3740477.283 1 0 0 0 ......保存为.points格式 图层预处理 图层投影为3857坐标系 地理配准 1. 打开图层-地理配准 工具 2. 导入…

ATAC-seq发篇测序文章就结束了吗?看如何利用ATAC-seq数据为后续关键基因的转录调控研究提供重要依据

染色质可及性(Chromatin Accessibility)是染色质的一种特性,为转录因子结合靶基因提供了空间。转座酶可及染色质测序分析(ATAC-seq)是常见的研究染色质可及性的方法,ATAC-seq联合RNA-seq是一种新的研究思路…

day10 Javaweb

第一章 WEB概述 1.1 JAVAWEB简介 用Java技术来解决相关web互联网领域的技术栈.使用JAVAEE技术体系开发企业级互联网项目. 项目规模和架构模式与JAVASE阶段有着很大的差别. 在互联网项目下,首先需要明白客户端和服务器的概念 客户端 :与用户进行交互,用于接收用户的…

解决ubuntu 在VMware Workstation Pro下显示不完整的问题

步骤一 ctrlaltT 打开终端,输入: xrandr -s 1920x1080如果报错就输入xrandr,从里面选择适合的分辨率 注意是字母x不是乘号 步骤二 按win键,在搜索框搜索resolution更改显示器分辨率: 选择与电脑相同的分辨率,点击…

(二十一)Flask之上下文管理第二篇(细细扣一遍源码)

每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥本文已收录于Flask框架从入门到实战专栏:《Flask框架从入…

【MISRA C 2012】Rule 5.6 类型定义名称应该是唯一的标识符

1. 规则1.1 原文1.2 分类 2. 关键描述3. Example4. 代码实例 1. 规则 1.1 原文 1.2 分类 规则5.6:类型定义名称应该是唯一的标识符 Required要求类规范。 2. 关键描述 typedef名称在所有名称空间和翻译单元中应该是唯一的。只有当类型定义在头文件中并且该头文件…

HiveSQL题——窗口函数(lag/lead)

目录 一、窗口函数的知识点 1.1 窗户函数的定义 1.2 窗户函数的语法 1.3 前后函数:lag/lead 二、实际案例 2.1 股票的波峰波谷 0 问题描述 1 数据准备 2 数据分析 3 小结 2.2 前后列转换(面试题) 0 问题描述 1 数据准备 2 数据分析 3 小结…

【C语言】linux内核ipoib模块 - ipoib_netdev_ops_pf结构

一、ipoib_netdev_ops_pf结构 static const struct net_device_ops ipoib_netdev_ops_pf {.ndo_init ipoib_ndo_init,.ndo_uninit ipoib_ndo_uninit,.ndo_open ipoib_open,.ndo_stop ipoib_stop,.ndo_change_mtu ipoib_change_mtu,.ndo_…

将word中插入的zotero文献转为latex引用样式

在word中,可以使用zotero插件插入和管理参考文献。 例如: 若需要将这段内容移植到latex,就需要将对应的引用编号用\cite{}替换。手动替换非常麻烦且容易出错。要实现自动转换,可在zotero中定制一种新的引文格式,自动将…

【大数据】Flink 架构(六):保存点 Savepoint

《Flink 架构》系列(已完结),共包含以下 6 篇文章: Flink 架构(一):系统架构Flink 架构(二):数据传输Flink 架构(三):事件…

云上高可用系统-韧性设计模式

一、走近韧性设计模式 (一)基本概念 韧性设计模式是一系列在软件工程中用于提高系统韧性的设计原则、策略、实践和模式。韧性(Resilience)在这里指的是系统对于各种故障、异常和压力的抵抗能力,以及在遭受这些挑战后…

重生奇迹MU弓箭手技能搭配

重生奇迹mu弓箭手技能怎么选择和搭配呢?重生奇迹mu弓箭手是一个远程射手定位的英雄,下面为大家带来重生奇迹mu弓箭手技能选择攻略。 首先,从人物属性上看,弓箭手属于敏捷型高攻单位。在重生奇迹mu中敏捷属性带来的收益在于高质量…

Mac下查看、配置和使用环境变量

Mac下查看、配置和使用环境变量 一:Mac怎么查看环境变量命令 printenv一:这个命令会一次性列出所有环境变量的键值对,输出格式为: VAR1value1 VAR2value2 ...二: 也可以通过给这个命令加上环境变量名参数&#xff0…

循环购模式——解决用户复购难 用户粘性差!

随着电商市场的竞争加剧,消费者需求日益多样化,电商企业需要不断创新以满足市场需求。循环购模式作为一种新兴的消费模式,正逐渐受到消费者的青睐,成为电商行业的新热点。本文将深入剖析循环购模式的魅力,探索其在电商…