3434import java .util .concurrent .ThreadFactory ;
3535import java .util .concurrent .TimeUnit ;
3636import java .util .stream .Stream ;
37+ import java .util .Objects ;
3738
3839import static io .micrometer .core .instrument .util .StringEscapeUtils .escapeJson ;
3940import static java .util .stream .Collectors .joining ;
@@ -160,29 +161,44 @@ private Stream<String> writeTimer(FunctionTimer timer, Map<String, DatadogMetric
160161 Meter .Id id = timer .getId ();
161162
162163 addToMetadataList (metadata , id , "count" , Statistic .COUNT , "occurrence" );
163- addToMetadataList (metadata , id , "avg" , Statistic .VALUE , null );
164+
165+ if (config .publishAverage ()) {
166+ addToMetadataList (metadata , id , "avg" , Statistic .VALUE , null );
167+ }
168+
164169 addToMetadataList (metadata , id , "sum" , Statistic .TOTAL_TIME , null );
165170
166171 // we can't know anything about max and percentiles originating from a function
167172 // timer
168173 return Stream .of (writeMetric (id , "count" , wallTime , timer .count (), Statistic .COUNT , "occurrence" ),
169- writeMetric (id , "avg" , wallTime , timer .mean (getBaseTimeUnit ()), Statistic .VALUE , null ),
170- writeMetric (id , "sum" , wallTime , timer .totalTime (getBaseTimeUnit ()), Statistic .TOTAL_TIME , null ));
174+
175+ config .publishAverage ()
176+ ? writeMetric (id , "avg" , wallTime , timer .mean (getBaseTimeUnit ()), Statistic .VALUE , null ) : null ,
177+
178+ writeMetric (id , "sum" , wallTime , timer .totalTime (getBaseTimeUnit ()), Statistic .TOTAL_TIME , null ))
179+ // filter out null avg when disabled
180+ .filter (Objects ::nonNull );
171181 }
172182
173183 private Stream <String > writeTimer (Timer timer , Map <String , DatadogMetricMetadata > metadata ) {
174184 final long wallTime = clock .wallTime ();
175185 final Stream .Builder <String > metrics = Stream .builder ();
176186
177187 Meter .Id id = timer .getId ();
178- metrics .add (writeMetric (id , "sum" , wallTime , timer .totalTime (getBaseTimeUnit ()), Statistic .TOTAL_TIME , null ));
179- metrics .add (writeMetric (id , "count" , wallTime , (double ) timer .count (), Statistic .COUNT , "occurrence" ));
180- metrics .add (writeMetric (id , "avg" , wallTime , timer .mean (getBaseTimeUnit ()), Statistic .VALUE , null ));
181- metrics .add (writeMetric (id , "max" , wallTime , timer .max (getBaseTimeUnit ()), Statistic .MAX , null ));
182188
189+ metrics .add (writeMetric (id , "sum" , wallTime , timer .totalTime (getBaseTimeUnit ()), Statistic .TOTAL_TIME , null ));
183190 addToMetadataList (metadata , id , "sum" , Statistic .TOTAL_TIME , null );
191+
192+ metrics .add (writeMetric (id , "count" , wallTime , (double ) timer .count (), Statistic .COUNT , "occurrence" ));
184193 addToMetadataList (metadata , id , "count" , Statistic .COUNT , "occurrence" );
185- addToMetadataList (metadata , id , "avg" , Statistic .VALUE , null );
194+
195+ // publish avg only when enabled
196+ if (config .publishAverage ()) {
197+ metrics .add (writeMetric (id , "avg" , wallTime , timer .mean (getBaseTimeUnit ()), Statistic .VALUE , null ));
198+ addToMetadataList (metadata , id , "avg" , Statistic .VALUE , null );
199+ }
200+
201+ metrics .add (writeMetric (id , "max" , wallTime , timer .max (getBaseTimeUnit ()), Statistic .MAX , null ));
186202 addToMetadataList (metadata , id , "max" , Statistic .MAX , null );
187203
188204 return metrics .build ();
@@ -193,14 +209,20 @@ private Stream<String> writeSummary(DistributionSummary summary, Map<String, Dat
193209 final Stream .Builder <String > metrics = Stream .builder ();
194210
195211 Meter .Id id = summary .getId ();
196- metrics .add (writeMetric (id , "sum" , wallTime , summary .totalAmount (), Statistic .TOTAL , null ));
197- metrics .add (writeMetric (id , "count" , wallTime , (double ) summary .count (), Statistic .COUNT , "occurrence" ));
198- metrics .add (writeMetric (id , "avg" , wallTime , summary .mean (), Statistic .VALUE , null ));
199- metrics .add (writeMetric (id , "max" , wallTime , summary .max (), Statistic .MAX , null ));
200212
213+ metrics .add (writeMetric (id , "sum" , wallTime , summary .totalAmount (), Statistic .TOTAL , null ));
201214 addToMetadataList (metadata , id , "sum" , Statistic .TOTAL , null );
215+
216+ metrics .add (writeMetric (id , "count" , wallTime , (double ) summary .count (), Statistic .COUNT , "occurrence" ));
202217 addToMetadataList (metadata , id , "count" , Statistic .COUNT , "occurrence" );
203- addToMetadataList (metadata , id , "avg" , Statistic .VALUE , null );
218+
219+ // avg (only when enabled)
220+ if (config .publishAverage ()) {
221+ metrics .add (writeMetric (id , "avg" , wallTime , summary .mean (), Statistic .VALUE , null ));
222+ addToMetadataList (metadata , id , "avg" , Statistic .VALUE , null );
223+ }
224+
225+ metrics .add (writeMetric (id , "max" , wallTime , summary .max (), Statistic .MAX , null ));
204226 addToMetadataList (metadata , id , "max" , Statistic .MAX , null );
205227
206228 return metrics .build ();
0 commit comments