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

news2024/12/24 8:45:51

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

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

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.coloradmin.cn/o/1583509.html

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

相关文章

[lesson16]类的真正形态

类的真正形态 类的关键字 struct在C语言中以及有了自己的含义&#xff0c;必须继续兼容 在C中提供了新的关键字class用于类的定义 class和struct的用法是完全相同的 在用struct定义类时&#xff0c;所有成员的默认访问级别为public 在用class定义类时&#xff0c;所有成员…

奇怪的电梯

题目描述&#xff1a; 思路&#xff1a; 见代码注释 AC代码&#xff1a; #include <bits/stdc.h> using namespace std; int n, A, B; int t[250]; //记录到达每层所用的最短时间 int a[250]; void dfs(int lou, int sum) {//lou是当前的楼层数&#xff0c;sum为当前按…

finalshell连接VM虚拟机报错,java,net.ConnectException: Connection timed out: connect

适用于&#xff0c;所有第三方连接虚拟机报错。 java,net.ConnectException: Connection timed out: connect Xshell啊什么的。 解决方法&#xff1a; 首先&#xff0c;我想确认一下是否已经安装了finalshell软件并且要连接的CentOS 7服务器已经设置好了。连接不上的问题有很…

nodejs实现TCP端口转发并截包的小工具

近期我正致力于开发一个基于 Go-CQHTTP 的 QQ 机器人应用程序项目&#xff0c;该项目现已成功实现了 Go-CQHTTP 的容器化部署&#xff0c;利用 Docker 技术确保其运行环境的一致性与便捷性。随着项目推进&#xff0c;接下来的工作重心转向部署配套的签名服务器&#xff08;qsig…

eNSP-抓包解析TCP三次握手和四次挥手的过程

一、环境搭建 1.设备连接 并 启动所有设备 2.服务器配置 3.客服端配置 二、抓包测试 1.打开抓包软件 2.客户端获取数据 三、抓包结果

【自控笔记】线性系统时域分析法

动态稳态性能 一阶系统 二阶系统 二阶系统单位阶跃 系统稳定性分析

PyQt介绍——QChart饼图图表

在PyQt5中&#xff0c;我们可以使用QChart模块来创建各种类型的图表&#xff0c;包括饼图。饼图是一种常用的数据可视化方式&#xff0c;用于展示不同类别在整体中的比例关系。 安装相关的库&#xff1a; 不包含在PyQt5里面&#xff0c;需要另外安装 pip install PyQtChart …

前端工程化理解 (2024 面试题)

最好介绍远古世界最好随性一点&#xff0c;不要太刻板 &#xff0c;不然像背书 什么是前端工程化&#xff1f; - 知乎 前端工程化的历史 互联网初期&#xff0c;09 年以前&#xff0c;页面只需要展示一些列表、表格、文章内容以及简单图片即可&#xff0c;其目的是为了传送信…

[C语言][数据结构][链表] 单链表的从零实现!

目录 零.必备知识 1.一级指针 && 二级指针 2. 节点的成员列表 a.数据 b.指向下一个节点的指针. 3. 动态内存空间的开辟 (malloc-calloc-realloc) 一.单链表的实现与销毁 1.1 节点的定义 1.2 单链表的尾插 1.3 单链表的头插 1.4 单链表的尾删 1.5 单链表的头删 1…

Harmony鸿蒙南向驱动开发-RTC

RTC&#xff08;real-time clock&#xff09;为操作系统中的实时时钟设备&#xff0c;为操作系统提供精准的实时时间和定时报警功能。当设备下电后&#xff0c;通过外置电池供电&#xff0c;RTC继续记录操作系统时间&#xff1b;设备上电后&#xff0c;RTC提供实时时钟给操作系…

第十四届蓝桥杯真题-平方差

考察(数学应用) 代码及其解析:90%数据 #include <iostream> using namespace std; int main() {int ans0;long long a,b;cin>>a>>b;for(int ia;i<b;i){if(i%21)ans;if(i%40)ans; }cout<<ans;return 0; }

