springboot集成zookeeper实现prometheus自动发现

准备工作
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
两台机器自动发现成功
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值