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

news2024/12/25 12:58:30

目录

目录

目录

前言

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

添加服务

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

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

相关文章

二维数组的学习

前言 在前面我们学习了一维数组&#xff0c;但是有的问题需要用二位数组来解决。 二维数组常称为矩阵&#xff0c;把二维数组写成行和列的排列形式&#xff0c;可以有助于形象化的理解二维数组的逻辑结构。 一、二维数组的定义 二维数组定义的一般格式&#xff1a; 数据类型 数…

【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】

文章目录: 1. 下拉菜单 2. 文本域3.label标签 4.按钮- button 4.1 reset重置按钮结合form表单区域使用 5.无语义的布局标签 6.字符实体 注册信息综合案例 表单第二节 1. 下拉菜单 标签: select嵌套option,select是下拉菜单整体&#xff0c;option是下拉菜单的每一项。 代码…

自媒体必备,这10个免费素材网站,一定要收藏~

自媒体必备素材库&#xff0c;视频、图片、音效、各种类型BGM&#xff0c;这10个网站都能找到&#xff0c;免费下载可商用&#xff0c;朋友们赶紧收藏一波~ 视频素材 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 菜鸟图库虽然是个设计素材网站&#xff0c;但…

文物预防性保护新高度:守护历史,个性化定制保护方案

一、西安市研究院宣布西安长安曹家堡村发现2823座古代遗迹 深藏于西安长安曹家堡村地下的2823座古代遗迹&#xff0c;在西安文物维护考古研究院的用心调研下&#xff0c;逐渐揭开了神秘面纱。其中&#xff0c;已有1088座陵墓重见天日&#xff0c;出土的文物琳琅满目&#xff0…

如何实现Win系统ssh连接Ubuntu使用vscode远程敲代码

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接…

【.NET Core】深入理解C#中的特殊字符

【.NET Core】深入理解C#中的特殊字符 文章目录 【.NET Core】深入理解C#中的特殊字符一、概述二、$-- 字符串内插2.1 内插字符串的结构2.2 内插原始字符串字面量2.3 特殊字符2.4 内插字符串编译 三、-- 逐字字符串标识符四、“”“--原始字符串文本 一、概述 特殊字符是预定义…

Vite+Electron快速构建一个VUE3桌面应用(一)

一. 简介 首先&#xff0c;介绍下vite和Electron。 Vite是一种新型前端构建工具&#xff0c;能够显著提升前端开发体验。Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入Chromium和Node.js到二进制的 Electron 允许您保持一个 JavaScript 代码代码…

elementui-table组件列表中的tooltip内容过长超出屏幕换行显示

elementui-table组件列表中的tooltip内容过长超出屏幕换行显示 el-table列属性中带的有show-overflow-tooltip&#xff0c;可以设置内容超出列宽度显示为…&#xff0c;并且有tooltip提示&#xff0c;但是内容过多时&#xff0c;提示会超出屏幕&#xff1a; 但是el-table组件…

cad设计绘图 -- AutoCAD 2024 中文

AutoCAD 2024是一款全球领先的CAD软件&#xff0c;广泛应用于建筑、机械、电子等领域。相比其他CAD软件&#xff0c;它具有以下优势&#xff1a;首先&#xff0c;AutoCAD 2024提供了丰富的绘图和设计工具&#xff0c;满足各种工作需求&#xff1b;其次&#xff0c;其界面直观、…

数据结构.队列的顺序表示

一、队列的定义 二、队列的顺序实现 #include<iostream> using namespace std; const int N 10; typedef struct {int data[N];int front,rear; }SqQueue;void Init(SqQueue& Q)//初始化 {Q.front Q.rear0;} 三、入队 bool Push(SqQueue& Q, int x)//入队 {if …

ThinkPhp3.2(qidian)部署文档

宝塔环境部署 申请域名以及域名解析 具体配置&#xff0c;可百度之 在宝塔面板中创建网站 上传代码导入数据配置运行目录 注意&#xff1a;&#xff08;如果版本&#xff1a;thinkphp3.2 &#xff09;配置 运行目录要特别注意&#xff1a;运行目录要选择根目录“/”&#xff…

Java基础数据结构之反射

一.定义 Java的反射机制是在运行状态中的&#xff0c;对于任意一个类都能知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法及属性。既然能拿到&#xff0c;我们就可以修改部分类型信息。这种动态获取信息以及动态调用对象方法的功能…

什么是正向代理?为什么要使用它?

在计算机网络中&#xff0c;代理服务器&#xff08;Proxy Server&#xff09;是一种充当客户端和目标服务器之间的中间人的计算机或应用程序。代理服务器可以用于多种目的&#xff0c;其中之一就是正向代理。 正向代理的定义 正向代理是一种代理服务器配置方式&#xff0c;它…

【网络】:网络基础

网络基础 一.总体概述二.认识Mac地址三.数据跨网络传输 一.总体概述 1.协议是什么 1.从概念上说&#xff1a;为了保证不同厂家生产出来的不同型号的电脑能够互相通信&#xff0c;而制定的标准——协议。 2.从技术上说&#xff1a;简单粗暴的理解——是操作系统里的结构体。 2.…

Flink的SQL开发

概叙 Flink有关FlinkSQL的官网: https://nightlies.apache.org/flink/flink-docs-release-1.13/zh/docs/dev/table/sql/overview/ 阿里云有关FlinkSQL的官网: https://help.aliyun.com/zh/flink/developer-reference/overview-5?spma2c4g.11186623.0.0.3f55bbc6H3LVyo Ta…

Windows系统本地安装Everything搜索神器并结合内网穿透实现远程访问

文章目录 前言1.软件安装完成后&#xff0c;打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前言 要搭建一个在线资料库&#xff0c;我们需要两个软件的支持&#xff0c;分别是cpolar&#xff08;用于搭建内网穿透数据隧道…

金融OCR领域实习日志(一)——OCR技术从0到1全面调研

一、OCR基础 任务要求&#xff1a; 工作原理 OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;是指电子设备&#xff08;例如扫描仪或数码相&#xff09;检查纸上打印的字符&#xff0c;经过检测暗、亮的模式肯定其形状&#xff0c;而后用…

(自用)learnOpenGL学习总结-高级OpenGL-立方体贴图

ok终于来到了立方体贴图了&#xff0c;在这里面我们可以加入好看的天空包围盒&#xff0c;这样的画我们的背景就不再是黑色的了&#xff01; 首先&#xff0c;立方体贴图和前面的sampler2D贴图一样&#xff0c;不过是6个2D组成的立方体而已。 那么为什么要把6个组合在一起呢&…

粒子群优化算法(Particle Swarm Optimization,PSO)求解基于移动边缘计算的任务卸载与资源调度优化(提供MATLAB代码)

一、优化模型介绍 移动边缘计算的任务卸载与资源调度优化原理是通过利用配备计算资源的移动无人机来为本地资源有限的移动用户提供计算卸载机会&#xff0c;以减轻用户设备的计算负担并提高计算性能。具体原理如下&#xff1a; 任务卸载&#xff1a;移动边缘计算系统将用户的计…

嵌入式学习第十三天

9.指针: &#xff08;1&#xff09;const指针 const 关键字 常量(只读) 1.const int *p; 2.int const *p; 1和2是等价的 const修饰 *p,指针变量p的值可以改变,但不能利用指针修改指向空间中的值 3.int *const p; const修饰 p,指针变量p的值不能改变…