一例简单的文件夹病毒的分析

概述 这是一个典型的文件夹病毒&#xff0c;使用xp时代的文件夹图标&#xff0c;通过可移动存储介质传播&#xff0c;会向http://fionades.com/ABIUS/setup.exe下载恶意载荷执行。 其病毒母体只是一个加载器&#xff0c;会在内存是解密加载一个反射型的dll&#xff0c;主要的…

uniapp - 微信小程序 - 使用uCharts的一些问题

文章目录 uniapp - 微信小程序 - 使用uCharts的一些问题一、开发者工具显示正常&#xff0c;真机调试统计图不随页面滚动二、数据过多开启滚动条&#xff0c;无法滑动滚动条三、饼图点击不显示提示窗/点击位置bug、多个同类型统计图点击不显示提示框问题四、 formatter 自定义 …

九州金榜|孩子叛逆期仇视父母怎么办?

孩子在成长到一段阶段就会出现叛逆&#xff0c;孩子出现了叛逆情绪&#xff0c;如果家长处理不好亲子关系&#xff0c;孩子很容易仇视父母&#xff0c;这对于家长来说是非常心痛的&#xff0c;在这个阶段的孩子对父母来说&#xff0c;具有一定挑战性&#xff0c;这也是引导孩子…

基于单片机电子指南针系统设计

**单片机设计介绍&#xff0c;基于单片机电子指南针系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机电子指南针系统设计概要主要涵盖了硬件设计、软件设计、磁场传感器选择、数据处理和显示等方面。以下是对该…

【MySQL数据库 | 第二十五篇】深入探讨MVCC底层原理

前言&#xff1a; 在当今互联网时代&#xff0c;数据库扮演着数据存储和管理的关键角色。对于大型Web应用程序和企业级系统而言&#xff0c;高效地处理并发访问和事务管理是至关重要的。多版本并发控制&#xff08;MVCC&#xff09;是一种数据库事务处理的技术&#xff0c;旨…

【数据结构练习题】队——1.用队实现栈2.用栈实现队

♥♥♥♥♥个人主页♥♥♥♥♥ ♥♥♥♥♥数据结构练习题总结专栏♥♥♥♥♥ ♥♥♥♥♥上一章&#xff1a;堆的练习题♥♥♥♥♥ 文章目录 1.用队去实现栈1.1问题描述1.2思路分析1.3绘图分析1.4代码实现2.用栈实现队2.1问题描述2.2思路分析1.3绘图分析2.4代码实现 1.用队去实现…

doss攻击为什么是无解的?

这个让Google、亚马逊等实力巨头公司也无法避免的攻击。可以这么说&#xff0c;是目前最强大、最难防御的攻击之一&#xff0c;属于世界级难题&#xff0c;并且没有解决办法。 Doss攻击的原理不复杂&#xff0c;就是利用大量肉鸡仿照真实用户行为&#xff0c;使目标服务器资源…

【漏洞复现】WordPress Welcart 任意文件读取漏洞(CVE-2022-4140)

0x01 产品简介 Welcart 是一款免费的 WordPress 电子商务插件。Welcart 具有许多用于制作在线商店的功能和自定义设置。您可以轻松创建自己的原始在线商店。 0x02 漏洞概述 Welcart存在任意文件读取漏洞&#xff0c;未授权的攻击者可以通过该漏洞读取任意文件&#xff0c;获…

【无标题】系统思考—心智模式

“直到你使无意识变为有意识&#xff0c;它将指导你的生活并且你会称之为命运。”—卡尔荣格 心智模式深藏于我们内心之中&#xff0c;它潜移默化地影响着我们对世界的理解和判断。往往这些影响是如此隐蔽&#xff0c;以至于我们自己都未必察觉到是什么在驱动我们的选择、决策…