Prometheus+grafana监控nacos和spring-boot服务(增加自定义指标)(七)

前面记录了项目中常用的各种中间件的指标采集器的用法及搭建方式 ,

由于所有组件写一篇幅过长,所以每个组件分一篇方便查看,前六篇链接如下

Prometheus+grafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客

Prometheus+grafana环境搭建rabbitmq(docker+二进制两种方式安装)(二)-CSDN博客

Prometheus+grafana环境搭建mysql(docker+二进制两种方式安装)(三)-CSDN博客

Prometheus+grafana环境搭建redis(docker+二进制两种方式安装)(四)-CSDN博客

Prometheus+grafana环境搭建MongoDB(docker+二进制两种方式安装)(五)-CSDN博客

 Prometheus+grafana环境搭建Nginx(docker+二进制两种方式安装)(六)-CSDN博客

本次主要记录如何使用prometheus监控Java微服务和nacos,以及自己发布指标到promethus

1. 监控nacos

由于nacos注册中心,本身也是基于Java开发的所以这里就放在一起对比着进行配置,对应nacos的监控非常简单,Prometheus官网上并没有提供exporter。

nacos 官方文档

Nacos 监控手册 | Nacos

1.1 首先打开nacos的metrics接口

打开nacos 配置文件 vim application.properties

增加 nacos.prometheus.metrics.enabled=true

验证结果 访问192.168.3.111:8848/nacos/actuator/prometheus

 1.2 添加Prometheus监控
  - job_name: 'nacos-exporter'
    scrape_interval: 15s
    metrics_path: '/nacos/actuator/prometheus' ## 默认不写为metrics 对特殊的路径需要自己填写
    static_configs:
    - targets: ['192.168.3.111:8848']
      labels:
        instance: 111-nacos服务器

 重载配置 curl -X POST http://localhost:9090/-/reload

查看效果

1.3 配置grafana监控

导入模板参见Prometheus+grafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客

找到喜欢的模板id,13221

Dashboards | Grafana Labs

查看效果访问 http://192.168.3.112:3000/ 

2.监控spring-boot

对spring-boot的监控主要依赖于actuator组件

2.1 spring-boot引入依赖

1.引入actuator依赖,版本跟随spring-boot-starter-parent版本

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
 2.2 暴漏prometheu端点

修改application.yml文件,暴漏actuator 端点,

简单配置

management:
  endpoints:
    web:
      exposure:
        include: '*' ##actuator暴漏的端口 * 为所有端口,也可以按需开放


进阶配置
management:
  endpoints:
    web:
      exposure:
        include: '*' ##actuator暴漏的端口
      base-path: /actuator ## 默认 为 /
  endpoint:
    shutdown:
      enabled: true
    health:
      show-details: always
  metrics:
    tags:
      application: ${spring.application.name}
    export:
      prometheus:
        enabled: true # 是否启用prometheus
  server:
    port: 7005 #自定义actuator端口 默认为服务端口
2.3.启动服务测试
http://localhost:7005/actuator/prometheus

2.4 配置 Prometheus监控

追加配置 vim ../prometheus/prometheus.yml

  - job_name: 'springboot-exporter'
    scrape_interval: 15s
    metrics_path: '/actuator/prometheus'
    static_configs:
    - targets: ['192.168.3.112:7005']
      labels:
        instance: 112-spring-boot微服务

重载配置 curl -X POST http://localhost:9090/-/reload

查看结果 访问 192.168.3.112:9090

2.5 配置grafana监控

导入模板参见Prometheus+grafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客

找到喜欢的模板id,11378

Dashboards | Grafana Labs

查看效果访问 http://192.168.3.112:3000/ 

 

3. spring-boot 注册自定义指标

3.1 引入依赖

 引入依赖

  <!--         将指标转换成prometheus可使用的格式-->
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>

prometheus总共有四种数据类型,用于不同类型的数据

这里实现 Counter 类型,注册一个counter 当index方法发生调用是,count会记录调用次数

package com.legendyun.prometheus.controller;

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;

/**
 * @title: IndexController
 * @description: TODO
 * @auther: zhangjianyun
 * @date: 2024/3/11 17:13
 */
@RestController
@RequestMapping("/v1")
public class IndexController {

    @Autowired
    MeterRegistry registry;

    private Counter counter_core;
    private Counter counter_index;

