Skip to content

Commit 4524adb

Browse files
Kuvaldiskdavisk6
andauthored
Support metric names customization (#1311)
Co-authored-by: Kevin Davis <kdavisk6@gmail.com>
1 parent 0193d6f commit 4524adb

File tree

6 files changed

+63
-9
lines changed

6 files changed

+63
-9
lines changed

micrometer/src/main/java/feign/micrometer/FeignMetricName.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,32 @@
2424
import java.util.Arrays;
2525
import java.util.List;
2626

27-
public final class FeignMetricName {
27+
public final class FeignMetricName implements MetricName {
2828

2929
private final Class<?> meteredComponent;
3030

3131
public FeignMetricName(Class<?> meteredComponent) {
3232
this.meteredComponent = meteredComponent;
3333
}
3434

35+
@Override
3536
public String name(String suffix) {
3637
return name()
3738
// any separator, so naming convention can change it
3839
+ "." + suffix;
3940
}
4041

42+
@Override
4143
public String name() {
4244
return meteredComponent.getName();
4345
}
4446

47+
@Override
4548
public Tags tag(MethodMetadata methodMetadata, Target<?> target, Tag... tags) {
4649
return tag(methodMetadata.targetType(), methodMetadata.method(), target.url(), tags);
4750
}
4851

52+
@Override
4953
public Tags tag(Class<?> targetType, Method method, String url, Tag... extraTags) {
5054
List<Tag> tags = new ArrayList<>();
5155
tags.add(Tag.of("client", targetType.getName()));

micrometer/src/main/java/feign/micrometer/MeteredClient.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,16 @@ public class MeteredClient implements Client {
2626

2727
private final Client client;
2828
private final MeterRegistry meterRegistry;
29-
private final FeignMetricName metricName;
29+
private final MetricName metricName;
3030

3131
public MeteredClient(Client client, MeterRegistry meterRegistry) {
32+
this(client, meterRegistry, new FeignMetricName(Client.class));
33+
}
34+
35+
public MeteredClient(Client client, MeterRegistry meterRegistry, MetricName metricName) {
3236
this.client = client;
3337
this.meterRegistry = meterRegistry;
34-
this.metricName = new FeignMetricName(Client.class);
38+
this.metricName = metricName;
3539
}
3640

3741
@Override

micrometer/src/main/java/feign/micrometer/MeteredDecoder.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,16 @@ public class MeteredDecoder implements Decoder {
2929

3030
private final Decoder decoder;
3131
private final MeterRegistry meterRegistry;
32-
private final FeignMetricName metricName;
32+
private final MetricName metricName;
3333

3434
public MeteredDecoder(Decoder decoder, MeterRegistry meterRegistry) {
35+
this(decoder, meterRegistry, new FeignMetricName(Decoder.class));
36+
}
37+
38+
public MeteredDecoder(Decoder decoder, MeterRegistry meterRegistry, MetricName metricName) {
3539
this.decoder = decoder;
3640
this.meterRegistry = meterRegistry;
37-
this.metricName = new FeignMetricName(Decoder.class);
41+
this.metricName = metricName;
3842
}
3943

4044
@Override

micrometer/src/main/java/feign/micrometer/MeteredEncoder.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,16 @@ public class MeteredEncoder implements Encoder {
2424

2525
private final Encoder encoder;
2626
private final MeterRegistry meterRegistry;
27-
private final FeignMetricName metricName;
27+
private final MetricName metricName;
2828

2929
public MeteredEncoder(Encoder encoder, MeterRegistry meterRegistry) {
30+
this(encoder, meterRegistry, new FeignMetricName(Encoder.class));
31+
}
32+
33+
public MeteredEncoder(Encoder encoder, MeterRegistry meterRegistry, MetricName metricName) {
3034
this.encoder = encoder;
3135
this.meterRegistry = meterRegistry;
32-
this.metricName = new FeignMetricName(Encoder.class);
36+
this.metricName = metricName;
3337
}
3438

3539
@Override

micrometer/src/main/java/feign/micrometer/MeteredInvocationHandleFactory.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,20 @@ public class MeteredInvocationHandleFactory implements InvocationHandlerFactory
4040

4141
private final MeterRegistry meterRegistry;
4242

43-
private final FeignMetricName metricName;
43+
private final MetricName metricName;
4444

4545
public MeteredInvocationHandleFactory(
4646
InvocationHandlerFactory invocationHandler, MeterRegistry meterRegistry) {
47+
this(invocationHandler, meterRegistry, new FeignMetricName(Feign.class));
48+
}
49+
50+
public MeteredInvocationHandleFactory(
51+
InvocationHandlerFactory invocationHandler,
52+
MeterRegistry meterRegistry,
53+
MetricName metricName) {
4754
this.invocationHandler = invocationHandler;
4855
this.meterRegistry = meterRegistry;
49-
this.metricName = new FeignMetricName(Feign.class);
56+
this.metricName = metricName;
5057
}
5158

5259
@Override
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* Copyright 2012-2020 The Feign Authors
3+
*
4+
* <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5+
* except in compliance with the License. You may obtain a copy of the License at
6+
*
7+
* <p>http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* <p>Unless required by applicable law or agreed to in writing, software distributed under the
10+
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
11+
* express or implied. See the License for the specific language governing permissions and
12+
* limitations under the License.
13+
*/
14+
package feign.micrometer;
15+
16+
import feign.MethodMetadata;
17+
import feign.Target;
18+
import io.micrometer.core.instrument.Tag;
19+
import io.micrometer.core.instrument.Tags;
20+
import java.lang.reflect.Method;
21+
22+
public interface MetricName {
23+
24+
String name();
25+
26+
String name(String suffix);
27+
28+
Tags tag(MethodMetadata methodMetadata, Target<?> target, Tag... tags);
29+
30+
Tags tag(Class<?> targetType, Method method, String url, Tag... extraTags);
31+
}

0 commit comments

Comments
 (0)