准备工作
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
两台机器自动发现成功
发表评论