SpringBoot应用监控SpringBoot+Prometheus+Grafana

  • 1. SpringBoot应用监控
    • 1.1 SpringBoot应用监控
    • 1.2 SpringBoot应用搭建
  • 2. Prometheus
    • 2.1 Prometheus简介
    • 2.2 Prometheus下载安装
    • 2.3 Prometheus配置
    • 2.4 Prometheus启动
    • 2.5 Prometheus验证
  • 3. Grafana
    • 3.1 Grafana简介
    • 3.2 Grafana下载安装
    • 3.3 Grafana启动
    • 3.4 Grafana测试验证

1. SpringBoot应用监控

1.1 SpringBoot应用监控

SpringBoot的应用监控方案比较多,SpringBoot+Prometheus+Grafana是目前比较常用的方案之一。

SpringBoot:系统应用。
Prometheus:用于数据采集。
Grafana:数据可视化及预警。

1.2 SpringBoot应用搭建

1.maven依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.7.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.jerry</groupId><artifactId>auto-monitor</artifactId><version>0.0.1-SNAPSHOT</version><name>auto-monitor</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--Spring Boot + Prometheus + Grafana--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>io.prometheus</groupId><artifactId>simpleclient_spring_boot</artifactId><version>0.8.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies></project>

注意:这里的SpringBoot版本是1.5.7.RELEASE,之所以不用最新的2.X是因为最新的simpleclient_spring_boot只支持1.5.X,不确定2.X版本的能否支持。

2.配置文件application.yml

spring:application:name: monitorserver:port: 8848# 安全检查
security:user:name: adminpassword: 123456basic:enabled: true# 安全路径列表,逗号分隔,此处只针对/admin路径进行认证path: /admin# 开启监控指标
management:context-path: /admin# actuator暴露接口使用的端口,为了和api接口使用的端口进行分离port: 8888security:enabled: trueroles: SUPERUSER

3.启动类增加注解

package com.jerry.monitor;import io.prometheus.client.spring.boot.EnablePrometheusEndpoint;
import io.prometheus.client.spring.boot.EnableSpringBootMetricsCollector;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 监控应用* Spring Boot + Prometheus + Grafana 打造可视化监控** @author zrj* @since 2022/4/26**/
@EnablePrometheusEndpoint
@SpringBootApplication
@EnableSpringBootMetricsCollector
public class AutoMonitorApplication {public static void main(String[] args) {SpringApplication.run(AutoMonitorApplication.class, args);}
}

4.代码实现
MonitorController

package com.jerry.monitor.controller;import com.jerry.monitor.entity.Response;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;/*** 监控控制器** @author zrj* @since 2022/4/26**/
@RestController
@RequestMapping("/monitor")
public class MonitorController {private static Map<String, Object> monitorMap = new ConcurrentHashMap<>();private static int monitorMapSize = 10000000;/*** 测试*/@GetMapping("/test")public Response<String> test() {System.out.println("【SpringBoot应用监控】测试成功!");return Response.success(null);}/*** 指标监控测试** @return String*/@GetMapping("/index")public Response<String> heapIndexTest() {System.out.println("获取监控指标,创建对象放入集合!开始执行!" + monitorMap.size() + "");for (int i = 0; i < monitorMapSize; i++) {monitorMap.put(i + "", new Object());}System.out.println("获取监控指标,创建对象放入集合!执行完成!" + monitorMap.size() + "");return Response.success(monitorMap.size() + "");}}

Response

package com.jerry.monitor.entity;import lombok.Data;
import org.springframework.stereotype.Component;/*** 响应对象** @author zrj* @since 2022/3/23**/
@Data
@Component
public class Response<T> {/*** 状态码*/private static String successCode = "200";private static String successMsg = "执行成功";private static String failCode = "500";private static String failMsg = "执行失败";/*** 提示消息*/private String message;/*** 状态码*/private String code;/*** 具体返回的数据*/private T data;public Response() {}private Response(String code, String msg) {this.message = msg;this.code = code;}private Response(String code, String message, T data) {this.message = message;this.code = code;this.data = data;}/*** 返回成功Response对象*/public static <T> Response<T> success(T data) {return new Response<>(successCode, successMsg, data);}public static <T> Response<T> success(String successMessage, T data) {return new Response<>(successCode, successMessage, data);}public static <T> Response<T> success(String code, String successMessage, T data) {return new Response<>(code, successMessage, data);}/*** 返回错误Response对象*/public static <T> Response<T> fail(String failMsg) {return new Response<>(failCode, failMsg);}public static <T> Response<T> fail(String failCode, String failMsg) {return new Response<>(failCode, failMsg);}public static <T> Response<T> fail(String failCode, String failMsg, T data) {return new Response<>(failCode, failMsg, data);}
}

