当前位置: 首页 > news >正文

Prometheus环境搭建和认识

Prometheus 环境搭建

1.prometheus 简介

Prometheus是基于go语言开发的一套开源的监控、报警和时间序列数据库的组合,是由SoundCloud公司开发的开源监控系统,Prometheus于2016年加入CNCF(Cloud Native Computing Foundation,云原生计算基金会),2018年8月9日prometheus成为CNCF继kubernetes 之后毕业的第二个项目,prometheus在容器和微服务领域中得到了广泛的应用,其特点主要如下:

使用key-value的多维度(多个角度,多个层面,多个方面)格式保存数据
数据不使用MySQL这样的传统数据库,而是使用时序数据库,目前是使用的TSDB
支持第三方dashboard实现更绚丽的图形界面,如grafana(Grafana 2.5.0版本及以上)
组件模块化
不需要依赖存储,数据可以本地保存也可以远程保存
平均每个采样点仅占3.5 bytes,且一个Prometheus server可以处理数百万级别的的metrics指标数据。
支持服务自动化发现(基于consul等方式动态发现被监控的目标服务)
强大的数据查询语句功(PromQL,Prometheus Query Language)
数据可以直接进行算术运算
易于横向伸缩
众多官方和第三方的exporter(“数据”导出器)实现不同的指标数据收集

1.1 为什么使用Prometheus

​ 容器监控的实现方对比虚拟机或者物理机来说比大的区别,比如容器在k8s环境中可以任意横向扩容与缩容,那么就需要监控服务能够自动对新创建的容器进行监控,当容器删除后又能够及时的从监控服务中删除,而传统的zabbix的监控方式需要在每一个容器中安装启动agent,并且在容器自动发现注册及模板关联方面并没有比较好的实现方式。

1.2 Prometheus 架构图

prometheus server:主服务,接受外部http请求,收集、存储与查询数据等
prometheus targets: 静态收集的目标服务数据
service discovery:动态发现服务
prometheus alerting:报警通知
push gateway:数据收集代理服务器(类似于zabbix proxy)
data visualization and export: 数据可视化与数据导出(访问客户端)

2. 部署Prometheus

2.1 docker-compose 部署

# 创建prometheus目录
mkdir prometheus && chmod 777 prometheus
# 创建数据挂载目录
cd prometheus && mkdir grafana_data prometheus_data && chmod 777 grafana_data prometheus_data
version: "3.7"
services:node-exporter:image: prom/node-exporter:latestcontainer_name: "node-exporter"ports:- "9100:9100"restart: alwaysprometheus:image: prom/prometheus:latestcontainer_name: "prometheus"restart: alwaysports:- "9090:9090"volumes:- "./prometheus.yml:/etc/prometheus/prometheus.yml"- "./prometheus_data:/prometheus"grafana:image: grafana/grafana:7.3.6container_name: "grafana"ports:- "3000:3000"restart: alwaysvolumes:- "./grafana_data:/var/lib/grafana"

创建prometheus.yml

root@promethues(192.168.1.20)/data/prometheus>ls
docker-compose.yml  grafana_data  prometheus_data  prometheus.yml
root@promethues(192.168.1.20)/data/prometheus>cat prometheus.yml 
global:scrape_interval:     15s external_labels:monitor: 'codelab-monitor'
scrape_configs:- job_name: 'node-exporter' scrape_interval: 5smetrics_path: /metrics  static_configs:- targets: ['192.168.1.10:9100','192.168.1.11:9100'] root@promethues(192.168.1.20)/data/prometheus>

2.2 运行docker-compsoe

root@promethues(192.168.1.20)/data/prometheus>docker-compose up -d
[+] Running 3/0✔ Container node-exporter  Running                                                                                                                                     0.0s ✔ Container grafana        Running                                                                                                                                     0.0s ✔ Container prometheus     Running                                                                                                                                     0.0s 
root@promethues(192.168.1.20)/data/prometheus>

2.3 部署node_exporter

安装 Node Exporter 用于收集各 node 主机节点上的监控指标数据,监听端口为9100

二进制安装最为方便,要是部署在docker里也很方便,前提是安装docker

所以在node节点我采用的是二进制安装,并整理成脚本,一键安装

root@k8s-master(192.168.1.10)~/node_export>ls
install.sh  node_exporter.service*  node_exporter.tar.gz
root@k8s-master(192.168.1.10)~/node_export>netstat -tnlp |grep 9100
tcp6       0      0 :::9100                 :::*                    LISTEN      972/node_exporter   
root@k8s-master(192.168.1.10)~/node_export>
#安装链接
链接:https://pan.baidu.com/s/1wLVWxOhhEUz0q8vekH4e5g?pwd=7rp8 
提取码:7rp8 

2.4 grafana插件管理

#在线安装 进入容器
bash-5.0$ grafana-cli plugins  list-remote     # 查看插件目录bash-5.0$ grafana-cli plugins install grafana-piechart-panel   # 安装饼图插件
installing grafana-piechart-panel @ 1.6.4
from: https://grafana.com/api/plugins/grafana-piechart-panel/versions/1.6.4/download
into: /var/lib/grafana/plugins✔ Installed grafana-piechart-panel successfully Restart grafana after installing plugins . <service grafana-server restart>bash-5.0$ 
# 离线安装
# 饼图插件未安装,需要提前安装
https://grafana.com/grafana/plugins/grafana-piechart-panel
#将下载下来的挂载到/var/lib/grafana/plugins目录中就行
# unzip grafana-piechart-panel-v1.3.8-0-g4f34110.zip
# mv grafana-piechart-panel-4f34110 grafana-piechart-panel
root@promethues(192.168.1.20)/data/prometheus/grafana_data/plugins>pwd
/data/prometheus/grafana_data/plugins

3. 访问web界面

在这里插入图片描述

3.1 dashboard 菜单说明

#一级目录解析
Alerts  #Prometheus的告警信息菜单
Graph  #Prometheus的图形展示界面,这是prometheus默认访问的界面
Status  #Prometheus的状态数据界面
Help   #Prometheus的帮助信息界面
#Status子菜单,在Status菜单下存在很多的子选项,其名称和功能效果如下:
Runtime & Build Information 服务主机的运行状态信息及内部的监控项基本信息
Command-Line Flags 启动时候从配置文件中加载的属性信息
Configuration 配置文件的具体内容(yaml格式)
Rules 查询、告警、可视化等数据分析动作的规则记录
Targets 监控的目标对象,包括主机、服务等以endpoint形式存在
Service Discovery 自动发现的各种Targets对象列表

在这里插入图片描述

3.2 验证node exporter web界面

在这里插入图片描述

在这里插入图片描述

3.3 grafana图形化界面

在这里插入图片描述

登录用户和密码都为admin

登录成功后会立即修改密码

4. Exporters

4.1 Node Exporter 的指标

  • 常用的各指标
    • node_cpu_seconds_total
    • node_memory_MemTotal_bytes
    • node_filesystem_size_bytems{mount_point=PATH}
    • node_system_unit_state{name=}
    • node_vmstat_pswpin: 系统每秒从磁盘读到内存的字节数
    • node_vmstat_pswpout: 系统每秒钟从内存写到磁盘的总字节数

4.2 适用于主机监控的USE方法

  • USE是使用率(Utilization)、饱和度(Saturation) 和错误 (Error)的缩写,由Netflix的内核和性能工程师Brendan Gregg开发;
    • USE方法可以概括为:针对每个资源,检查使用率、饱和度和错误;
      • 资源:系统的一个组件,在USE中,它指的是一个传统意义上的物理服务器组件,如CPU、内存和磁盘等;
      • 使用率:资源忙于工作的平均时间,它通常用随时间变化的百分比进行表示;
      • 饱和度:资源排队工作的指标,无法再处理额外的工作;通常用队列长度表示错误:资源错误事件的计数;
    • 对CPU来说,USE通常意味着如下概念
      • CPU使用率随时间的百分比;
      • CPU饱和度,等待CPU的进程数;
      • 错误,通常对CPU不太有影响;
    • 对内存来说,USE的意义相似
      • 内存使用率随时间的百分比;
      • 内存饱和度,可通过监控swap进行测量;
      • 错误,通常不太关键;

4.3 简单实例

每台主机CPU在5分钟内的平均使用率

(1-avg(irate(node_cpu_seconds_total{mode=‘idle’}[5m])) by(instance)) * 100

在这里插入图片描述

#单位换算
node_memory_MemFree_bytes / (1024 * 1024)
#可用内存占用率
node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes * 100
#内存使用率
(node_memory_MemTotal_bytes - node_memory_MemFree_bytes) /
node_memory_MemTotal_bytes * 100
#磁盘使用率
(node_filesystem_size_bytes{mountpoint="/"} -
node_filesystem_free_bytes{mountpoint="/"})
/node_filesystem_size_bytes{mountpoint="/"} * 100
#阈值判断
(node_memory_MemTotal_bytes - node_memory_MemFree_bytes) /
node_memory_MemTotal_bytes > 0.95
#内存利用率是否超过80
( 1 - node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes ) * 100 > bool
80
prometheus_http_requests_total > bool 1000 #布尔值,当超过1000为1,否则为0
#注意:
对于比较运算符来说,条件成立有结果输出,否则没有结果输出
使用bool修改符后,布尔运算不会对时间序列进行过滤,而是直接依次瞬时向量中的各个样本数据与标量的比
较结果0或者1。从而形成一条新的时间序列。

相关文章:

Prometheus环境搭建和认识

Prometheus 环境搭建 1.prometheus 简介 Prometheus是基于go语言开发的一套开源的监控、报警和时间序列数据库的组合&#xff0c;是由SoundCloud公司开发的开源监控系统&#xff0c;Prometheus于2016年加入CNCF&#xff08;Cloud Native Computing Foundation,云原生计算基金…...

openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数

文章目录 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数130.1 背景信息130.2 GUC参数设置130.3 操作步骤130.4 示例 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数 130.1 背景信息 openGauss提供了多种修改GUC参数的方法&#xff0c;用户可…...

每日OJ题_算法_双指针_力扣11. 盛最多水的容器

力扣11. 盛最多水的容器 11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; 难度 中等 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成…...

数据仓库

一. 各种名词解释 1.1 ODS是什么&#xff1f; ODS层最好理解&#xff0c;基本上就是数据从源表拉过来&#xff0c;进行etl&#xff0c;比如mysql 映射到hive&#xff0c;那么到了hive里面就是ods层。 ODS 全称是 Operational Data Store&#xff0c;操作数据存储.“面向主题的…...

Redis常用操作及应用(一)

一、五种数据结构 二、String结构 1、字符串常用操作 SET key value //存入字符串键值对 MSET key value [key value ...] //批量存储字符串键值对 SETNX key value //存入一个不存在的字符串键值对 GET key //获取一个字符串键值 MGET key [ke…...

数据结构-树

参考&#xff1a;https://www.hello-algo.com/chapter_tree/binary_tree/#711 1. 介绍 树存储不同于数组和链表的地方在于既可以保证数据检索的速度&#xff0c;又可以保证数据插入删除修改的速度&#xff0c;二者兼顾。 二叉树是一种很重要的数据结构&#xff0c;是非线性的…...

解决ElementUI时间选择器回显出现Wed..2013..中国标准时间.

使用饿了么组件 时间日期选择框回显到页面为啥是这样的&#xff1f; 为什么再时间框中选择日期&#xff0c;回显页面出现了这种英文格式呢&#xff1f;&#xff1f;&#xff1f;&#xff1f; 其实这个问题直接使用elementui的内置属性就能解决 DateTimePicker 日期时间选择…...

从0到0.01入门 Webpack| 004.精选 Webpack面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

MacOS “xxxxx“,已损坏,无法打开,你应该将它移到废纸篓

