Skip to content

Commit

Permalink
executable
Browse files Browse the repository at this point in the history
  • Loading branch information
noear committed Aug 2, 2023
1 parent 999cf4d commit 434fd51
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,23 @@ public class CloudMetricServiceImpl implements CloudMetricService {
@Override
public void addCounter(String group, String category, String item, long increment) {
StringBuilder buf = new StringBuilder();
buf.append(group).append(".").append(category).append(".").append(item);
buf.append(group).append(":").append(category).append(":").append(item);

Metrics.counter(buf.toString()).increment(increment);
}

@Override
public void addTimer(String group, String category, String item, long record) {
StringBuilder buf = new StringBuilder();
buf.append(group).append(".").append(category).append(".").append(item);
buf.append(group).append(":").append(category).append(":").append(item);

Metrics.timer(buf.toString()).record(record, TimeUnit.MICROSECONDS);
}

@Override
public void addGauge(String group, String category, String item, long number) {
StringBuilder buf = new StringBuilder();
buf.append(group).append(".").append(category).append(".").append(item);
buf.append(group).append(":").append(category).append(":").append(item);

Metrics.gauge(buf.toString(), number);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Metrics;

import io.micrometer.core.instrument.Tag;
import org.noear.solon.Solon;
import org.noear.solon.Utils;
import org.noear.solon.cloud.CloudManager;
import org.noear.solon.cloud.metrics.annotation.MeterGauge;
import org.noear.solon.cloud.metrics.annotation.MeterSummary;
Expand All @@ -17,6 +19,9 @@
import org.noear.solon.core.AopContext;
import org.noear.solon.core.Plugin;

import java.util.ArrayList;
import java.util.List;


/**
* @author bai
Expand All @@ -25,25 +30,46 @@
public class XPluginImpl implements Plugin {
@Override
public void start(AopContext context) {
//增加注解支持
context.beanInterceptorAdd(MeterCounter.class, new MeterCounterInterceptor());
context.beanInterceptorAdd(MeterGauge.class, new MeterGaugeInterceptor());
context.beanInterceptorAdd(MeterSummary.class, new MeterSummaryInterceptor());
context.beanInterceptorAdd(MeterTimer.class, new MeterTimerInterceptor());

//将 globalRegistry 转到容器(提供注入)
context.wrapAndPut(MeterRegistry.class, Metrics.globalRegistry);

//订阅 MeterRegistry
context.subBeansOfType(MeterRegistry.class, bean -> {
if (bean != Metrics.globalRegistry) {
Metrics.addRegistry(bean);
}
});

Metrics.globalRegistry.config()
.commonTags(
"solon.app.name", Solon.cfg().appName(),
"solon.app.group", Solon.cfg().appGroup(),
"solon.app.nameSpace", Solon.cfg().appNamespace());
//初始化公共标签
meterCommonTagsInit();

//注册 CloudMetricService 适配器
CloudManager.register(new CloudMetricServiceImpl());
}

private void meterCommonTagsInit() {
List<Tag> commonTags = new ArrayList<>();
if (Utils.isNotEmpty(Solon.cfg().appName())) {
commonTags.add(Tag.of("solon.app.name", Solon.cfg().appName()));
}

if (Utils.isNotEmpty(Solon.cfg().appGroup())) {
commonTags.add(Tag.of("solon.app.group", Solon.cfg().appGroup()));
}

if (Utils.isNotEmpty(Solon.cfg().appNamespace())) {
commonTags.add(Tag.of("solon.app.nameSpace", Solon.cfg().appNamespace()));
}

if (commonTags.size() > 0) {
Metrics.globalRegistry.config()
.commonTags(commonTags);
}
}
}

0 comments on commit 434fd51

Please sign in to comment.