5.验证测试
启动完毕,访问http://localhost:8888/admin/prometheus就可以看到服务暴露的那些监控指标了。
注意:由于开启了安全认证,所以访问这个URL的需要提示输入账号/密码,admin/123456,如果提示404请检查下你的请求地址是否正确,如果不设置management.context-path则默认地址是http://ip:port/prometheus

2. Prometheus

2.1 Prometheus简介

Prometheus 是一款基于时序数据库的开源监控告警系统。它受启发于Google的Brogmon监控系统,由工作在SoundCloud的前google员工在2012年创建,作为社区开源项目进行开发,并于 2015年正式发布。2016年,Prometheus正式加入Cloud Native Computing Foundation(CNCF)基金会的项目,成为受欢迎度仅次于Kubernetes 的项目。2017年底发布了基于全新存储层的2.0版本,能更好地与容器平台、云平台配合。Prometheus作为新一代的云原生监控系统,目前已经有超过650+位贡献者参与到Prometheus的研发工作上,并且超过120+项的第三方集成。

Prometheus:https://prometheus.io/

2.2 Prometheus下载安装

本文下载的是Windows版本prometheus-2.35.0.windows-amd64.zip。
Prometheus下载地址:https://prometheus.io/download/

2.3 Prometheus配置

解压后修改prometheus.yml文件,配置数据采集的目标信息。更多配置信息请查看官方文档。

scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.# - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'.# static_configs:# - targets: ['localhost:9090']- job_name: 'monitor-demo' scrape_interval: 5s # 刮取的时间间隔scrape_timeout: 5s  metrics_path: /admin/prometheusscheme: httpbasic_auth: #认证信息username: adminpassword: 1234 static_configs:- targets:- 127.0.0.1:8888  #此处填写 Spring Boot 应用的 IP + 端口号

2.4 Prometheus启动

启动Prometheus了,命令行输入

prometheus.exe --config.file=prometheus.yml

2.5 Prometheus验证

访问http://localhost:9090/targets,查看Spring Boot采集状态是否正常。

3. Grafana

3.1 Grafana简介

Grafana是一款开源的数据可视化工具,可用于数据监控统计分析以及预警功能。
Grafana:https://grafana.com/

3.2 Grafana下载安装

本文用到的是Windows版本grafana-6.3.3.windows-amd64.zip,6.3.3版本启动异常,缺少License.jwt文件,所以本文采用最新的grafana-enterprise-8.5.0.windows-amd64.zip。
下载地址:https://grafana.com/grafana/download

3.3 Grafana启动

解压后运行bin目录下的grafana-server.exe启动,游览器访问http://localhost:3000即可看到登录页面,默认账号密码是admin/admin。

3.4 Grafana测试验证

1.登录验证

2.设置数据源

3.创建Dashboard

4.填写采集的指标点
注意:这里的指标点不能随便填,必须是已有的可以在 Prometheus看到。
至此SpringBoot+Prometheus+Grafana集成完毕,Grafana展示的即为Prometheus从SpringBoot actuator搜集的监控指标数据。

