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

简介: Prometheus是一种开源的监控系统,通过时间序列数据库存储指标数据,支持多维数据模型和PromQL查询语言。其工作原理是通过HTTP拉取应用暴露的指标(如SpringBoot的Actuator端点),并持久化存储。示例展示了SpringBoot整合Prometheus的过程,包括依赖引入、配置暴露指标端点,以及通过Docker部署应用。最后介绍了Prometheus与Grafana的集成,通过配置数据源和仪表板实现可视化监控。整个方案适用于内网部署,支持服务发现和多种中间件监控。

 1.prometheus工作原理:

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

特性:

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

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

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

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

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

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

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

指标:

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

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

工作原理:

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

image.gif 编辑

SpringBoot会自带一个actuator,相当于导出器的功能,可以暴露监控指标

为了安全考虑,我们通常将监控服务部署在内网,部署架构如下:

image.gif 编辑

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>

image.gif

2.配置application.yml

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

image.gif

3.查看指标

查看暴露的指标列表:

localhost:8080/actuator/metrics

image.gif 编辑

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

localhost:8080/actuator/metrics/disk.free

image.gif 编辑

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

查看prometheus格式的数据:

localhost:8080/actuator/prometheus

image.gif 编辑

一条指标的格式:

image.gif 编辑

3.Promethus+Grafana整合实战整合

image.gif 编辑

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"]

image.gif

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

执行指令构建镜像:

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

image.gif

image.gif 编辑

根据镜像起服务容器:

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

image.gif

image.gif 编辑

成功从外网访问监控:

image.gif 编辑

2.配置Prometheus

创建配置存放路径

image.gif 编辑

在此路径下创建 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

image.gif

启动prometheus

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

name: prom
services:
  prometheus:
    image: prom/prometheus
    container_name:prometheus
    restart: always
    volumes 
      -/app/prom/conf/prometheus.yml:/etc/prometheus/prometheus.yml
      -/etc/localtime:/etc/localtime:ro
    ports:
      -"6379:9090'
    networks:
      - backend
      
grafana :
  image: grafana/grafana
  container_name:grafana
  restart: always
  volumes:
    -/etc/localtime:/etc/localtime:ro
  depends_on:
    - prometheus
  ports:
    -"3306:3306'
  networks:
    - backend
    
  networks:
    backend
      name: backend

image.gif

批量启动服务:

docker compose -f compose.yaml up -d

image.gif

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

image.gif 编辑

登录进入Grafana登录页面

image.gif 编辑

配置promethus数据源

image.gif 编辑

查看某些指标

image.gif 编辑

配置监控面板

image.gif 编辑

image.gif 编辑

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


相关文章
|
5月前
|
Prometheus 运维 监控
别再裸奔搞监控了!一篇带你上手 Prometheus+Grafana 的实战指南
别再裸奔搞监控了!一篇带你上手 Prometheus+Grafana 的实战指南
1011 2
|
8月前
|
jenkins Java 持续交付
使用 Jenkins 和 Spring Cloud 自动化微服务部署
随着单体应用逐渐被微服务架构取代,企业对快速发布、可扩展性和高可用性的需求日益增长。Jenkins 作为领先的持续集成与部署工具,结合 Spring Cloud 提供的云原生解决方案,能够有效简化微服务的开发、测试与部署流程。本文介绍了如何通过 Jenkins 实现微服务的自动化构建与部署,并结合 Spring Cloud 的配置管理、服务发现等功能,打造高效、稳定的微服务交付流程。
948 0
使用 Jenkins 和 Spring Cloud 自动化微服务部署
|
Prometheus 监控 Cloud Native
使用mysqld_exporter监控所有MySQL实例
使用mysqld_exporter监控所有MySQL实例
2082 2
|
12月前
|
人工智能 API 开发者
狂揽7.5k星!这款开源API网关彻底解放开发者:一键聚合GPT-4、Suno、Midjourney,还能在线充值!
New API 是一款基于 One API 二次开发的 AI 模型接口管理与分发系统,支持多种大模型(如 GPT-4、Suno、Midjourney 等)统一封装为 OpenAI 格式接口调用。其核心功能包括多模型统一网关、企业级权限管控、“推理力度”分级、无魔法访问全球 AI 服务、灵活计费体系及开发者友好设计。技术架构采用 Golang + Gin 框架,支持高并发低延迟,适用于企业内部 AI 中台、多模型 SaaS 平台、学术研究协作及个人开发者工具等场景。项目开源地址:https://github.com/kingbug/new-api。
9197 10
|
Prometheus 监控 Cloud Native
docker安装prometheus+Granfan并监控容器
【9月更文挑战第14天】本文介绍了在Docker中安装Prometheus与Grafana并监控容器的步骤,包括创建配置文件、运行Prometheus与Grafana容器,以及在Grafana中配置数据源和创建监控仪表盘,展示了如何通过Prometheus抓取数据并利用Grafana展示容器的CPU使用率等关键指标。
1012 1
|
XML JSON Java
SpringMVC详解(全网最全)
### SpringMVC 简介 SpringMVC 是 Spring 框架中的一个模块,用于构建 Web 应用的 MVC 架构。它提供了简洁、优雅的方式来处理 HTTP 请求和响应,支持前后端分离,优化用户体验。 #### 起源与发展 1. **三层架构**:早期的 Servlet 只能处理单一请求,耦合度高,复用性差,整页刷新影响用户体验。 2. **MVC 模式**:部分解耦业务逻辑与视图层,但后端仍负责 View 层,难以应对高并发。 3. **前后端分离**:通过异步调用实现解耦,增强复用性和交互体验。
1991 5
|
存储 数据可视化 网络协议
什么是ELK栈?如何与Spring Boot一起使用?
什么是ELK栈?如何与Spring Boot一起使用?
953 0
|
Prometheus 监控 前端开发
Grafana 安装配置教程,让你的 Prometheus 监控数据变得更美观
《Grafana安装配置教程,让你的Prometheus监控数据变得更美观》简介: Grafana是一个开源的度量分析与可视化工具,支持多种数据源(如Prometheus),提供丰富的可视化功能和警报机制。本文详细介绍了Grafana的安装、汉化方法及模板使用,帮助用户轻松创建美观、灵活的数据面板,并实现数据的协作与共享。通过Docker镜像、配置文件修改或替换前端页面等方式实现汉化,让用户更便捷地使用中文界面。此外,还提供了导入JSON格式模板的具体步骤,方便快速搭建仪表盘。
2837 2

热门文章

最新文章