Prometheus+Grafana构建企业级监控方案

1.prometheus工作原理:

Prometheus将指标收集并存储为时间序列数据库(时序数据库),即指标信息与记录它的时间戳一起存储,以及称为标签的可选键值对。

特性:

具有由指标名称和键/值对识别的时间序列数据的多维数据模型

·PromQL,一种利用此维度的灵活查询语言

不依赖集中式存储;单个服务器节点是自治的

时间序列收集通过http上的拉模型进行

通过中间网关支持推送时间序列

通过服务发现或静态配置发现目标

多种图形和仪表板支持模式

指标:
指标是通俗意义上的数值测量。时间序列是指记录随时间的变化。用户想要衡量的指标因应用而异。对于Web 服务器,可能是请求时间;对于数据库,可能是活动连接数或活动查询数,等等

指标在了解应用程序为何以某种方式工作方面发挥着重要作用。假设您正在运行一个Web 应用程序,并发现它很慢。为了了解应用程序发生了什么,您需要一些信息。例如,当请求数量很高时,应用程序可能会变慢。如果您有请求计数指标,则可以确定原因并增加服务器数量以处理负载。

工作原理:

应用服务通过导出器暴露自己的指标,Prometheus定时去拉取导出器暴露的数据,然后数据会持久化落盘做时序数据库存储,客户端如Grafana会通过PromQL查询Prometheus中的指标数据。exporter导出器相当于一个Web应用,遵循Prometheus协议,导出器完成两件事:拿到指标,然后封装指标。

SpringBoot会自带一个actuator,相当于导出器的功能,可以暴露监控指标
为了安全考虑,我们通常将监控服务部署在内网,部署架构如下:

2.SpringBoot整合Prometheus示例

1.新建SpringBoot项目并引入监控相关核心依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
<!--        rometheus 注册表实现,用于将应用的度量指标按照 Prometheus 的格式进行暴露。--><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId><scope>runtime</scope></dependency>

2.配置application.yml

spring:application:name: spring-boot-prometheus-demo# 暴露所有监控指标
management:endpoints:web:exposure:include: "*"

3.查看指标

查看暴露的指标列表:

localhost:8080/actuator/metrics

查看某一详细指标(上述路径+具体指标):

localhost:8080/actuator/metrics/disk.free

刷新页面,上述监控数据实时变化

查看prometheus格式的数据:

localhost:8080/actuator/prometheus

一条指标的格式:

3.Promethus+Grafana整合实战整合

1.Docker部署项目

项目打jar包并编写如下的Dockerfile文件:

