Lines 44-50
Link Here
|
44 |
* @since 2.13 |
44 |
* @since 2.13 |
45 |
*/ |
45 |
*/ |
46 |
public class GraphiteBackendListenerClient extends AbstractBackendListenerClient implements Runnable { |
46 |
public class GraphiteBackendListenerClient extends AbstractBackendListenerClient implements Runnable { |
47 |
private static final int DEFAULT_PICKLE_PORT = 2004; |
47 |
private static final int DEFAULT_PLAINTEXT_PROTOCOL_PORT = 2003; |
48 |
private static final String CUMULATED_CONTEXT_NAME = "cumulated"; |
48 |
private static final String CUMULATED_CONTEXT_NAME = "cumulated"; |
49 |
|
49 |
|
50 |
private static final Logger LOGGER = LoggingManager.getLoggerForClass(); |
50 |
private static final Logger LOGGER = LoggingManager.getLoggerForClass(); |
Lines 76-82
Link Here
|
76 |
private Map<String, Float> percentiles; |
76 |
private Map<String, Float> percentiles; |
77 |
|
77 |
|
78 |
|
78 |
|
79 |
private GraphiteMetricsSender pickleMetricsManager; |
79 |
private GraphiteMetricsSender graphiteMetricsManager; |
80 |
|
80 |
|
81 |
private ScheduledExecutorService scheduler; |
81 |
private ScheduledExecutorService scheduler; |
82 |
private ScheduledFuture<?> timerHandle; |
82 |
private ScheduledFuture<?> timerHandle; |
Lines 108-138
Link Here
|
108 |
metric.resetForTimeInterval(); |
108 |
metric.resetForTimeInterval(); |
109 |
} |
109 |
} |
110 |
} |
110 |
} |
111 |
pickleMetricsManager.addMetric(timestampInSeconds, CUMULATED_CONTEXT_NAME, METRIC_MIN_ACTIVE_THREADS, Integer.toString(getUserMetrics().getMaxActiveThreads())); |
111 |
graphiteMetricsManager.addMetric(timestampInSeconds, CUMULATED_CONTEXT_NAME, METRIC_MIN_ACTIVE_THREADS, Integer.toString(getUserMetrics().getMaxActiveThreads())); |
112 |
pickleMetricsManager.addMetric(timestampInSeconds, CUMULATED_CONTEXT_NAME, METRIC_MAX_ACTIVE_THREADS, Integer.toString(getUserMetrics().getMinActiveThreads())); |
112 |
graphiteMetricsManager.addMetric(timestampInSeconds, CUMULATED_CONTEXT_NAME, METRIC_MAX_ACTIVE_THREADS, Integer.toString(getUserMetrics().getMinActiveThreads())); |
113 |
pickleMetricsManager.addMetric(timestampInSeconds, CUMULATED_CONTEXT_NAME, METRIC_MEAN_ACTIVE_THREADS, Integer.toString(getUserMetrics().getMeanActiveThreads())); |
113 |
graphiteMetricsManager.addMetric(timestampInSeconds, CUMULATED_CONTEXT_NAME, METRIC_MEAN_ACTIVE_THREADS, Integer.toString(getUserMetrics().getMeanActiveThreads())); |
114 |
pickleMetricsManager.addMetric(timestampInSeconds, CUMULATED_CONTEXT_NAME, METRIC_STARTED_THREADS, Integer.toString(getUserMetrics().getStartedThreads())); |
114 |
graphiteMetricsManager.addMetric(timestampInSeconds, CUMULATED_CONTEXT_NAME, METRIC_STARTED_THREADS, Integer.toString(getUserMetrics().getStartedThreads())); |
115 |
pickleMetricsManager.addMetric(timestampInSeconds, CUMULATED_CONTEXT_NAME, METRIC_STOPPED_THREADS, Integer.toString(getUserMetrics().getFinishedThreads())); |
115 |
graphiteMetricsManager.addMetric(timestampInSeconds, CUMULATED_CONTEXT_NAME, METRIC_STOPPED_THREADS, Integer.toString(getUserMetrics().getFinishedThreads())); |
116 |
|
116 |
|
117 |
pickleMetricsManager.writeAndSendMetrics(); |
117 |
graphiteMetricsManager.writeAndSendMetrics(); |
118 |
} |
118 |
} |
119 |
|
119 |
|
120 |
|
120 |
|
121 |
/** |
121 |
/** |
|
|
122 |
* Add request metrics to metrics manager. |
123 |
* Note if total number of requests is 0, no response time metrics are sent. |
122 |
* @param timestampInSeconds long |
124 |
* @param timestampInSeconds long |
123 |
* @param contextName String |
125 |
* @param contextName String |
124 |
* @param metric {@link SamplerMetric} |
126 |
* @param metric {@link SamplerMetric} |
125 |
*/ |
127 |
*/ |
126 |
private void addMetrics(long timestampInSeconds, String contextName, SamplerMetric metric) { |
128 |
private void addMetrics(long timestampInSeconds, String contextName, SamplerMetric metric) { |
127 |
pickleMetricsManager.addMetric(timestampInSeconds, contextName, METRIC_FAILED_REQUESTS, Integer.toString(metric.getFailures())); |
129 |
graphiteMetricsManager.addMetric(timestampInSeconds, contextName, METRIC_FAILED_REQUESTS, Integer.toString(metric.getFailures())); |
128 |
pickleMetricsManager.addMetric(timestampInSeconds, contextName, METRIC_SUCCESSFUL_REQUESTS, Integer.toString(metric.getSuccesses())); |
130 |
graphiteMetricsManager.addMetric(timestampInSeconds, contextName, METRIC_SUCCESSFUL_REQUESTS, Integer.toString(metric.getSuccesses())); |
129 |
pickleMetricsManager.addMetric(timestampInSeconds, contextName, METRIC_TOTAL_REQUESTS, Integer.toString(metric.getTotal())); |
131 |
graphiteMetricsManager.addMetric(timestampInSeconds, contextName, METRIC_TOTAL_REQUESTS, Integer.toString(metric.getTotal())); |
130 |
pickleMetricsManager.addMetric(timestampInSeconds, contextName, METRIC_MIN_RESPONSE_TIME, Double.toString(metric.getMinTime())); |
132 |
// See https://issues.apache.org/bugzilla/show_bug.cgi?id=57350 |
131 |
pickleMetricsManager.addMetric(timestampInSeconds, contextName, METRIC_MAX_RESPONSE_TIME, Double.toString(metric.getMaxTime())); |
133 |
if(metric.getTotal() > 0) { |
132 |
for (Map.Entry<String, Float> entry : percentiles.entrySet()) { |
134 |
graphiteMetricsManager.addMetric(timestampInSeconds, contextName, METRIC_MIN_RESPONSE_TIME, Double.toString(metric.getMinTime())); |
133 |
pickleMetricsManager.addMetric(timestampInSeconds, contextName, |
135 |
graphiteMetricsManager.addMetric(timestampInSeconds, contextName, METRIC_MAX_RESPONSE_TIME, Double.toString(metric.getMaxTime())); |
134 |
entry.getKey(), |
136 |
for (Map.Entry<String, Float> entry : percentiles.entrySet()) { |
135 |
Double.toString(metric.getPercentile(entry.getValue().floatValue()))); |
137 |
graphiteMetricsManager.addMetric(timestampInSeconds, contextName, |
|
|
138 |
entry.getKey(), |
139 |
Double.toString(metric.getPercentile(entry.getValue().floatValue()))); |
140 |
} |
136 |
} |
141 |
} |
137 |
} |
142 |
} |
138 |
|
143 |
|
Lines 171-177
Link Here
|
171 |
String graphiteMetricsSenderClass = context.getParameter("graphiteMetricsSender"); |
176 |
String graphiteMetricsSenderClass = context.getParameter("graphiteMetricsSender"); |
172 |
|
177 |
|
173 |
graphiteHost = context.getParameter("graphiteHost"); |
178 |
graphiteHost = context.getParameter("graphiteHost"); |
174 |
graphitePort = context.getIntParameter("graphitePort", DEFAULT_PICKLE_PORT); |
179 |
graphitePort = context.getIntParameter("graphitePort", DEFAULT_PLAINTEXT_PROTOCOL_PORT); |
175 |
summaryOnly = context.getBooleanParameter("summaryOnly", true); |
180 |
summaryOnly = context.getBooleanParameter("summaryOnly", true); |
176 |
samplersList = context.getParameter("samplersList", ""); |
181 |
samplersList = context.getParameter("samplersList", ""); |
177 |
rootMetricsPrefix = context.getParameter("rootMetricsPrefix", DEFAULT_METRICS_PREFIX); |
182 |
rootMetricsPrefix = context.getParameter("rootMetricsPrefix", DEFAULT_METRICS_PREFIX); |
Lines 192-199
Link Here
|
192 |
} |
197 |
} |
193 |
} |
198 |
} |
194 |
Class<?> clazz = Class.forName(graphiteMetricsSenderClass); |
199 |
Class<?> clazz = Class.forName(graphiteMetricsSenderClass); |
195 |
this.pickleMetricsManager = (GraphiteMetricsSender) clazz.newInstance(); |
200 |
this.graphiteMetricsManager = (GraphiteMetricsSender) clazz.newInstance(); |
196 |
pickleMetricsManager.setup(graphiteHost, graphitePort, rootMetricsPrefix); |
201 |
graphiteMetricsManager.setup(graphiteHost, graphitePort, rootMetricsPrefix); |
197 |
String[] samplers = samplersList.split(SEPARATOR); |
202 |
String[] samplers = samplersList.split(SEPARATOR); |
198 |
samplersToFilter = new HashSet<String>(); |
203 |
samplersToFilter = new HashSet<String>(); |
199 |
for (String samplerName : samplers) { |
204 |
for (String samplerName : samplers) { |
Lines 220-226
Link Here
|
220 |
sendMetrics(); |
225 |
sendMetrics(); |
221 |
|
226 |
|
222 |
samplersToFilter.clear(); |
227 |
samplersToFilter.clear(); |
223 |
pickleMetricsManager.destroy(); |
228 |
graphiteMetricsManager.destroy(); |
224 |
super.teardownTest(context); |
229 |
super.teardownTest(context); |
225 |
} |
230 |
} |
226 |
|
231 |
|
Lines 229-235
Link Here
|
229 |
Arguments arguments = new Arguments(); |
234 |
Arguments arguments = new Arguments(); |
230 |
arguments.addArgument("graphiteMetricsSender", TextGraphiteMetricsSender.class.getName()); |
235 |
arguments.addArgument("graphiteMetricsSender", TextGraphiteMetricsSender.class.getName()); |
231 |
arguments.addArgument("graphiteHost", ""); |
236 |
arguments.addArgument("graphiteHost", ""); |
232 |
arguments.addArgument("graphitePort", Integer.toString(DEFAULT_PICKLE_PORT)); |
237 |
arguments.addArgument("graphitePort", Integer.toString(DEFAULT_PLAINTEXT_PROTOCOL_PORT)); |
233 |
arguments.addArgument("rootMetricsPrefix", DEFAULT_METRICS_PREFIX); |
238 |
arguments.addArgument("rootMetricsPrefix", DEFAULT_METRICS_PREFIX); |
234 |
arguments.addArgument("summaryOnly", "true"); |
239 |
arguments.addArgument("summaryOnly", "true"); |
235 |
arguments.addArgument("samplersList", ""); |
240 |
arguments.addArgument("samplersList", ""); |