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

news/2024/5/19 1:19:38 标签: prometheus, grafana, spring-boot, nacos

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

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

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数据


http://www.niftyadmin.cn/n/5471449.html

相关文章

Java数据结构栈

栈&#xff08;Stack&#xff09; 概念 栈是一种先进后出的数据结构。 栈的使用 import java.util.Stack; public class Test {public static void main(String[] args) {Stack<Integer> s new Stack();s.push(1);s.push(2);s.push(3);s.push(4);System.out.println(s…

关于地球内部猜想,火山和地震成因“之一”

地球内部是一个核反应堆&#xff0c;核反应堆向外释放能量。地面的火山和地震成因“之一”&#xff0c;太阳等能量可以通过辐射到达地球&#xff0c;南北极能量最强&#xff0c;因为磁场原因&#xff0c;地球上的四季是因为大气流动形成的&#xff0c;大气遵循涡流管的运动规律…

基于R语言绘制-散点小提琴图

原文链接&#xff1a;R语言绘图 | 散点小提琴图 本期教程 写在前面 本期的图形来自发表在Nature期刊中的文章&#xff0c;这样的基础图形在日常分析中使用频率较高。 获得本期教程数据及代码&#xff0c;后台回复关键词&#xff1a;20240405 绘图 设置路径 setwd("You…

mysql 常见数据处理 dml

学习完&#xff0c;mysql正则表达式查询&#xff0c;把常见的数据处理&#xff0c;做一个汇总&#xff0c;便于查看。 数据操纵语言&#xff08;Data Manipulation Language, DML&#xff09;。 1&#xff0c;新增数据&#xff1a; 1&#xff0c;单个插入&#xff1a; insert…

Python | Leetcode Python题解之第10题正则表达式匹配

题目&#xff1a; 题解&#xff1a; class Solution:def isMatch(self, s: str, p: str) -> bool:m, n len(s), len(p)dp [False] * (n1)# 初始化dp[0] Truefor j in range(1, n1):if p[j-1] *:dp[j] dp[j-2]# 状态更新for i in range(1, m1):dp2 [False] * (n1) …

ORCLE函数学习方法

1.字符串小代码转化为字符串值 如 &#xff08;10&#xff0c;20&#xff09;》 &#xff08;现金&#xff08;电汇&#xff09;,银行承兑汇票,现金&#xff08;电汇&#xff09;&#xff09; CREATE OR REPLACE FUNCTION FROM_ARRAYSTR_TO_STR(P1 in varchar2,P2 in varchar…

设计模式总结-桥接模式

桥接模式 模式动机模式定义模式结构模式分析桥接模式实例与解析实例一&#xff1a;模拟毛笔 模式优缺点 模式动机 设想如果要绘制矩形、圆形、椭圆、正方形&#xff0c;我们至少需要4个形状类&#xff0c;但是如果绘制的图形需要具有不同的颜色&#xff0c;如红色、绿色、蓝色…

题目 1833: 奇怪的数列

题目描述: 从X星截获一份电码&#xff0c;是一些数字&#xff0c;如下&#xff1a; 13 1113 3113 132113 1113122113 .... YY博士经彻夜研究&#xff0c;发现了规律&#xff1a; 第一行的数字随便是什么&#xff0c;以后每一行都是对上一行“读出来” 比如第2行&#xff0c;是…