    @PostConstruct
    private void init(){
        counter_core = registry.counter("app_requests_method_core", "method", "IndexController.core","legend-label","legend12333333");
        counter_index = registry.counter("app_requests_method_index", "method", "IndexController.index","legend-label","legend4566666");
    }

    @RequestMapping(value = "/index")
    public Object index(){
        try{
//            counter_index.increment();
            registry.counter("app_requests_method_index", "method", "IndexController.index","legend-label","legend4566666").increment();
            // 同名的数据类型再次注册只会有一个
        } catch (Exception e) {
            return e;
        }
        return counter_index.count() + " index of springboot2-prometheus.";
    }

    @RequestMapping(value = "/core")
    public Object coreUrl(){
        try{
//            counter_core.increment();
            // 可以根据标签进行过滤
            registry.get("app_requests_method_core").counter().increment();
        } catch (Exception e) {
            return e;
        }
        return counter_core.count() + " coreUrl Monitor by Prometheus.";
    }

}

完整代码和其他类型数据可以查看我的GitHub

GitHub - ObstinateCloud/prometheus-test: 读取Prometheus数据

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【3GPP】【核心网】核心网/蜂窝网络重点知识面试题二(超详细)

1. 欢迎大家订阅和关注&#xff0c;3GPP通信协议精讲&#xff08;2G/3G/4G/5G/IMS&#xff09;知识点&#xff0c;专栏会持续更新中.....敬请期待&#xff01; 目录 1. 对于主要的LTE核心网接口&#xff0c;给出运行在该接口上数据的协议栈&#xff0c;并给出协议特征 2. 通常…

电压继电器SRMUVS-220VAC-2H2D 导轨安装 JOSEF约瑟

系列型号&#xff1a; SRMUVS-58VAC-2H欠电压监视继电器&#xff1b;SRMUVS-100VAC-2H欠电压监视继电器&#xff1b; SRMUVS-110VAC-2H欠电压监视继电器&#xff1b;SRMUVS-220VAC-2H欠电压监视继电器&#xff1b; SRMUVS-58VAC-2H2D欠电压监视继电器&#xff1b;SRMUVS-100…

python爬虫 爬取网页图片

http://t.csdnimg.cn/iQgHw //爬虫爬取图片其实是很简单的&#xff0c;但是大多数同学&#xff0c;可能对 url的设置一直有困惑&#xff08;这点本人也在研究&#xff09;&#xff0c;而本篇文章&#xff0c;对于想要爬取图片的小白简直是福利。你只需要将文章代码运行即可&am…

自动化测试面试题及答案大全

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

【YOLOv9】完胜V8的SOTA模型Yolov9(论文阅读笔记)

官方论文地址: 论文地址点击即可跳转 官方代码地址: GitCode - 开发者的代码家园 官方代码地址点击即可跳转 1 总述 当输入数据经过各层的特征提取和变换的时候,都会丢失一定的信息。针对这一问题:

顺序表讲解

一.数据结构 在学习顺序表之前&#xff0c;我们先需要了解什么是数据结构。 1.什么是数据结构呢&#xff1f; 数据结构是由“数据”和结构两词组合而来。 什么是数据呢&#xff1f; 你的游戏账号&#xff0c;身份信息&#xff0c;网页里的信息&#xff08;文字&#xff0c…

onSaveInstanceState()与onRestoreInstanceState()

目录 1.二者作用 2.onSaveInstanceState调用时机 2.1 五种情况 前4种情况Activity生命周期&#xff1a; 2.2 注意事项&#xff1a;确定会被系统回收并销毁&#xff0c;不会调用此方法 两个例子 3.onRestoreInstanceState调用时机 3.1实例——屏幕切换生命周期 3.2 极端…

Python实现读取dxf文件的所有字符

Python实现读取dxf文件的所有字符 import ezdxfdef read_dxf_and_print_text(filename):# 加载DXF文件doc ezdxf.readfile(filename)# 遍历所有的实体for entity in doc.entities:# 检查实体是否是TEXT、MTEXT或DIMENSIONif isinstance(entity, ezdxf.entities.Text):print(f…

初识--数据结构

什么是数据结构&#xff1f;我们为什么要学习数据结构呢....一系列的问题就促使我们不得不了解数据结构。我们不禁要问了&#xff0c;学习C语言不就够了吗&#xff1f;为什么还要学习数据结构呢&#xff1f;这是因为&#xff1a;数据结构能够解决C语言解决不了的问题&#xff0…

