mirror of https://github.com/longtai-cn/hippo4j
commit
f496ceffbe
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.hippo4j.common.toolkit;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* File util;
|
||||
*/
|
||||
public class FileUtil {
|
||||
|
||||
@SneakyThrows
|
||||
public static String readUtf8String(String path) {
|
||||
String resultReadStr;
|
||||
ClassPathResource classPathResource = new ClassPathResource(path);
|
||||
try (
|
||||
InputStream inputStream = classPathResource.getInputStream();
|
||||
BufferedInputStream bis = new BufferedInputStream(inputStream);
|
||||
ByteArrayOutputStream buf = new ByteArrayOutputStream()) {
|
||||
int result = bis.read();
|
||||
while (result != -1) {
|
||||
buf.write((byte) result);
|
||||
result = bis.read();
|
||||
}
|
||||
resultReadStr = buf.toString("UTF-8");
|
||||
}
|
||||
return resultReadStr;
|
||||
}
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>cn.hippo4j</groupId>
|
||||
<artifactId>hippo4j-example</artifactId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<artifactId>hippo4j-spring-boot-starter-es-monitor-example</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.deploy.skip>true</maven.deploy.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>cn.hippo4j</groupId>
|
||||
<artifactId>hippo4j-example-core</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.hippo4j</groupId>
|
||||
<artifactId>hippo4j-core-spring-boot-starter</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat.embed</groupId>
|
||||
<artifactId>tomcat-embed-core</artifactId>
|
||||
<version>${tomcat-embed-core.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!--<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-tomcat</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>-->
|
||||
|
||||
<!--<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-undertow</artifactId>
|
||||
</dependency>-->
|
||||
|
||||
<!--<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-jetty</artifactId>
|
||||
</dependency>-->
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.hippo4j.example.es.monitor;
|
||||
|
||||
import cn.hippo4j.core.enable.EnableDynamicThreadPool;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@EnableDynamicThreadPool
|
||||
@SpringBootApplication(scanBasePackages = {"cn.hippo4j.example.core", "cn.hippo4j.monitor"})
|
||||
public class Hippo4JExampleEsMonitorApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Hippo4JExampleEsMonitorApplication.class, args);
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
server.port=8088
|
||||
|
||||
server.servlet.context-path=/example
|
||||
|
||||
spring.profiles.active=dev
|
||||
spring.application.name=dynamic-threadpool-example
|
||||
|
||||
es.thread-pool-state.host = ip1:port,ip2:port
|
||||
es.thread-pool-state.scheme = http
|
||||
es.thread-pool-state.userName = xxx
|
||||
es.thread-pool-state.password = xxx
|
||||
es.thread-pool-state.index.name = thread-pool-state
|
||||
|
||||
spring.dynamic.thread-pool.item-id=test
|
||||
spring.dynamic.thread-pool.enable=true
|
||||
spring.dynamic.thread-pool.banner=false
|
||||
spring.dynamic.thread-pool.collect=true
|
||||
spring.dynamic.thread-pool.collect-type=es
|
||||
spring.dynamic.thread-pool.notify-platforms[0].platform=DING
|
||||
spring.dynamic.thread-pool.notify-platforms[0].token=xxx
|
||||
spring.dynamic.thread-pool.notify-platforms[0].secret=xxx
|
||||
spring.dynamic.thread-pool.apollo.namespace=threadpool.yaml
|
||||
spring.dynamic.thread-pool.config-file-type=yaml
|
||||
spring.dynamic.thread-pool.alarm=true
|
||||
spring.dynamic.thread-pool.check-state-interval=3000
|
||||
spring.dynamic.thread-pool.capacity-alarm=80
|
||||
spring.dynamic.thread-pool.alarm-interval=8
|
||||
spring.dynamic.thread-pool.executors[0].thread-pool-id=message-consume
|
||||
spring.dynamic.thread-pool.executors[0].core-pool-size=32
|
||||
spring.dynamic.thread-pool.executors[0].maximum-pool-size=32
|
||||
spring.dynamic.thread-pool.executors[0].queue-capacity=999
|
||||
spring.dynamic.thread-pool.executors[0].execute-time-out=1500
|
||||
spring.dynamic.thread-pool.executors[0].blocking-queue=ResizableCapacityLinkedBlockIngQueue
|
||||
spring.dynamic.thread-pool.executors[0].rejected-handler=CallerRunsPolicy
|
||||
spring.dynamic.thread-pool.executors[0].keep-alive-time=1024
|
||||
spring.dynamic.thread-pool.executors[0].allow-core-thread-time-out=true
|
||||
spring.dynamic.thread-pool.executors[0].thread-name-prefix=untimely-thread-pool
|
||||
spring.dynamic.thread-pool.executors[0].notify.is-alarm=true
|
||||
spring.dynamic.thread-pool.executors[0].notify.capacity-alarm=20
|
||||
spring.dynamic.thread-pool.executors[0].notify.interval=2
|
||||
spring.dynamic.thread-pool.executors[0].notify.receive=xxx
|
@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>cn.hippo4j</groupId>
|
||||
<artifactId>hippo4j-monitor</artifactId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<artifactId>hippo4j-monitor-es</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>cn.hippo4j</groupId>
|
||||
<artifactId>hippo4j-monitor-base</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.micrometer</groupId>
|
||||
<artifactId>micrometer-core</artifactId>
|
||||
<version>${micrometer-core.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.elasticsearch</groupId>
|
||||
<artifactId>elasticsearch</artifactId>
|
||||
<version>${elasticsearch.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.elasticsearch.client</groupId>
|
||||
<artifactId>transport</artifactId>
|
||||
<version>${elasticsearch.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.elasticsearch.client</groupId>
|
||||
<artifactId>elasticsearch-rest-high-level-client</artifactId>
|
||||
<version>${elasticsearch.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<includes>
|
||||
<include>**/*.txt</include>
|
||||
<include>**/*.json</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifestEntries>
|
||||
<Implementation-Title>${project.artifactId}</Implementation-Title>
|
||||
<Implementation-Version>${project.version}</Implementation-Version>
|
||||
<Build-Time>${maven.build.timestamp}</Build-Time>
|
||||
<Built-By>chen.ma</Built-By>
|
||||
</manifestEntries>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<version>2.10.3</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -0,0 +1,149 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.hippo4j.monitor.es;
|
||||
|
||||
import cn.hippo4j.common.config.ApplicationContextHolder;
|
||||
import cn.hippo4j.common.model.ThreadPoolRunStateInfo;
|
||||
import cn.hippo4j.common.toolkit.JSONUtil;
|
||||
import cn.hippo4j.core.executor.state.ThreadPoolRunStateHandler;
|
||||
import cn.hippo4j.monitor.es.model.EsThreadPoolRunStateInfo;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import com.example.monitor.base.AbstractDynamicThreadPoolMonitor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.elasticsearch.action.admin.indices.alias.Alias;
|
||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
||||
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
||||
import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
|
||||
import org.elasticsearch.action.index.IndexRequest;
|
||||
import org.elasticsearch.action.index.IndexResponse;
|
||||
import org.elasticsearch.client.RequestOptions;
|
||||
import org.elasticsearch.client.RestHighLevelClient;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.xcontent.XContentType;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
@Slf4j
|
||||
public class EsMonitorHandler extends AbstractDynamicThreadPoolMonitor {
|
||||
|
||||
public EsMonitorHandler(ThreadPoolRunStateHandler threadPoolRunStateHandler) {
|
||||
super(threadPoolRunStateHandler);
|
||||
}
|
||||
|
||||
private AtomicBoolean isIndexExist = null;
|
||||
|
||||
@Override
|
||||
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<String> 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);
|
||||
}
|
||||
|
||||
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) {
|
||||
log.error("es index error, the exception was thrown in create index. name:{},type:{},id:{}. {} ",
|
||||
indexName,
|
||||
"_doc",
|
||||
esThreadPoolRunStateInfo.getId(),
|
||||
ex);
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized boolean isExists(String index) {
|
||||
// cache check result
|
||||
if (Objects.isNull(isIndexExist)) {
|
||||
boolean exists = false;
|
||||
GetIndexRequest request = new GetIndexRequest();
|
||||
request.indices(index);
|
||||
try {
|
||||
RestHighLevelClient client = EsClientHolder.getClient();
|
||||
exists = client.indices().exists(request, RequestOptions.DEFAULT);
|
||||
} catch (IOException e) {
|
||||
log.error("check es index fail");
|
||||
}
|
||||
isIndexExist = new AtomicBoolean(exists);
|
||||
}
|
||||
return isIndexExist.get();
|
||||
}
|
||||
|
||||
public void createIndex(String index, String type, String mapping, Integer shards, Integer replicas, String alias) {
|
||||
RestHighLevelClient client = EsClientHolder.getClient();
|
||||
boolean acknowledged = false;
|
||||
CreateIndexRequest request = new CreateIndexRequest(index);
|
||||
if (StringUtils.hasText(mapping)) {
|
||||
request.mapping(type, mapping, XContentType.JSON);
|
||||
}
|
||||
if (!Objects.isNull(shards) && !Objects.isNull(replicas)) {
|
||||
request.settings(Settings.builder()
|
||||
.put("index.number_of_shards", shards) // 5
|
||||
.put("index.number_of_replicas", replicas));// 1
|
||||
}
|
||||
if (StringUtils.hasText(alias)) {
|
||||
request.alias(new Alias(alias));
|
||||
}
|
||||
try {
|
||||
CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
|
||||
acknowledged = createIndexResponse.isAcknowledged();
|
||||
} catch (IOException e) {
|
||||
log.error("create es index exception", e);
|
||||
}
|
||||
if (acknowledged) {
|
||||
log.info("create es index success");
|
||||
isIndexExist.set(true);
|
||||
} else {
|
||||
log.error("create es index fail");
|
||||
throw new RuntimeException("cannot auto create thread-pool state es index");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return "es";
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.hippo4j.monitor.es.model;
|
||||
|
||||
import cn.hippo4j.common.model.ThreadPoolRunStateInfo;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* Create by yuyang
|
||||
* 2022/8/4 17:17
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class EsThreadPoolRunStateInfo extends ThreadPoolRunStateInfo {
|
||||
|
||||
private String Id;
|
||||
|
||||
private String applicationName;
|
||||
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
{
|
||||
"_doc": {
|
||||
"properties": {
|
||||
"activeSize": {
|
||||
"type": "long"
|
||||
},
|
||||
"applicationName": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"clientLastRefreshTime": {
|
||||
"type": "text"
|
||||
},
|
||||
"completedTaskCount": {
|
||||
"type": "long"
|
||||
},
|
||||
"coreSize": {
|
||||
"type": "long"
|
||||
},
|
||||
"currentLoad": {
|
||||
"type": "text"
|
||||
},
|
||||
"freeMemory": {
|
||||
"type": "text"
|
||||
},
|
||||
"host": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"id": {
|
||||
"type": "text"
|
||||
},
|
||||
"largestPoolSize": {
|
||||
"type": "long"
|
||||
},
|
||||
"maximumSize": {
|
||||
"type": "long"
|
||||
},
|
||||
"memoryProportion": {
|
||||
"type": "text"
|
||||
},
|
||||
"peakLoad": {
|
||||
"type": "text"
|
||||
},
|
||||
"poolSize": {
|
||||
"type": "long"
|
||||
},
|
||||
"queueCapacity": {
|
||||
"type": "long"
|
||||
},
|
||||
"queueRemainingCapacity": {
|
||||
"type": "long"
|
||||
},
|
||||
"queueSize": {
|
||||
"type": "long"
|
||||
},
|
||||
"queueType": {
|
||||
"type": "text"
|
||||
},
|
||||
"rejectCount": {
|
||||
"type": "long"
|
||||
},
|
||||
"rejectedName": {
|
||||
"type": "text"
|
||||
},
|
||||
"simpleCurrentLoad": {
|
||||
"type": "long"
|
||||
},
|
||||
"simplePeakLoad": {
|
||||
"type": "long"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "date"
|
||||
},
|
||||
"tpId": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.hippo4j.core.springboot.starter.config.condition;
|
||||
|
||||
import cn.hippo4j.common.toolkit.StringUtil;
|
||||
import cn.hippo4j.core.springboot.starter.config.BootstrapCoreProperties;
|
||||
import com.example.monitor.base.MonitorTypeEnum;
|
||||
import org.springframework.context.annotation.Condition;
|
||||
import org.springframework.context.annotation.ConditionContext;
|
||||
import org.springframework.core.type.AnnotatedTypeMetadata;
|
||||
|
||||
/**
|
||||
* Prometheus monitor condition.
|
||||
*/
|
||||
public class EsMonitorCondition implements Condition {
|
||||
|
||||
@Override
|
||||
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
|
||||
String collectType = context.getEnvironment().getProperty(BootstrapCoreProperties.PREFIX + ".collect-type", "");
|
||||
return StringUtil.isNotEmpty(collectType) && collectType.contains(MonitorTypeEnum.ES.name().toLowerCase()) ? true : false;
|
||||
}
|
||||
}
|
Loading…
Reference in new issue