Prometheus+Grafana可视化监控SpringBoot项目

2023-05-16

原文地址:https://xeblog.cn/articles/7

Prometheus简介

简史

Prometheus受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,并且于2015年早期对外发布早期版本。2016年5月继Kubernetes之后成为第二个正式加入CNCF基金会的项目,同年6月正式发布1.0版本。2017年底发布了基于全新存储层的2.0版本,能更好地与容器平台、云平台配合。

架构

特点

  • 多维的数据模型(基于时间序列的k/v键值对)。
  • 灵活的查询及聚合语句(PromQL)。
  • 不依赖分布式存储,节点自治。
  • 基于HTTP的pull模式采集时间序列数据。
  • 可以使用pushgateway(prometheus的可选中间件)实现push模式。
  • 可以使用动态服务发现或静态配置采集的目标机器。
  • 支持多种图形及仪表盘。

相关概念

数据模型

Prometheus 存储的是时序数据, 即按照相同时序(相同的名字和标签),以时间维度存储连续的数据的集合。

监控样本

# HELP system_cpu_usage The "recent cpu usage" for the whole system
# TYPE system_cpu_usage gauge
system_cpu_usage 0.23587264544090683
# HELP logback_events_total Number of error level events that made it to the logs
# TYPE logback_events_total counter
logback_events_total{level="error",} 0.0
logback_events_total{level=“info”,} 557.0

复制代码
  • HELP用于解释当前指标的含义,TYPE则说明当前指标的数据类型
  • system_cpu_usage、 logback_events_total表示当前指标的名称
  • {}中的标签反映了当前样本的一些特征和维度
  • 0.23587264544090683、0.0、557.0表示该监控样本的具体值

时序类型

Prometheus 时序数据分为 Counter, Gauge, Histogram, Summary 四种类型。

Prometheus的使用

安装

官方下载地址

配置

Pom依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
	<groupId>io.micrometer</groupId>
	<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
复制代码

项目开启监控

management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
复制代码

添加Job

进入Prometheus安装根目录 vim prometheus.yml

新增节点

