20
20
import com .alipay .lookout .api .Metric ;
21
21
import com .alipay .lookout .api .info .Info ;
22
22
import com .alipay .lookout .common .log .LookoutLoggerFactory ;
23
+ import com .alipay .lookout .core .CommonTagsAccessor ;
23
24
import com .alipay .lookout .core .DefaultRegistry ;
24
25
import com .alipay .lookout .core .config .MetricConfig ;
25
26
import com .alipay .lookout .reg .prometheus .common .PromWriter ;
26
27
import com .alipay .lookout .reg .prometheus .exporter .ExporterServer ;
28
+ import com .alipay .lookout .remote .model .LookoutMeasurement ;
27
29
import com .sun .net .httpserver .HttpExchange ;
28
30
import com .sun .net .httpserver .HttpHandler ;
29
31
32
+ import org .apache .commons .lang3 .StringUtils ;
30
33
import org .slf4j .Logger ;
31
34
32
35
import java .io .Closeable ;
33
36
import java .io .IOException ;
34
37
import java .util .Iterator ;
38
+ import java .util .Map ;
39
+ import java .util .concurrent .ConcurrentHashMap ;
35
40
41
+ import static com .alipay .lookout .core .config .LookoutConfig .APP_NAME ;
36
42
import static com .alipay .lookout .core .config .LookoutConfig .DEFAULT_PROMETHEUS_EXPORTER_SERVER_PORT ;
37
43
import static com .alipay .lookout .core .config .LookoutConfig .LOOKOUT_PROMETHEUS_EXPORTER_SERVER_PORT ;
38
44
39
45
/**
40
46
* Created by [email protected] on 2018/5/10.
41
47
*/
42
- public class PrometheusRegistry extends DefaultRegistry implements Closeable {
43
- private static final Logger logger = LookoutLoggerFactory
44
- .getLogger (PrometheusRegistry .class );
45
- private final ExporterServer exporterServer ;
46
- private final PromWriter promWriter = new PromWriter ();
48
+ public class PrometheusRegistry extends DefaultRegistry implements Closeable , CommonTagsAccessor {
49
+ private static final Logger logger = LookoutLoggerFactory
50
+ .getLogger (PrometheusRegistry .class );
51
+ private final ExporterServer exporterServer ;
52
+ private final PromWriter promWriter = new PromWriter ();
53
+ private final Map <String , String > commonTags = new ConcurrentHashMap <String , String >();
47
54
48
55
public PrometheusRegistry (MetricConfig config ) {
49
56
this (Clock .SYSTEM , config );
@@ -53,6 +60,10 @@ public PrometheusRegistry(Clock clock, MetricConfig config) {
53
60
super (clock , config );
54
61
int serverPort = config .getInt (LOOKOUT_PROMETHEUS_EXPORTER_SERVER_PORT ,
55
62
DEFAULT_PROMETHEUS_EXPORTER_SERVER_PORT );
63
+ String appName = config .getString (APP_NAME );
64
+ if (StringUtils .isNotEmpty (appName )) {
65
+ setCommonTag ("app" , appName );
66
+ }
56
67
exporterServer = new ExporterServer (serverPort );
57
68
exporterServer .addMetricsQueryHandler (new HttpHandler () {
58
69
@ Override
@@ -87,7 +98,8 @@ private String getMetricsSnapshot(Iterator<Metric> metricIterator) {
87
98
if (metric instanceof Info ) {
88
99
continue ;
89
100
}
90
- sb .append (promWriter .printFromIndicator (metric .measure ()));
101
+ LookoutMeasurement measurement = LookoutMeasurement .from (metric , this );
102
+ sb .append (promWriter .printFromLookoutMeasurement (measurement ));
91
103
}
92
104
return sb .toString ();
93
105
}
@@ -98,4 +110,28 @@ public void close() throws IOException {
98
110
logger .info ("lookout client exporter is stopped." );
99
111
100
112
}
113
+
114
+ @ Override
115
+ public String getCommonTagValue (String name ) {
116
+ return commonTags .get (name );
117
+ }
118
+
119
+ @ Override
120
+ public void setCommonTag (String name , String value ) {
121
+ if (value == null ) {
122
+ commonTags .remove (name );
123
+ } else {
124
+ commonTags .put (name , value );
125
+ }
126
+ }
127
+
128
+ @ Override
129
+ public void removeCommonTag (String name ) {
130
+ commonTags .remove (name );
131
+ }
132
+
133
+ @ Override
134
+ public Map <String , String > commonTags () {
135
+ return commonTags ;
136
+ }
101
137
}
0 commit comments