SpringBoot应用监控SpringBoot+Prometheus+Grafana相关推荐

  1. k8s集群监控cadvisor+prometheus+grafana部署

    目录 1.新建命名空间monitor 2.部署 2.1部署cadvisor 2.2部署node_exporter 2.3部署prometheus 2.4部署rbac权限 2.5.部署 metrics ...

  2. 微服务实践之量度监控(micrometer,prometheus,grafana)-SpringCloud(2021.0.x)-5

    [版权申明] 非商业目的注明出处可自由转载 出自:shusheng007 文章目录 前言 概念 Prometheus(普罗米修斯) Grafana Micrometer 关键概念 Meter Mete ...

  3. 【RocketMQ】从零搭建一套RocketMQ监控(rocketmq-exporter + Prometheus + Grafana)

    文章目录 前言 部署rocketmq-exporter 安装Prometheus 安装Grafana 配置Grafana数据源 配置RocketMQ监控页面 前言 研究RocketMQ的同学都知道,R ...

  4. 全套生产环境监控报警系统(Prometheus+Grafana+alertmanager)

    一.什么是promethues? 由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB). 二.promethues为什么更适合云监控? 云原生使用容器和k8s环境作为运行基础,一个整 ...

  5. 监控宝 监控oracle,Prometheus Grafana之Oracle监控

    上节我分享Mysql监控的部署,小群里好奇宝宝们要求尽快分享Oracle的监控.故本节提前分享出Oracle的监控. 本文目录: 1. Exporter部署 2. Prometheus配置 3. Gr ...

  6. 机房ping监控 smokeping+prometheus+grafana(续) 自动获取各省省会可用IP

    一.前言 1.之前的文章中介绍了如何使用smokeping监控全国各省的网络情况:https://www.cnblogs.com/MrVolleyball/p/10062231.html 2.由于之前 ...

  7. 五分钟搭建基于 Prometheus + Grafana 实时监控系统

    文章目录 Prometheus + Grafana 实时监控系统 Prometheus + Grafana 实时监控系统 依赖镜像包 启动 node-exporter check 端口 node_ex ...

  8. 视频教程-Prometheus+Grafana搭建全方位的监控告警系统-Linux

    Prometheus+Grafana搭建全方位的监控告警系统 高级运维工程师.资深DevOps工程师,精通kubernetes容器编排工具,熟练使用linux操作系统,多年线上线下教学经验 韩先超 ¥ ...

  9. fabric运维监控:prometheus配置热更新

    在上一篇fabric运维监控:prometheus+grafana框架搭建中搭建了prometheus+grafana监控框架,但这里存在一个问题,所有监控job都提前写好在配置文件prometheu ...

最新文章

  1. bootstrap:按钮,下拉菜单
  2. 没听说过“羽毛球VR”计划?嗯?
  3. 七天来学习ASP.NET MVC (两)——ASP.NET MVC 数据传输
  4. 内网用户之间使用MSN Messenger快速传送文件的小窍门
  5. 看动画学算法之:平衡二叉搜索树AVL Tree
  6. .NET 6 全新指标 System.Diagnostics.Metrics 介绍
  7. java难学还是pythonnanxue_关于python:为什么numpy中的“ NaN”比“ -np.inf”更小?
  8. 送给程序员的 编程箴言
  9. 利用划分树求解整数区间内第K大的值
  10. 宜信开源|微服务任务调度平台SIA-TASK入手实践
  11. 职场 PUA 你知多少?
  12. 大型油烟机清洗机器人_餐饮业大型油烟机清洗的必要性,你知道吗?
  13. 徒手下载谷歌图书(google books)
  14. 上网日志留存_中国移动5G上网日志留存系统招标:最高投标总限价10亿元
  15. android data com.qzone,我手机是安卓系统的,Qzone里的FileCache文件夹中的文件是什么东西?...
  16. 魔百盒CM201-1,YS代工-免拆-线刷固件及教程
  17. Docker在蚂蚁金融云平台中的探索与实践
  18. 从零开始学springboot笔记(一)-Spring boot之Hello Word
  19. Ed2k协议背景介绍及eMule协议的整体架构
  20. 深入学习D3JS:d3-color

热门文章

  1. Cuckoo Filter
  2. 51单片机之电子钟设计
  3. #Reading Paper#STAM:A Spatiotemporal Aggregation Method for Graph Neural Network-based Recommendatio
  4. ABP Vnext 学习01-创建项目 并初始化Mysql数据库
  5. 各种机器学习开源项目精选TOP30
  6. 水银开关控制LED灯灯灭
  7. Mysql_DML数据修改语言
  8. 租房信息采集并做数据分析
  9. jsvmp-某乎_x-zes-96参数算法还原(手把手教学)
  10. 任务1、采用面向对象方式求三角形面积