# 一个镜像就是一个小型linux系统
# 基础运行环境
FROM openjdk:17# 把产品复制到运行环境的linux系统中 /app 目录下,改名叫 boot.jar
COPY target/*.jar /app/boot.jar# 启动占用端口
EXPOSE 9090# 应用启动命令 'java -jar /app/boot.jar';
# CMD 可以被启动的时候重新修改,、
# ENTRYPOINT(入口),不能被启动的时候修改
ENTRYPOINT ["java","-jar","/app/boot.jar"]

将项目整体打成压缩包并上传到服务器,在服务解压压缩包并进入项目目录

执行指令构建镜像:

docker build -f Dockerfile -t boot-app:v1.0 .

根据镜像起服务容器:

docker run -d -p 6379:9090 --name boot boot-app:v1.0

成功从外网访问监控:

2.配置Prometheus

创建配置存放路径

在此路径下创建 prometheus.yml编写配置内容:

global :
scrape_interval:15 #抓取配置
sevaluation_interval:15s #计算
scrape_configs:-job_name:'prometheus' #抓取自己指标static_configs:-targets:['localhost:9090']-job_name:'bootapp-exporter'metrics_path:'/actuator/prometheus' #指定抓取的路径static_configs:-targets:['172.20.221.50:9090']# 注意改为服务器私有IP地址labels :appname:'bootapp

启动prometheus

回到根目录下创建compose.yaml文件,批量启动应用:prometheus,grafana

name: prom
services:prometheus:image: prom/prometheuscontainer_name:prometheusrestart: alwaysvolumes -/app/prom/conf/prometheus.yml:/etc/prometheus/prometheus.yml-/etc/localtime:/etc/localtime:roports:-"6379:9090'networks:- backendgrafana :image: grafana/grafanacontainer_name:grafanarestart: alwaysvolumes:-/etc/localtime:/etc/localtime:rodepends_on:- prometheusports:-"3306:3306'networks:- backendnetworks:backendname: backend

批量启动服务:

docker compose -f compose.yaml up -d

服务启动,访问promethus端口,进入promethus监控

登录进入Grafana登录页面

配置promethus数据源

查看某些指标

配置监控面板

主机,数据库等中间件的监控同理配置

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

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

相关文章

第23课:行业解决方案设计

第23课:行业解决方案设计 课程目标 掌握金融、医疗、教育等行业应用 学习领域特定Agent设计 了解行业标准集成 实践设计行业解决方案 课程内容 23.1 金融行业解决方案 金融Agent系统 class FinancialAgentSystem {constructor() {this.agents =

Go语言快速入门教程(JAVA转go)——2 环境搭建与入门

安装go Go官网下载地址&#xff1a;https://golang.org/dl/ 中国区官方镜像站&#xff08;推荐&#xff09;&#xff1a;https://golang.google.cn/dl/ windows安装 下载好后选择安装路径即可&#xff0c;安装完成后&#xff0c;winr 输入cmd调出命令行窗口&#xff0c;输入…

ffplay播放pcm

用 ffplay 播放 PCM 裸流时&#xff0c;必须手动告诉它“没有封装头、采样率、声道数、采样格式”四个关键点。命令模板如下&#xff1a; ffplay -f <采样格式> -ar <采样率> -ac <声道数> -i <pcm文件>常用组合示例 48 kHz、16 bit、小端、双声道 ffp…

【LLM】大模型训练中的稳定性问题

训练稳定性问题 &#x1f4cb; 概述 本文档详细介绍了在项目中解决训练稳定性问题的方法、原理分析以及实际应用。涵盖了梯度裁剪、损失函数优化、数值稳定化处理和学习率调度等关键技术。&#x1f6a8; 问题描述 现象: 训练过程中出现数值不稳定&#xff0c;损失函数波动剧烈 …

【linux系统】6. 基础开发工具(一)

一. 软件包管理器 1&#xff09;Linux下安装软件的常用方法 1. 源代码安装 下载程序的源代码&#xff0c;本地编译成二进制文件&#xff0c;拷贝到系统指定路径下。 2. rpm包安装 已经编译好的安装包&#xff0c;使用rpm对应的指令去安装&#xff0c;也比较麻烦。 3. 包…

ffplay数据结构分析

struct VideoState 播放器封装 typedef struct VideoState {SDL_Thread *read_tid; // 读线程句柄AVInputFormat *iformat; // 指向demuxerint abort_request; // 1时请求退出播放int force_refresh; // 1时刷新画面&#xff0c;请求立即刷新画面的意思int paused; …

OpenCV:银行卡号识别

目录 一、项目原理与核心技术 二、环境准备与工具包导入 1. 环境依赖 2. 工具包导入 三、自定义工具类 myutils.py 实现 四、主程序核心流程&#xff08;银行卡识别.py&#xff09; 1. 命令行参数设置 2. 银行卡类型映射 3. 辅助函数&#xff1a;图像展示 五、步骤 1…

基于spark的澳洲光伏发电站选址预测

基于spark的澳洲光伏发电站选址预测项目概况 [&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;] 点这里,查看所有项目 [&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x…

Kibana 双栈网络(Dual-Stack)支持能力评估

#作者&#xff1a;Unstopabler 文章目录一&#xff0e;测试目标二&#xff0e;测试环境三&#xff0e;Kibana1、查询 Kibana pod信息2、查询Kibana service信息3、Kibana service 设置四&#xff0e;验证测试1、Kibana 监听参数设置2、Kibana节点IPv4状态检查3、Kibana节点IPv6…

标准CAN帧介绍

标准CAN帧介绍标准CAN&#xff08;Controller Area Network&#xff09;结构1.帧起始&#xff08;SOF-Start Of Frame&#xff09;2.仲裁段&#xff08;Arbitration Field&#xff09;3.控制段&#xff08;Control Field&#xff09;4.数据段&#xff08;Data Field&#xff09…

easyPoi实现动表头Excel的导入和导出

easyPoi实现动表头Excel的导入和导出 Maven依赖 !-- EasyPoi 核心依赖 --><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.4.0</version></dependency><!-- EasyPoi Web…

疯狂星期四文案网第67天运营日记

网站运营第67天&#xff0c;点击观站&#xff1a; 疯狂星期四 crazy-thursday.com 全网最全的疯狂星期四文案网站 运营报告 今日访问量 今日搜索引擎收录情况

CAS理解

CAS&#xff08;Compare And Swap&#xff09; 是非阻塞同步的实现原理&#xff0c;它是CPU硬件层面的一种指令&#xff1b; CAS制定操作包含三个参数 内存值&#xff08;内存地址&#xff09;v预期值E新增值N 当CAS指令执行时&#xff0c;当且仅当预期值E和内存值V相同时&…

【SQL】指定日期的产品价格

目录 题目 分析 代码 题目 产品数据表: Products ------------------------ | Column Name | Type | ------------------------ | product_id | int | | new_price | int | | change_date | date | ------------------------ (product_id, chang…

《突破Unity+腾讯云联机瓶颈:多人游戏同步延迟与数据安全的双维度优化》

在Unity开发的多人联机游戏中&#xff0c;腾讯云的云服务器&#xff08;CVM&#xff09;、游戏多媒体引擎&#xff08;GME&#xff09;与云数据库&#xff08;CDB&#xff09;共同构成了联机体验的核心支撑。但随着玩家并发量提升与游戏玩法复杂度增加&#xff0c;“实时同步延…

BisenetV1/2网络以及模型推理转换

BisenetV1/2网络以及模型推理转换 文章目录BisenetV1/2网络以及模型推理转换1 BiSenetV11.1 Contex Path1.2 Spatial Path1.3 ARM1.4 FFM1.5 backbone2 模型推理代码流程分析2.1 加载模型2.2 模型推理① 转换张量② 输入尺寸调整③ 模型推理④ 输出尺寸还原⑤ 类别预测⑥ 保存绘…

Android开发-文本输入

一、EditText 基础&#xff1a;不仅仅是输入框EditText 是 TextView 的子类&#xff0c;允许用户输入和编辑文本。1. 基本布局<EditTextandroid:id"id/et_username"android:layout_width"match_parent"android:layout_height"wrap_content"an…

数据化存储菜单,国际化方案

djangoclass Menu(models.Model):parent_id models.BigIntegerField(default0, verbose_name父菜单ID)name models.CharField(max_length50, verbose_name菜单名称)icon models.CharField(max_length50, blankTrue, nullTrue, verbose_name菜单图标)path models.CharField(…

SQL-用户管理与操作权限

在 SQL 中&#xff0c;用户管理和权限操作是数据库安全管理的核心组成部分&#xff0c;用于控制 “谁能访问数据库” 以及 “能对数据库做什么”。它们共同保障数据库的安全性、完整性和合规性。一、用户管理&#xff1a;控制 “谁能访问数据库”用户管理是指对数据库用户的创建…

计算机视觉案例分享之答题卡识别

目录 一、基本流程 二、代码实现 1. 导入工具包和定义常量 2. 辅助函数定义 2.1 坐标点排序函数 2.2 透视变换函数 2.3 轮廓排序函数 2.4 图像显示函数 3. 主程序处理流程 3.1 图像预处理 3.2 轮廓检测与透视变换 3.3 阈值处理与选项检测 3.4 答案识别与评分 我们…