diff --git a/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/EsClientHolder.java b/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/EsClientHolder.java index 0d67adb2..f21f5515 100644 --- a/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/EsClientHolder.java +++ b/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/EsClientHolder.java @@ -18,6 +18,7 @@ package cn.hippo4j.monitor.es; import cn.hippo4j.common.config.ApplicationContextHolder; +import cn.hippo4j.common.toolkit.StringUtil; import com.google.common.base.Throwables; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; @@ -27,7 +28,6 @@ import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.impl.client.BasicCredentialsProvider; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; -import org.elasticsearch.common.Strings; import org.springframework.core.env.Environment; import java.util.List; @@ -40,8 +40,11 @@ import java.util.List; public class EsClientHolder { private static String host; + private static String scheme; + private static String userName; + private static String password; private static RestHighLevelClient client; @@ -53,16 +56,13 @@ public class EsClientHolder { scheme = environment.getProperty("es.thread-pool-state.schema"); userName = environment.getProperty("es.thread-pool-state.userName"); password = environment.getProperty("es.thread-pool-state.password"); - List hosts = parseHosts(); - - if (Strings.isNullOrEmpty(userName) || Strings.isNullOrEmpty(password)) { + if (StringUtil.isNullOrEmpty(userName) || StringUtil.isNullOrEmpty(password)) { client = new RestHighLevelClient(RestClient.builder(hosts.toArray(new HttpHost[]{}))); } else { client = new RestHighLevelClient(RestClient.builder(hosts.toArray(new HttpHost[]{})) .setHttpClientConfigCallback(httpAsyncClientBuilder -> httpAsyncClientBuilder.setDefaultCredentialsProvider(getCredentialsProvider()))); } - log.info("[ES RestHighLevelClient] success to connect es!host:{},scheme:{}", host, scheme); return client; } catch (Exception ex) { @@ -72,7 +72,7 @@ public class EsClientHolder { } private static BasicCredentialsProvider getCredentialsProvider() { - if (!Strings.isNullOrEmpty(userName) && !Strings.isNullOrEmpty(password)) { + if (!StringUtil.isNullOrEmpty(userName) && !StringUtil.isNullOrEmpty(password)) { final BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password)); @@ -94,5 +94,4 @@ public class EsClientHolder { } return hosts; } - } diff --git a/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/EsMonitorHandler.java b/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/EsMonitorHandler.java index 1fe59eed..752612a3 100644 --- a/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/EsMonitorHandler.java +++ b/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/EsMonitorHandler.java @@ -59,18 +59,15 @@ public class EsMonitorHandler extends AbstractDynamicThreadPoolMonitor { protected void execute(ThreadPoolRunStateInfo poolRunStateInfo) { EsThreadPoolRunStateInfo esThreadPoolRunStateInfo = new EsThreadPoolRunStateInfo(); BeanUtil.copyProperties(poolRunStateInfo, esThreadPoolRunStateInfo); - Environment environment = ApplicationContextHolder.getInstance().getEnvironment(); String indexName = environment.getProperty("es.thread-pool-state.index.name", "thread-pool-state"); String applicationName = environment.getProperty("spring.application.name", "application"); - if (!this.isExists(indexName)) { List rawMapping = FileUtil.readLines(new File(Thread.currentThread().getContextClassLoader().getResource("mapping.json").getPath()), StandardCharsets.UTF_8); String mapping = String.join(" ", rawMapping); // if index doesn't exsit, this function may try to create one, but recommend to create index manually. this.createIndex(indexName, "_doc", mapping, null, null, null); } - esThreadPoolRunStateInfo.setApplicationName(applicationName); esThreadPoolRunStateInfo.setId(indexName + "-" + System.currentTimeMillis()); this.log2Es(esThreadPoolRunStateInfo, indexName); @@ -78,13 +75,11 @@ public class EsMonitorHandler extends AbstractDynamicThreadPoolMonitor { public void log2Es(EsThreadPoolRunStateInfo esThreadPoolRunStateInfo, String indexName) { RestHighLevelClient client = EsClientHolder.getClient(); - try { IndexRequest request = new IndexRequest(indexName, "_doc"); request.id(esThreadPoolRunStateInfo.getId()); String stateJson = JSONUtil.toJSONString(esThreadPoolRunStateInfo); request.source(stateJson, XContentType.JSON); - IndexResponse response = client.index(request, RequestOptions.DEFAULT); log.info("write thread-pool state to es, id is :{}", response.getId()); } catch (Exception ex) { diff --git a/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/model/EsThreadPoolRunStateInfo.java b/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/model/EsThreadPoolRunStateInfo.java index 3fc0deb7..9f1c268d 100644 --- a/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/model/EsThreadPoolRunStateInfo.java +++ b/hippo4j-monitor/hippo4j-monitor-es/src/main/java/cn/hippo4j/monitor/es/model/EsThreadPoolRunStateInfo.java @@ -32,5 +32,4 @@ public class EsThreadPoolRunStateInfo extends ThreadPoolRunStateInfo { private String Id; private String applicationName; - } diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/ReportingEventExecutor.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/ReportingEventExecutor.java index a97149ba..0bc16f71 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/ReportingEventExecutor.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/ReportingEventExecutor.java @@ -19,20 +19,20 @@ package cn.hippo4j.springboot.starter.monitor; import cn.hippo4j.common.config.ApplicationContextHolder; import cn.hippo4j.common.monitor.Message; +import cn.hippo4j.common.spi.DynamicThreadPoolServiceLoader; import cn.hippo4j.common.toolkit.CollectionUtil; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.common.toolkit.ThreadUtil; import cn.hippo4j.core.executor.manage.GlobalThreadPoolManage; import cn.hippo4j.core.executor.support.ThreadFactoryBuilder; -import cn.hippo4j.common.spi.DynamicThreadPoolServiceLoader; +import cn.hippo4j.monitor.base.DynamicThreadPoolMonitor; +import cn.hippo4j.monitor.base.MonitorTypeEnum; +import cn.hippo4j.monitor.base.ThreadPoolMonitor; import cn.hippo4j.springboot.starter.config.BootstrapProperties; import cn.hippo4j.springboot.starter.monitor.collect.Collector; import cn.hippo4j.springboot.starter.monitor.send.MessageSender; import cn.hippo4j.springboot.starter.remote.ServerHealthCheck; import cn.hutool.core.collection.CollUtil; -import cn.hippo4j.monitor.base.DynamicThreadPoolMonitor; -import cn.hippo4j.monitor.base.MonitorTypeEnum; -import cn.hippo4j.monitor.base.ThreadPoolMonitor; -import com.google.common.base.Strings; import com.google.common.collect.Lists; import lombok.NonNull; import lombok.RequiredArgsConstructor; @@ -41,7 +41,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.DisposableBean; import org.springframework.boot.CommandLineRunner; -import java.util.*; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ScheduledThreadPoolExecutor; @@ -108,7 +111,7 @@ public class ReportingEventExecutor implements Runnable, CommandLineRunner, Disp return; } threadPoolMonitors = Lists.newArrayList(); - String collectType = Optional.ofNullable(Strings.emptyToNull(properties.getCollectType())).orElse(MonitorTypeEnum.SERVER.name().toLowerCase()); + String collectType = Optional.ofNullable(StringUtil.emptyToNull(properties.getCollectType())).orElse(MonitorTypeEnum.SERVER.name().toLowerCase()); collectVesselExecutor = new ScheduledThreadPoolExecutor( new Integer(collectType.split(",").length), ThreadFactoryBuilder.builder().daemon(true).prefix("client.scheduled.collect.data").build());