Commit f2b804b8 authored by 王亮's avatar 王亮

add ip and escape influxdb line data.

parent 62c1c0dd
......@@ -16,7 +16,7 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- <maven.test.skip>true</maven.test.skip>-->
<maven.javadoc.skip>true</maven.javadoc.skip>
<revision>2.6.3.1</revision>
<revision>2.6.3.2</revision>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<maven-source-plugin.version>3.2.1</maven-source-plugin.version>
<maven-javadoc-plugin.version>3.3.1</maven-javadoc-plugin.version>
......
......@@ -11,7 +11,7 @@
<packaging>pom</packaging>
<properties>
<revision>2.6.3.1</revision>
<revision>2.6.3.2</revision>
<spring-boot.version>2.6.3</spring-boot.version>
<spring-cloud.version>2021.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
......
......@@ -17,6 +17,10 @@
<artifactId>spring-boot</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
......
......@@ -14,6 +14,7 @@ import io.micrometer.core.instrument.util.DoubleFormat;
import io.micrometer.core.instrument.util.MeterPartition;
import io.micrometer.core.instrument.util.NamedThreadFactory;
import io.micrometer.core.instrument.util.StringUtils;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
......@@ -94,9 +95,10 @@ public class KafkaMeterRegistry extends StepMeterRegistry {
private String influxLineProtocol(Meter.Id id, String metricType, Stream<Field> fields) {
String tags = getConventionTags(id).stream()
.filter(t -> StringUtils.isNotBlank(t.getValue()))
.map(t -> "," + t.getKey() + "=" + t.getValue())
.map(t -> "," + escapeField(t.getKey()) + "=" + escapeField(t.getValue()))
.collect(joining(""));
Instant.now().getNano();
return getConventionName(id)
+ tags + ",metric_type=" + metricType + " "
+ fields.map(Field::toString).collect(joining(","))
......@@ -116,10 +118,9 @@ public class KafkaMeterRegistry extends StepMeterRegistry {
this.key = key;
this.value = value;
}
@Override
public String toString() {
return key + "=" + DoubleFormat.decimalOrNan(value);
return escapeField(key) + "=" + DoubleFormat.decimalOrNan(value);
}
}
......@@ -192,5 +193,10 @@ public class KafkaMeterRegistry extends StepMeterRegistry {
Meter.Id id = m.getId();
return Stream.of(influxLineProtocol(id, id.getType().name().toLowerCase(), fields.stream()));
}
private static String escapeField(String names){
return names.replace(" ","\\ ").replace(",","\\,");
}
}
package cn.quantgroup.boot.micrometer.register.kafka;
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.endpoint.NacosDiscoveryEndpoint;
import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.Tag;
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
......@@ -20,6 +23,9 @@ public class MicroMeterKafkaAutoConfiguration {
@Value("${spring.application.name}")
private String applicationName;
@Autowired
private NacosDiscoveryEndpoint nacosDiscoveryEndpoint;
public MicroMeterKafkaAutoConfiguration(
EnochAgentProperties enochAgentProperties) {
this.enochAgentProperties = enochAgentProperties;
......@@ -58,9 +64,12 @@ public class MicroMeterKafkaAutoConfiguration {
} else {
env = System.getProperty("NAMESPACE");
}
//通过nacos注册服务获取服务地址
String appName = ((NacosDiscoveryProperties)nacosDiscoveryEndpoint.nacosDiscovery().get("NacosDiscoveryProperties")).getService();
String ip = ((NacosDiscoveryProperties)nacosDiscoveryEndpoint.nacosDiscovery().get("NacosDiscoveryProperties")).getIp();
KafkaMeterRegistry kafkaMeterRegistry = new KafkaMeterRegistry(kafkaConfig, Clock.SYSTEM);
kafkaMeterRegistry.config().commonTags( Arrays.asList(
Tag.of("env", env), Tag.of("application",kafkaConfig.applicationName())));
Tag.of("env", env), Tag.of("application",appName),Tag.of("ip",ip)));
return kafkaMeterRegistry;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment