Prometheus 监控系统的初步了解与系统搭建

目录

目录

目录

前言

Prometheus的相关知识

Prometheus特点

Prometheus的存储引擎:TSDB

Prometheus的组件

1.核心组件:prometheus server

Prometheus server又分为三个部分:

2.exports

3.client Library

4.cadvisor

5.blackbox-exporter

6.Altermanager:

7.pushgateway:

8.grafana

Prometheus

Promethues的局限性,以及和zabbix的对比

二者之间功能的比较:

数据存储

查询性能:

总结而言:

Prometheus的部署和搭建

(1)上传 prometheus-2.35.0.linux-amd64.tar.gz,并解压

(2) 将Prometheus加入到系统服务 

(3)进行界面访问

部署 Exporters ,添加监控主机

部署 Node Exporter 监控系统级指标(对每一个node节点)

(1)上传 node_exporter-1.3.1.linux-amd64.tar.gz 进行解压

(2)将 node_exporter添加到系统服务中

 (3)修改 prometheus 配置文件,加入到 prometheus 监控中

安装grafana---可视化工具

添加服务


前言

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

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

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

核心组件: Prometheus server定期从静态配置的监控目标或者基于服务发现的自动配置目标中进行拉取数据。

拉取到数据会持久化的保存到存储设备之中。

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

Prometheus的相关知识

Prometheus特点

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

2.时间序列的数据,按照时间的顺序记录系统,设备变化的数据,容器化的数据。每个数据都是一个样本。

服务器指标数据,应用程序的性能监控,网络数据都是时间序列数据

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

4.Prometheus自带的原生数据展示不是很友好,数据化展示工具,grafana

Prometheus的存储引擎:TSDB

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

2.大部分都是写入操作

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

4.很少更新数据,采集到的数据在秒级或者分钟级,就会被写入数据库

5.基本数据大,一般超过了内存的大小。数据按照一定的时间区间展示,缓存在这里不起作用。

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

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

他是一个实时,动态的数据

Prometheus的组件

1.核心组件:prometheus server

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

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统一从pushgatewayy拉取数据

8.grafana

图形化工具

Prometheus

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

2.拉取到的数据保存到本地的磁盘当中。(监控指标数据)

3.如果监控的指标数据触发了告警,发送到altermanager模块,然后根据规则发送告警信息。

4.通过promethues的自带uiweb界面,通过promql可以查询出监控数据

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

Promethues的局限性,以及和zabbix的对比

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

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

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

zabbix:大而全的系统,而且功能非常完善,机制非常成熟。具有完善的web页面,可视化和告警,在zabbix可以完成绝大部分的操作。上手的难度也很低,可以快速掌握。集成度太高,定制化比较难,扩展比较差。

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

可视化------grafana告警------Altermanager,第三方程序来实现,比较小巧和灵活,但是门槛高。

二者之间功能的比较:

zabbix指标收集方式:server和agent,agent部署在目标服务器,数据传送到server,基于tcp进行通信。

agent把数据推送到server,或者server主动发起请求,获取agent的数据。

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

数据存储

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

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

查询性能:

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

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

总结而言:

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

Prometheus就是容器化监控。支持k8s的监控功能。但是难,不好学

Prometheus的部署和搭建

(1)上传 prometheus-2.35.0.linux-amd64.tar.gz,并解压
cd /opt/prometheus
tar xf prometheus-2.35.0.linux-amd64.tar.gz
mv prometheus-2.35.0.linux-amd64 /usr/local/prometheus
 
cat /usr/local/prometheus/prometheus.yml | grep -v "^#"
global:					#用于prometheus的全局配置,比如采集间隔,抓取超时时间等
  scrape_interval: 15s			#采集目标主机监控数据的时间间隔,默认为1m
  evaluation_interval: 15s 		#触发告警生成alter的时间间隔,默认是1m
  # scrape_timeout is set to the global default (10s).
  scrape_timeout: 10s			#数据采集超时时间,默认10s
 
altering:				#用于altermanager实例的配置,支持静态配置和动态服务发现的机制
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093
 
rule_files:				#用于加载告警规则相关的文件路径的配置,可以使用文件名通配机制
  # - "first_rules.yml"
  # - "second_rules.yml"
 
scrape_configs:			#用于采集时序数据源的配置
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"		#每个被监控实例的集合用job_name命名,支持静态配置(static_configs)和动态服务发现的机制(*_sd_configs)
 
    # metrics_path defaults to '/metrics'
    metrics_path: '/metrics'    #指标数据采集路径,默认为 /metrics
    # scheme defaults to 'http'.
 
    static_configs:				#静态目标配置,固定从某个target拉取数据
      - targets: ["localhost:9090"]
(2) 将Prometheus加入到系统服务 
cat > /usr/lib/systemd/system/prometheus.service <<'EOF'
[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 start prometheus
systemctl enable prometheus
 
netstat -natp | grep :9090

(3)进行界面访问

浏览器搜索 ip:9090

部署 Exporters ,添加监控主机

部署 Node Exporter 监控系统级指标(对每一个node节点)

(1)上传 node_exporter-1.3.1.linux-amd64.tar.gz 进行解压

(2)将 node_exporter添加到系统服务中
cat > /usr/lib/systemd/system/node_exporter.service <<'EOF'
[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
EOF
 
(3)启动 
systemctl start node_exporter
systemctl enable node_exporter
 
netstat -natp | grep :9100
 

 (3)修改 prometheus 配置文件,加入到 prometheus 监控中
vim /usr/local/prometheus/prometheus.yml
#在尾部增加如下内容
  - job_name: nodes
    metrics_path: "/metrics"
    static_configs:
    - targets:
	  - 20.0.0.61:9100
	  - 20.0.0.62:9100
	  - 20.0.0.63:9100
      labels:
        service: kubernetes
		
(5)重新载入配置
curl -X POST http://20.0.0.61:9090/-/reload    或    systemctl reload prometheus
浏览器查看 Prometheus 页面的 Status -> Targets

安装grafana---可视化工具

下载地址:https://grafana.com/grafana/download
          https://mirrors.bfsu.edu.cn/grafana/yum/rpm/
 
yum install -y grafana-7.4.0-1.x86_64.rpm
 
systemctl start grafana-server
systemctl enable grafana-server
 
netstat -natp | grep :3000
 
浏览器访问:http://20.0.0.61:3000 ,默认账号和密码为 admin/admin

添加服务

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

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

相关文章

Java毕业设计-基于jsp+servlet的人事管理系统-第79期

获取源码资料&#xff0c;请移步从戎源码网&#xff1a;从戎源码网_专业的计算机毕业设计网站 项目介绍 基于jspservlet的人事管理系统&#xff1a;有配套报告文档&#xff0c;前端 jsp、jquery&#xff0c;后端 servlet、jdbc&#xff0c;集成员工档案管理、公告浏览、请假信…

H5项目使用@microsoft/fetch-event-source

前言&#xff1a; 在microsoft/fetch-event-source 文档中&#xff0c;没有介绍在项目中使用script 引入&#xff0c;只介绍了通过npm 引入的方式&#xff1b;项目的接口又是 post 方式的流式接口。 解决方式&#xff1a; 借助 webpack 工具 实现步骤&#xff1a; 1、初始化…

vue预览pdf文件的几种方法

文章目录 vue预览pdf集中方法方法一&#xff1a;方法二&#xff1a;展示效果&#xff1a;需要包依赖&#xff1a;代码&#xff1a; 方法三&#xff1a;展示效果&#xff1a;需要包依赖&#xff1a;代码&#xff1a;自己调参数&#xff0c;选择符合自己的 vue预览pdf集中方法 我…

方差与协方差之间的区别?

方差和协方差都是用来衡量随机变量之间关系的统计量&#xff0c;但它们的计算方式和含义有所不同。 方差&#xff08;Variance&#xff09;&#xff1a;方差是描述数据集合离散程度的统计量&#xff0c;它衡量了数据点与均值之间的平均距离。 方差越大&#xff0c;表示数据点越…

【AI大模型应用开发】1.3 Prompt攻防(安全) 和 Prompt逆向工程

随着GPT和Prompt工程的大火&#xff0c;随之而来的是隐私问题和安全问题。尤其是最近GPTs刚刚开放&#xff0c;藏在GPTs后面的提示词就被网友们扒了出来&#xff0c;甚至直接被人作为开源项目发布&#xff0c;一点安全和隐私都没有&#xff0c;原作者的收益也必然受到极大损失……

图灵日记之java奇妙历险记--抽象类和接口

目录 抽象类概念抽象类语法 接口概念规则使用特性实现多个接口接口的继承接口使用实例Clonable接口和深拷贝抽象类和接口的区别 Object类 抽象类 概念 在面向对象的概念中,所有对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够…

Axios使用方法详解,从入门到进阶

目录 &#x1f333; Axios的诞生 &#x1f333; Axios的介绍 定义 原理 特性 浏览器支持情况 如何安装 &#x1f333; Axios的使用 ◼️ 创建vue项目 ◼️ Axios的基础用法&#xff08;get、post、put 等请求方法&#xff09; get方法 post方法 put和patch方法 …

Jenkins打包、发布、部署

目录 前言 一、安装jdk 二、安装maven 三、安装git 四、安装jenkins 五、访问jenkins 六、创建用户 七、配置jenkins 八、执行 总结 前言 服务器&#xff1a;CentOS 7.9 64位 jdk&#xff1a;1.8 maven&#xff1a;3.9.1 git&#xff1a;git version 1.8.3.1 jenkins&a…

C++中的智能指针

目录 背景 裸指针 智能指针 原理 智能指针 auto_ptr unique_ptr 1. unique_ptr禁止拷贝构造(copy constructor)和赋值运算() 1.1 C提供了标准库函数move() 1.2.如果unique_ptr是一个临时右值 2. unique_ptr可用于数组 shared_ptr 环状引用问题 weak_ptr 注意&#xf…

CRM管理系统有哪些应用价值?

如何杜绝员工飞单、走私单&#xff1f; 如何避免员工离职带走客户&#xff1f; ——crm管理系统 企业要想取得成功&#xff0c;有强大的技术支持和合适的工具辅助&#xff0c;crm管理系统这类工具就是客户管理系统&#xff0c;它是一种先进的管理模式&#xff0c;crm管理系统通…

浅析透明图片显示

1、理解图片构成 上面是一个飞机的透明图片&#xff0c;每个图片都是有一个个像素点构成的&#xff0c;每个像素点都是一个颜色&#xff0c;在内存中占4个字节&#xff0c;由透明度、红、绿、蓝构成。如下图&#xff1a; 该飞机图片飞机图片长51像素&#xff0c;宽63像素。就是…

苹果m1、m2安装blender GIS,解决not Imageio 报错

blender-GIS 能够在地图上生成地形&#xff0c;如下图所示&#xff1a; 使用blenderGIS过程中会有 imageio 找不到的情况&#xff0c; 网上的 imageio 用在苹果电脑的M1、M2芯片上好像还是没有出图&#xff0c;似乎这个 imageio 这个已经是好几年前的代码&#xff0c;没能适配…

Sphinx的原理详解和使用

一、Sphinx介绍 1.1 简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持&#xff0c;也…

Vue3 + Express 实现大文件分片上传、断点续传、秒传

目录 前言原理实现项目搭建获取文件文件分片hash计算文件上传文件合并秒传&断点续传 完整代码 前言 在日常开发中&#xff0c;文件上传是常见的操作之一。文件上传技术使得用户可以方便地将本地文件上传到Web服务器上&#xff0c;这在许多场景下都是必需的&#xff0c;比如…

比特币ETF通过为BiFinance带来全新机遇

2013年7月&#xff0c;Winklevoss兄弟提交了首个比特币交易所交易基金&#xff08;ETF&#xff09;申请&#xff0c;随后多家公司纷纷效仿&#xff0c;但美国证券交易委员会&#xff08;SEC&#xff09;均以“容易受到市场操纵”为由驳回了这些申请。时至2024年伊始&#xff0c…

TCP_拥塞控制

引言 24年春节马上就要到了&#xff0c;作为开车党&#xff0c;最大的期盼就是顺利回家过年不要堵车。梦想是美好的&#xff0c;但现实是骨感的&#xff0c;拥堵的道路让人苦不堪言。 在网络世界中&#xff0c;类似于堵车的问题也存在&#xff0c;而TCP&#xff08;Transmissi…

环形链表找入环点----链表OJ---三指针

https://leetcode.cn/problems/linked-list-cycle-ii/description/?envTypestudy-plan-v2&envIdtop-100-liked 首先&#xff0c;需要判断是否有环&#xff0c;而这里我们不单纯判断是否有环&#xff0c;还要为下一步做准备&#xff0c;需要让slow指针和fast都从头结点开始…

【数据结构1-1】线性表

线性表是最简单、最基本的一种数据结构&#xff0c;线性表示多个具有相同类型数据“串在一起”&#xff0c;每个元素有前驱&#xff08;前一个元素&#xff09;和后继&#xff08;后一个元素&#xff09;。根据不同的特性&#xff0c;线性表也分为数组&#xff08;vector&#…

MySQL 学习记录

基本常识 row-size-limitsblob&#xff1a; BLOB and TEXT columns cannot have DEFAULT values.Instances of BLOB or TEXT columns in the result of a query that is processed using a temporary table causes the server to use a table on disk rather than in memory b…

C++11——新的类功能与可变参数模板

系列文章目录 文章目录 系列文章目录一、新的类功能默认成员函数类成员变量初始化强制生成默认函数的关键字default禁止生成默认函数的关键字delete继承和多态中的final与override关键字 二、可变参数模板递归函数方式展开参数包逗号表达式展开参数包STL容器中的empalce_back与…