当前位置: 代码网 > it编程>编程语言>Java > springboot集成zookeeper实现prometheus自动发现

springboot集成zookeeper实现prometheus自动发现

2024年08月06日 Java 我要评论
prometheus集成zookeeper自动发现

准备工作
1、jdk环境安装
2、zookeeper环境安装
3、prometheus环境安装
大家自行百度安装

1、创建springboot项目,引入maven配置

prometheus访问/actuator/prometheus

 <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-web</artifactid>
        </dependency>
        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-actuator</artifactid>
        </dependency>
        <dependency>
            <groupid>org.apache.curator</groupid>
            <artifactid>curator-recipes</artifactid>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupid>io.micrometer</groupid>
            <artifactid>micrometer-registry-prometheus</artifactid>
            <!--<version>1.5.0</version>-->
        </dependency>
        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-actuator</artifactid>
        </dependency>

2、配置配置文件application.yml

端口号,服务名称自己自定义就行

server:
  port: 2222

spring:
  application:
    name: boot-pro




management:
  endpoints:
    web:
      exposure:
        include: "*"
  metrics:
    tags:
      application: ${spring.application.name}

3、创建zookeeper工具类

package com.wgl.data.util;

import org.apache.curator.retrypolicy;
import org.apache.curator.framework.curatorframework;
import org.apache.curator.framework.curatorframeworkfactory;
import org.apache.curator.retry.exponentialbackoffretry;
import org.apache.zookeeper.createmode;
import org.apache.zookeeper.data.stat;
import org.springframework.stereotype.component;

import java.util.list;
@component
public class zkclientutil {
    private static final int base_sleep_time_ms = 5000; //定义失败重试间隔时间 单位:毫秒
    private static final int max_retries = 3; //定义失败重试次数
    private static final int session_time_out = 5000000; //定义会话存活时间,根据业务灵活指定 单位:毫秒
    private static final string zk_uri = "127.0.0.1:2181";//zookeeper地址

    /**
     * 创建连接
     * @return
     */
    public static curatorframework build(){
        retrypolicy retrypolicy = new exponentialbackoffretry(base_sleep_time_ms,max_retries);
        curatorframework client = curatorframeworkfactory
                .builder()
                .connectstring(zk_uri)
                .retrypolicy(retrypolicy)
                .sessiontimeoutms(session_time_out)
                .build();
        return client;
    }

    /**
     * 创建节点
     */
    public static void create(final curatorframework client, final string path, string nodedata) throws exception {

        client.create().creatingparentsifneeded().forpath(path, nodedata.getbytes());

    }


 


    /**
     * 设置节点值
     */
    public static void setdata(final curatorframework client, final string path, string nodedata) throws exception {

        client.setdata().forpath(path, nodedata.getbytes());

    }


    /**
     * 删除节点
     */
    public static void delete(final curatorframework client, final string path) throws exception {

        client.delete().deletingchildrenifneeded().forpath(path);

    }
}

4、springboot启动类

我本地启动了两个项目,端口号分别是2222和3333,这里就占一个就行

@springbootapplication
public class mainapplication {


    public static void main(string[] args) throws exception {
        configurableapplicationcontext context = springapplication.run(mainapplication.class, args);
        zkclientutil zk = context.getbean(zkclientutil.class);
        curatorframework build = zk.build();
        build.start();
        //创建节点
        //{\"serviceendpoint\": {\"host\": \"127.0.0.1\", \"port\": 2222}, \"additionalendpoints\": {}, \"status\": \"alive\"} 
        //一定要是这个顺序,不要想着json自己拼装顺序,不然行不通,具体得去看源码
        zk.delete(build,"/prometheus/monitoring/service1");
        zk.create(build,"/prometheus/monitoring/service1","");
        zk.setdata(build,"/prometheus/monitoring/service1","{\"serviceendpoint\": {\"host\": \"127.0.0.1\", \"port\": 2222}, \"additionalendpoints\": {}, \"status\": \"alive\"}");
        build.close();


    }
}

5、修改prometheus配置文件prometheus.yml

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
    - targets: ["localhost:9090"]
  - job_name: "springboot_prometheus" //自定义job名称
    scrape_interval: 5s
    metrics_path: '/actuator/prometheus' //采集的指标地址
    serverset_sd_configs:
      - servers: ['127.0.0.1:2181']  //zookeeper地址
        paths: ['/prometheus/monitoring']  //node path,自动发现

6、本地启动项目

访问localhost:2222/actuator/prometheus和localhost:3333/actuator/prometheus
查看zookeeper,我使用的工具是zooinspector
在这里插入图片描述
启动prometheus,查看localhost:9090
两台机器自动发现成功
在这里插入图片描述

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com