- job_name: xeblog-api
    metrics_path: /actuator/prometheus
    static_configs:
    - targets: ['127.0.0.1:8080’]
复制代码

job_name:任务名称 metrics_path: 指标路径 targets:实例地址/项目地址,可配置多个

运行Prometheus

进入Prometheus安装根目录 ./prometheus 运行成功日志

访问地址:localhost:9090

PromQL

匹配过滤

操作符:= != =~ !~

匹配监控任务为xeblog-api的非GET请求方法的请求数

http_server_requests_seconds_count{job="xeblog-api", method!="GET"}
复制代码

匹配监控任务为xeblog-api的非GET请求方法的请求数,且请求路径不为/api/message和/api/version

http_server_requests_seconds_count{job="xeblog-api", method!="GET", uri !~ "/api/message|/api/version"}
复制代码

它门的区别主要是,“=~ !~”支持正则匹配

范围查询

查询最近5分钟内的所有样本数据: http_request_total{}[5m] 可选单位:

  • s - 秒
  • m - 分钟
  • h - 小时
  • d - 天
  • w - 周
  • y - 年

时间位移操作(offset)

查询5分钟前的样本数据: http_request_total{} offset 5m

查询昨天1天内的样本数据: http_request_total{}[1d] offset 1d

聚合操作

  • sum (求和)
  • min (最小值)
  • max (最大值)
  • avg (平均值)
  • stddev (标准差)
  • stdvar (标准差异)
  • count (计数)
  • count_values (对value进行计数)
  • bottomk (后n条时序)
  • topk (前n条时序)
  • quantile (分布统计) ...

内置函数

  • increase(v range-vector):获取区间向量中的第一个和最后一个样本并返回其增长量
  • rate(v range-vector):计算区间向量v在时间窗口内平均增长速率
  • irate(v range-vector):计算区间向量v在时间窗口内平均增长速率(瞬时增长率,基于最后两个数据)
  • predict_linear(v range-vector, t scalar):预测时间序列v在t秒后的值
  • abs(v instant-vector): 返回输入向量的绝对值
  • sort(v instant-vector): 按升序排列
  • sort_desc(v instant-vector): 按降序排列 ...

Grafana可视化

安装

官方下载地址

Mac下安装启动示例

// 安装
brew install grafana
// 启动
brew services start grafana
复制代码

启动后访问地址:localhost:3000

登陆: 初始用户名和密码都是admin

添加Prometheus数据源

新增Dashboard

可以选择自己手动添加或者导入一个已配置好的Json文件 Dashboard分享社区:grafana.com/dashboards 这里可以下载别人分享的Dashboard Json配置文件

推荐下载: Spring Boot Statistics 下载完后 导入文件就可以看见类似一个这样的监控界面
最上面这一行是模板变量,可以动态选择
点击设置按钮,选择Variables,点击New可以新增变量
点击title选择Edit可以进行编辑
这里编写PromQL语句

监控报警

配置发件邮箱

vim grafana.ini 我的文件路径是/usr/local/etc/grafana/grafana.ini 配置如下:

[smtp]
enabled = true
host = smtp.qq.com:25
user = 你的QQ@qq.com
# If the password contains # or ; you have to wrap it with trippel quotes. Ex """#password;"""
password = 邮箱口令(不是QQ密码)
;cert_file =
;key_file =
;skip_verify = false
from_address = 你的QQ@qq.com
from_name = Grafana
# EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com

复制代码

这里配置的是QQ邮箱,其他邮箱同理

配置完后,重启Grafana

brew services restart grafana
复制代码

配置收件人

可以添加多个收件人,以“;”分隔
最后点击Send Test 可以收到一封测试邮件,配置成功

监控指标

需要注意的是,Prometheus不支持带有模版变量的监控设置报警,否则会提示“Template variables are not supported in alert queries”

监控示例: 监控CPU使用率 PromQL:

system_cpu_usage{instance="实例地址", job="任务名称"}
复制代码

创建报警
这里配置的是当CPU使用率超过1%则发出报警
添加报警通知邮箱以及报警的描述信息
保存之后,没过多久就收到了报警通知

感谢阅读,如有错误,望指正!

参考资料

  • songjiayang.gitbooks.io/prometheus/…
  • yunlzheng.gitbook.io/prometheus-…
  • prometheus.io/
  • grafana.com/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Prometheus+Grafana可视化监控SpringBoot项目 的相关文章

  • 【设计模式】我终于读懂了命令模式。。。

    文章目录 x1f436 智能生活项目需求 x1f42d 命令模式基本介绍 x1f439 命令模式的原理类图 x1f430 对原理类图的说明 即 命名模式的角色及职责 x1f43a 命令模式解决智能生活项目 x1f438 下面我们跟着代码de
  • css制作从下往上逐渐显示的div

    html代码 span class hljs tag lt span class hljs name div span span class hljs attr class span 61 span class hljs string 34
  • 清除redis缓存的命令,redis常用命令

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 清除redis缓存的命令 xff0c redis常用命令 Redis 命令 xff1a flushall gt 清空整个 Redis 服务器的数据 删除所有数据库的所有 k
  • R语言做正态分布检验

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 首先准备两个样本 code set seed 0 a lt runif 100 min 61 3 max 61 3 b lt rnorm 100 mean 61 0 sd
  • node-gyp安装 报错if not defined npm_config_node_gyp

    解决if not defined npm config node gyp 1 br npm install g node gyp 2 npm config set node gyp 34 node C Users me AppData Ro
  • Oracle在Windows上的运行问题分析和解决

    Oracle大型数据库系统在AIX UNIX上的实战详解 集中讨论的继续 做了一周关于Oracle在32位windows上实施的培训 xff0c 恰好期间有几位Oracle用户邮件询问关于Windows系统调整问题 正好吧 xff0c 把准
  • iOS UIImage 图片局部拉伸的一些学习要点

    之前 做纯色局部拉伸 通过 top bottom left right 相交的阴影拉伸 屡试不爽 实施方法 imageView image 61 UIImage imageNamed 64 34 icon helper palace day
  • Python 查看模块的帮助文档,方法和帮助信息

    参考链接 xff1a https blog csdn net u013810296 article details 55509284 这里介绍下python自带的查看帮助功能 xff0c 可以在编程时不中断地迅速找到所需模块和函数的使用方法
  • 移动电源、3G路由拆机

    这款电源 4400mAh xff0c 淘宝也就八十元左右 xff0c 可以作为无线路由使用 xff0c 可以插 3G 网卡 xff0c 总的来说还算不错 xff0c 关键是外观精美 xff0c 网上一堆和华美 A100 那样的 xff0c
  • FreeRTOS——任务调度—抢占式,时间片和合作式

    以下转载自安富莱电子 xff1a http forum armfly com forum php 本章教程为大家将介绍 FreeRTOS 操作系统支持的任务调度方式 xff1a 抢占式 xff0c 时间片和合作式 xff0c 这部分 算是
  • Linux无网络怎么安装软件,解决无网络环境使用yum本地源安装软件

    搞运维的朋友经常会遇到单位的服务器使用的是内网 xff0c 编译安装时间长 xff0c 麻烦些 xff0c 使用yum安装相对简单 xff0c 由于不能联网所以配置本地yum源是必要的 其实配置本地源是很简单的 xff0c 只需要挂载上系统
  • 到了这个年纪,就应该阅读Spring源码了,源码阅读指南-编译加运行

    文章目录 到了那个年纪 xff0c 就应该阅读Spring源码了 x1f604 第一步 xff0c clone x1f606 第二步 xff0c 使用idea打开项目 x1f60a gradle介绍 xff08 插叙手法 xff09 x1f
  • 页面加载完成

    1 document ready function alert 34 页面加载完成 xff01 34 简写 xff1a function alert 34 页面加载完成 xff01 34 2 原生JS方法 window nl ad 61 f
  • Java写的斗地主游戏源码

    源码下载在最后 我们的前年的课设要求做一个斗地主程序 xff0c 当时正在愁如何做界面 xff0c 当时刚好在学习C xff0c 于是就用C 完成了这个程序 一方面 xff0c 当时我C 功底还很差 xff08 其实现在也不怎么样 xff0
  • 加密的m3u8、ts文件合并

    加密后的ts文件不能直接合并或播放 xff0c 需要使用key对每个ts文件进行解密 分为两种情况 xff1a 1 如果ts文件已经全部下载好 xff0c 则可以直接在本地通过ffmpeg快速解密合并 2 如果ts文件没有下载好 xff0c
  • 微信小程序:截图组件welCropper,实现原理及其使用

    最近做项目的时候 xff0c 需要做一个截图功能 用了一个别人写的截图工具 xff0c 发现截出的图质量下降了 xff0c 但是我们图片要用来做识别 需要保证截出的图质量不下降 而且也不支持通过拖动来调整截图框的大小 所以这个截图工具无法满
  • 时序数据从分表到分库

    这里的时序数据泛指一切随时间推移而不断增长的数据 xff0c 比如通话记录 银行交易记录等 对于数据库来讲 xff0c 时序数据并没有什么特殊性 xff0c 可以和普通数据一样放在数据表中 不过 xff0c 因为不断增长 xff0c 积累时
  • Elasticsearch7.1中文文档-第一章-入门

    入门 引言 Elasticsearch是一个高度可扩展开源的全文搜索引擎 它搜索几乎是实时的 用ES作为搜索引擎 为复杂搜索功能的需求提供解决方案 ES的使用场景 网上商场 搜索商品 ES配合logstash kibana 日志分析 本教程
  • VINS(一)简介与代码结构

    VINS Mono和VINS Mobile是香港科技大学沈劭劼团队开源的单目视觉惯导SLAM方案 是基于优化和滑动窗口的VIO xff0c 使用IMU预积分构建紧耦合框架 并且具备自动初始化 xff0c 在线外参标定 xff0c 重定位 x
  • QTableView中设置单元格居中

    在获取想要设置的单元格对应的QStandardItem item xff0c 然后设置此item文本属性属性 xff0c 伪码如下 xff1a QStandardItem item 61 new QStandarItem 或者 GetQSt

随机推荐

  • MacBook Pro休眠掉电、耗电量大问题解决方案

    1 前言 最近我的2015mbpMacBook Pro Retina 13 inch early 2015 更新完10 14系统后 xff0c 发现休眠待机一晚上后能掉5 电 xff0c 白天待机4 5小时又掉了8 然而在此之前我记得休眠是
  • 推荐一本springBoot学习书籍---深入浅出springBoot2.x

    花了几周时间读完了这本书 确实是一本特别详细全面的书 而且不单单只是springBoot 书中还介绍了许多工作中常用的技术与springBoot的整合使用 当然 也有一些小bug 因为在代码实践过程发现和书中代码还是有区别的 当然我只发现了
  • 【simple-cache】我开发了一款只要一个注解就可以轻松实现缓存的框架

    x1f436 背景 xff1a 我们在写web项目的时候 xff0c 当大量的请求进来会导致我们数据库压力过大 xff0c 所以我们需要加入缓存来减轻数据库的压力 xff0c 但是现在市面上的很多缓存框架配置太复杂 xff0c 所以该框架只
  • 转载——为什么你睡了11个小时仍然觉得疲累?

    教你如何休息 为什么你睡了11个小时仍然觉得疲累 xff1f 为什么你花了好几万去岛国度假并没有增加生活的热情 xff1f 都说要去KTV xff0c 去夜店 xff0c 去游乐园就能忘掉不快 xff0c 更带劲地开始新的一天 xff0c
  • GreenPlum 数据库创建用户、文件空间、表空间、数据库

    前几篇文章介绍了GreenPlum数据库的安装 启动 关闭 状态检查 登录等操作 xff0c 数据库已经创建好了 xff0c 接下来介绍如何使用数据库 按照习惯 xff0c 需要先创建测试用户 表空间 数据库 先创建测试用户dbdream
  • 将Lua嵌入到自己的程序中

    什么是Lua Lua是具有简单数据描述的扩展编程语言 动态解析语言 它提供了非常好的面向对象编程 xff0c 函数式编程 functional programming xff0c 数据驱动式编程 data driven programmin
  • OpenCV——像素数据类型总结<摘>

    1 Unsigned 8bits 一般的图像文件格式使用的大小 IplImage数据结构参数 xff1a IPL DEPTH 8U CvMat数据结构参数 xff1a CV 8UC1 xff0c CV 8UC2 xff0c CV 8UC3
  • 关于warning: Clock skew detected. Your build may be incomplete. 的解决方法

    今天发现电脑的系统时间不对 xff0c 因此将时钟进行了改动 xff0c 回头编译Linux kernel的时候 xff0c 提演示样例如以下的warning xff1a warning Clock skew detected Your b
  • 8-4.桶排序算法详解

    1 桶排序介绍 桶排序 Bucket sort 是一种基于计数的排序算法 xff0c 工作的原理是将数据分到有限数量的桶子里 xff0c 然后每个桶再分别排序 xff08 有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序 xff
  • 我的年终总结,作为研发,在2018年都有哪些进步、收获与成长?

    2018 结束了 部门开会总结了过去的工作与未来的展望 xff0c 也是个不错的机会去回顾 审视 思考自己的 2018 年 玄难说过人与人的差距来自于思考与总结 xff0c 我深深地认同这一点 我也把自己的一部分思考写下来 xff0c 在公
  • cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local ..

    在安装opencv的时候 xff0c 会用 xff1a cmake D CMAKE BUILD TYPE 61 RELEASE D CMAKE INSTALL PREFIX 61 usr local 很久这这句话什么意思 xff01 在bu
  • 谈谈项目售前的经验:(个人观点)

    谈谈自己多年做网络项目售前的经验 个人观点 1 售前要熟悉市场 特别是你从事项目的决策链 项目的商务价格 同类项目竞争对手的价格分析等等 2 售前要熟悉项目的运作方式 实施 管理 客户的需求的深度挖掘 熟悉技术营销和解决方案营销 3 售前要
  • 【拥抱开源】发布自己的项目到maven中央仓库

    文章目录 x1f388 第一步 xff0c 注册账号 x1f4bf 第二步 xff0c 登录 x1f4c0 第三步 xff0c 设置信息 x1f4be 第四步 xff0c 创建问题 x1f4f9 第五步 xff0c 验证信息 x1f3a5
  • c# ros

    class MK Stream connection TcpClient con public MK string ip con 61 new TcpClient con Connect ip 8728 connection 61 Stre
  • Ubuntu中使用Docker/LXC迅速启动一个桌面系统

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 2013年07月18日 标签 cloud container docker lxc 作者 xff1a vpsee Docker 是 dotCloud 最近几个月刚宣布的开源
  • 自己写的小程序

    题目是 xff1a 输入n个学生成绩 xff0c 计算平均分 xff0c 并且统计不及格成绩的学生人数 自己这个程序和教材上是相同的 xff08 不谋而合 xff09 xff0c 哈哈 这次写的程序与之前比较更明了 xff0c 同学一下子就
  • 【编程好习惯】判断函数的返回值

    调用一个函数后要检查函数的返回值 xff0c 以决定程序是继续应用逻辑处理还是出错处理 xff0c 这理应是一个常识 xff0c 但在现实中 xff0c 却存在大量不检查函数返回值的代码 既然是常识 xff0c 但却得不到重视 xff0c
  • 计算机视觉中的词袋模型(Bow,Bag-of-words)

    计算机视觉中的词袋模型 Bow Bag of words Bag of words 读 39 xw20084898的专栏 39 的blog Bag of words model in computer vision Bag of words
  • VR发展简史

    最初的起源 事实上 xff0c 虚拟现实由来已久 xff0c 其概念最早被提及应该追溯到Aldous Huxley xff08 阿道司 赫胥黎 xff09 1932年推出的长篇小说 美丽新世界 xff0c 这篇小说以26世纪为背景 xff0
  • Prometheus+Grafana可视化监控SpringBoot项目

    原文地址 xff1a https xeblog cn articles 7 Prometheus简介 简史 Prometheus受启发于Google的Brogmon监控系统 xff08 相似的Kubernetes是从Google的Brog系