在这里插入图片描述 解决方案 应用程序 - 实用工具中打开终端&#xff0c;输入命令&#xff0c; sudo xattr -r -d com.apple.quarantine 然后将程序拖放至命令窗口&#xff0c;如下图&#xff1a;...

每日一题:LeetCode-103/107.二叉树的(层序/锯齿形层序)遍历

每日一题系列&#xff08;day 04&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…...

webpack配置自动压缩图片

手动压缩图片 图片压缩是很重要的前端优化&#xff0c;一般可以选择手动压缩 手动压缩网站 webpack压缩图片 这里记录借助webpack的image-webpack-loader实现自动压缩图片 项目是create-react-app搭建的&#xff0c;webpack5.64.4 1、安装相应loader npm i image-webpack…...

基于单片机预费电表控制系统(proteus仿真+源程序)

一、系统方案 1、本设计采用这51单片机作为主控器。 2、采集电量值送到液晶1602显示。 3、按键设置预设值&#xff0c;实际使用电量超过设置&#xff0c;蜂鸣器报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 void LCD_init(void) { …...

【报错栏】(Vue) Invalid handler for event “click“: got undefined

Property or method "add" is not defined on the instance but referenced during render. 翻译&#xff1a; 属性或方法“add”未在实例上定义&#xff0c;但在渲染期间引用。 Invalid handler for event "click": got undefined 翻译&#xff1a; …...

单片机、ARM、嵌入式开发、Android 底层开发有什么关系?

单片机、ARM、嵌入式开发、Android 底层开发有什么关系&#xff1f; 从我目前的见识来看&#xff1a; 单片机是个系统&#xff08;比如&#xff1a;51、AVR、PLC...&#xff09;&#xff0c;其中包含了去除了输入输出之外的运算器、控制器、存储器&#xff0c;我们用程序可以非…...

Java中static、final、static final的区别

文章目录 finalstaticstatic final final final可以修饰&#xff1a;属性&#xff0c;方法&#xff0c;类&#xff0c;局部变量&#xff08;方法中的变量&#xff09; final修饰的属性的初始化可以在编译期&#xff0c;也可以在运行期&#xff0c;初始化后不能被改变。 final修…...

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《交直流配电网中柔性软开关接入的规划-运行协同优化方法》

这个标题涉及到交直流配电网中柔性软开关接入的规划-运行协同优化方法。下面是对这个标题各部分的详细解读&#xff1a; 交直流配电网&#xff1a; 这指的是一个电力系统&#xff0c;同时包含交流和直流电力传输的元素。这样的系统可能结合了传统的交流电力传输和近年来兴起的直…...

OSG文字-osgText3D(5)

osgText3D 三维立体文字比二维平面文字显示效果更好&#xff0c;相对二维平面文字&#xff0c;它有非常好的立体显示效果。 在实际虚拟现实项目中&#xff0c;过多使用三维立体文字会降低染效率&#xff0c;加重渲染负担&#xff0c;相对平面二维文字&#xff0c;它占用的内存是…...

ASN.1 编码规则概述(一)

文章目录 一、ASN.1二、 ASN.1的标准编码规则分类三、描述ASN.1记法的标准四、描述ASN.1编码规则的标准 一、ASN.1 ASN.1&#xff08;Abstract Syntax Notation One) 是一套标准&#xff0c;是描述数据的表示、编码、传输、解码的灵活的记法&#xff0c;它提供了一套正式、 无…...

STM32 中断系统

单片机学习 目录 文章目录 前言 一、中断系统 1.1 什么是中断 1.2 中断优先级 1.3 中断嵌套 1.4 C语言中的中断程序 二、STM32的中断通道和中断向量 2.1 中断通道 2.2 嵌套向量中断控制器NVIC 2.2.1 什么是NVIC 2.2.2 NVIC基本结构 2.2.3抢占优先级和响应优先级 2.2.4 NVIC的优…...

电磁场信息论及先进MIMO (黄大年茶思屋座谈) 笔记