Unity多线程简单示例

using UnityEngine; using System.Threading;public class texxxst : MonoBehaviour {Thread thread;void Start(){// 创建一个新的线程&#xff0c;并传入要执行的方法thread new Thread(new ThreadStart(DoWork));// 启动线程thread.Start();}void DoWork(){for (int i 0; …

数据降维方法-主成分分析(PCA)

目录 一、前言 二、向量的表示及基变换 三、基变换 四、协方差矩阵 五、协方差 六、优化目标 一、前言 主成分分析(Principal Component Analysis) 用途&#xff1a;降维中的常用手段 目标&#xff1a;提取最有价值的信息&#xff08;基于方差&#xff09; 问题&#x…

【项目精讲】RESTful简洁描述

RESTful是什么 是一种架构风格/API设计规范将一切数据视为资源利用HTTP请求方式 POST、GET、PUT、DELETE&#xff0c;描述对资源的操作 GET 获取资源POST 新建资源PUT 更新资源DELETE 删除资源 通过HTTP响应状态码&#xff0c;描述对资源的操作结果请求数据和英大数据均为JSO…

YOLOv8模型剪枝实战:DepGraph(依赖图)方法

课程链接&#xff1a;YOLOv8模型剪枝实战&#xff1a;DepGraph(依赖图)方法_在线视频教程-CSDN程序员研修院 YOLOv8是一个当前非常流行的目标检测器&#xff0c;本课程使用DepGraph&#xff08;依赖图&#xff09;剪枝方法对YOLOv8进行网络剪枝&#xff0c;使其更加轻量和实用…

SL4010 低压升压恒压芯片 2.7-24V输入 输出30V/10A 300W功率

SL4010是一款高效能、宽电压范围的低压升压恒压芯片&#xff0c;其卓越的性能和广泛的应用领域使其在市场上备受瞩目。该芯片支持2.7-24V的宽输入电压范围&#xff0c;能够提供稳定的30V/10A输出&#xff0c;最大输出功率高达300W&#xff0c;为各种电子设备提供稳定可靠的电源…

【动态规划-线性dp】【蓝桥杯备考训练】:乌龟棋、最长上升子序列、最长公共子序列、松散子序列、最大上升子序列和【已更新完成】

目录 1、乌龟棋 2、最长上升子序列 3、最长公共子序列 4、松散子序列 5、最大上升子序列和 1、乌龟棋 小明过生日的时候&#xff0c;爸爸送给他一副乌龟棋当作礼物。 乌龟棋的棋盘只有一行&#xff0c;该行有 N 个格子&#xff0c;每个格子上一个分数&#xff08;非负整…

【科研入门】搭建与配置云服务器的论文环境

如何搭建云服务器并且配置基础论文代码环境&#xff1f; 目录 如何搭建云服务器并且配置基础论文代码环境&#xff1f;前言一、租用服务器并选定基础配置具体建议 二、容器初始化三、项目的具体配置四、克隆五、常见问题 前言 此次环境配置以AutoDL为例(可以选用其他服务器租用…

PS入门|学PS一定要先知道图层这玩意儿

前言 开始学习PS的小伙伴肯定是会遇到很多问题&#xff0c;最常见的莫过于为啥我调整了某些参数之后&#xff0c;并没有任何作用。 这个就涉及到图层的问题了。 学PS一定要知道&#xff0c;图层面板怎么看。 正文开始 首先咱们讲的图层面板基本上是在PS里100%会用到的功能。…

jfinal项目操作数据库DB.find()空指针异常问题解决

排查ActiveRecordPlugin是否配置启动成功 查看项目的配置 里面这个别注释了 这样就能和数据库交互了

acwing总结-线性质数筛

质数筛 题目链接:质数筛线性筛法 ac代码&#xff1a; #include<iostream> #include<algorithm> //https://www.bilibili.com/video/BV1LR4y1Z7pm/?spm_id_from333.337.search-card.all.click&vd_source436ccbb3a8f50110aa75654f38e35672 //链接到b站视频 us…

c++ stringstream(老好用了)

前言&#xff1a; 以前没有接触过stringstream这个类的时候&#xff0c;常用的字符串和数字转换函数就是sscanf和sprintf函数。开始的时候就觉得这两个函数应经很叼了&#xff0c;但是毕竟是属于c的。c中引入了流的概念&#xff0c;通过流来实现字符串和数字的转换方便多了。在…