commit
						eee2ed8db0
					
				| @ -6,7 +6,7 @@ import java.util.Map; | |||||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| 
 | 
 | ||||||
| import org.baeldung.web.metric.IActuatorMetricService; | import org.baeldung.web.metric.ActuatorMetricService2; | ||||||
| import org.baeldung.web.metric.IMetricService; | import org.baeldung.web.metric.IMetricService; | ||||||
| import org.baeldung.web.util.LinkUtil; | import org.baeldung.web.util.LinkUtil; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| @ -25,7 +25,7 @@ public class RootController { | |||||||
|     private IMetricService metricService; |     private IMetricService metricService; | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private IActuatorMetricService actMetricService; |     private ActuatorMetricService2 actMetricService; | ||||||
| 
 | 
 | ||||||
|     public RootController() { |     public RootController() { | ||||||
|         super(); |         super(); | ||||||
|  | |||||||
| @ -0,0 +1,93 @@ | |||||||
|  | package org.baeldung.web.metric; | ||||||
|  | 
 | ||||||
|  | import java.text.SimpleDateFormat; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.boot.actuate.endpoint.MetricReaderPublicMetrics; | ||||||
|  | import org.springframework.boot.actuate.metrics.Metric; | ||||||
|  | import org.springframework.scheduling.annotation.Scheduled; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | 
 | ||||||
|  | @Service | ||||||
|  | public class ActuatorMetricService2 { | ||||||
|  | 
 | ||||||
|  |     @Autowired | ||||||
|  |     private MetricReaderPublicMetrics publicMetrics; | ||||||
|  | 
 | ||||||
|  |     private final List<ArrayList<Integer>> statusMetric; | ||||||
|  |     private final List<String> statusList; | ||||||
|  |     private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); | ||||||
|  | 
 | ||||||
|  |     public ActuatorMetricService2() { | ||||||
|  |         super(); | ||||||
|  |         statusMetric = new ArrayList<ArrayList<Integer>>(); | ||||||
|  |         statusList = new ArrayList<String>(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     public Object[][] getGraphData() { | ||||||
|  |         final Date current = new Date(); | ||||||
|  |         final int colCount = statusList.size() + 1; | ||||||
|  |         final int rowCount = statusMetric.size() + 1; | ||||||
|  |         final Object[][] result = new Object[rowCount][colCount]; | ||||||
|  |         result[0][0] = "Time"; | ||||||
|  |         int j = 1; | ||||||
|  |         for (final String status : statusList) { | ||||||
|  |             result[0][j] = status; | ||||||
|  |             j++; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         List<Integer> temp; | ||||||
|  |         List<Integer> last = new ArrayList<Integer>(); | ||||||
|  |         for (int i = 1; i < rowCount; i++) { | ||||||
|  |             temp = statusMetric.get(i - 1); | ||||||
|  |             result[i][0] = dateFormat.format(new Date(current.getTime() - (60000 * (rowCount - i)))); | ||||||
|  |             for (j = 1; j <= temp.size(); j++) { | ||||||
|  |                 System.out.println(last); | ||||||
|  |                 result[i][j] = temp.get(j - 1) - (last.size() >= j ? last.get(j - 1) : 0); | ||||||
|  |             } | ||||||
|  |             while (j < colCount) { | ||||||
|  |                 result[i][j] = 0; | ||||||
|  |                 j++; | ||||||
|  |             } | ||||||
|  |             last = temp; | ||||||
|  |         } | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Non - API | ||||||
|  | 
 | ||||||
|  |     @Scheduled(fixedDelay = 60000) | ||||||
|  |     private void exportMetrics() { | ||||||
|  |         final ArrayList<Integer> statusCount = new ArrayList<Integer>(); | ||||||
|  |         String status = ""; | ||||||
|  |         int index = -1; | ||||||
|  |         int old = 0; | ||||||
|  |         for (int i = 0; i < statusList.size(); i++) { | ||||||
|  |             statusCount.add(0); | ||||||
|  |         } | ||||||
|  |         for (final Metric<?> metric : publicMetrics.metrics()) { | ||||||
|  |             if (metric.getName().contains("counter.status.")) { | ||||||
|  |                 status = metric.getName().substring(15, 18); | ||||||
|  |                 if (!statusList.contains(status)) { | ||||||
|  |                     statusList.add(status); | ||||||
|  |                     statusCount.add(0); | ||||||
|  |                 } | ||||||
|  |                 System.out.println(statusList + " == " + statusCount); | ||||||
|  |                 index = statusList.indexOf(status); | ||||||
|  |                 old = statusCount.get(index) == null ? 0 : statusCount.get(index); | ||||||
|  |                 statusCount.set(index, metric.getValue().intValue() + old); | ||||||
|  |                 // metric.set(0); | ||||||
|  |                 // repo.reset(metric.getName()); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         statusMetric.add(statusCount); | ||||||
|  | 
 | ||||||
|  |         // for (final Metric<?> metric : publicMetrics.metrics()) { | ||||||
|  |         // System.out.println(metric.getName() + " = " + metric.getValue() + " = " + metric.getTimestamp()); | ||||||
|  |         // } | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user