天线阵的负载动态调控&#xff0c;动态阻抗匹配网络&#xff0c;实时跟着扫描角度的变化而变化&#xff0c;可能突破Hannan极限。 新的天线构架&#xff1a; 周期 —》非周期 每个单元不一样 动态可调&#xff0c;可重构 每个天线多端口或多模式 多层天线 非周期结构天线的增…...

电机减重一半,续航多半小时?拆解轴向磁通刷盘电机的省电逻辑

拿到这台YS-AFBL-120-20-24轴向磁通无刷刷盘电机&#xff0c;第一反应是&#xff1a;230W&#xff0c;5.8kg。同功率等级的传统径向电机方案&#xff0c;算上减速箱和皮带轮&#xff0c;整套驱动单元奔着10公斤往上去了。轴向方案等于直接砍掉了近一半的重量。重量减下去&#…...

别再为SBUS负逻辑头疼了!硬件反相器电路设计与STM32软件避坑全指南

SBUS负逻辑难题终结手册&#xff1a;从硬件反相到STM32配置的工程实践 当你第一次将航模遥控器的SBUS输出端直接连接到自制的STM32飞控板时&#xff0c;那个令人沮丧的时刻——串口调试器里只有乱码或者干脆一片寂静——可能已经成为许多嵌入式开发者的"成人礼"。这…...

FPGA与MCP2518FD的SPI通信调试实战:从时序纠错到CAN FD数据收发

1. SPI通信调试&#xff1a;从时序分析到实战纠错 第一次用FPGA通过SPI控制MCP2518FD时&#xff0c;我对着逻辑分析仪抓到的波形反复比对手册&#xff0c;发现数据死活写不进寄存器。这种经历相信很多工程师都遇到过——明明代码逻辑没问题&#xff0c;硬件连接也正确&#xff…...

MusePublic Art Studio生成多样性控制:潜在空间探索技术

MusePublic Art Studio生成多样性控制&#xff1a;潜在空间探索技术 说实话&#xff0c;用AI生成艺术图片&#xff0c;最让人头疼的可能不是“画不出来”&#xff0c;而是“画得都一样”。你输入一段描述&#xff0c;比如“一个赛博朋克风格的武士”&#xff0c;模型确实能给你…...

从配置文件到配置类:Spring Boot Security 的权限控制演进

1. Spring Security 的配置文件时代 记得我第一次用 Spring Security 是在五年前的一个内部管理系统项目上。当时为了快速上线&#xff0c;直接在 application.yml 里写死了用户名密码&#xff0c;就像这样&#xff1a; spring:security:user:name: adminpassword: 123456roles…...

《作业2》

...

SITS2026 AGI原型系统接口文档首度流出,17个可调用认知原语,开发者现在接入能做什么?

第一章&#xff1a;SITS2026 AGI原型系统接口文档首度流出概览 2026奇点智能技术大会(https://ml-summit.org) 近日&#xff0c;一份标注为“SITS2026-AGI-PROTOTYPE-INTERFACE-v0.3.1-INTERNAL-DRAFT”的内部接口文档在多个AI研究社区悄然传播。该文档完整披露了面向通用人工…...

终极macOS视频预览解决方案:QLVideo让你的Finder支持所有视频格式

终极macOS视频预览解决方案&#xff1a;QLVideo让你的Finder支持所有视频格式 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: htt…...

嵌入式——小白入门

嵌入式小白入门嵌入式一、先搞懂&#xff1a;什么是嵌入式&#xff1f;核心思想1. 通俗定义2. 嵌入式核心三大思想&#xff08;入门最重要&#xff09;二、嵌入式整体分类&#xff08;小白快速分清&#xff09;1. 单片机嵌入式&#xff08;MCU&#xff09;——入门首选、最简单…...

B站爬虫实战:手把手教你破解w_rid签名与oid参数(附完整Python代码)

B站数据采集实战&#xff1a;深度解析w_rid签名与oid参数生成机制 每次打开B站评论区&#xff0c;那些海量的用户互动数据背后&#xff0c;都藏着开发者们最想破解的秘密。作为国内最大的年轻人文化社区&#xff0c;B站的数据价值不言而喻&#xff0c;但它的防护机制也让不少爬…...