use of fish.payara.microprofile.metrics.MetricsService in project Payara by payara.
the class MetricsResource method processRequest.
/**
* Processes requests for both HTTP <code>GET</code> and <code>OPTIONS</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MetricsService metricsService = Globals.getDefaultBaseServiceLocator().getService(MetricsService.class);
if (!metricsService.isMetricsEnabled()) {
response.sendError(SC_FORBIDDEN, "MP Metrics is disabled");
return;
}
if (!request.isSecure() && metricsService.isMetricsSecure()) {
response.sendError(SC_FORBIDDEN, "MP Metrics security is enabled");
return;
}
MetricsRequest metricsRequest = new MetricsRequest(request);
try {
if (metricsRequest.isRegistryRequested() && !REGISTRY_NAMES.contains(metricsRequest.getRegistryName())) {
throw new NoSuchRegistryException(metricsRequest.getRegistryName());
}
MetricsWriter outputWriter = getOutputWriter(request, response);
if (outputWriter != null) {
setContentType(outputWriter, response);
if (metricsRequest.isRegistryRequested() && metricsRequest.isMetricRequested()) {
outputWriter.write(metricsRequest.getRegistryName(), metricsRequest.getMetricName());
} else if (metricsRequest.isRegistryRequested()) {
outputWriter.write(metricsRequest.getRegistryName());
} else {
outputWriter.write();
}
}
} catch (NoSuchRegistryException ex) {
response.sendError(SC_NOT_FOUND, String.format("[%s] registry not found", metricsRequest.getRegistryName()));
} catch (NoSuchMetricException ex) {
response.sendError(SC_NOT_FOUND, String.format("[%s] metric not found", metricsRequest.getMetricName()));
}
}
use of fish.payara.microprofile.metrics.MetricsService in project Payara by payara.
the class MetricCDIExtension method registerCustomMetrics.
private void registerCustomMetrics(@Observes AfterDeploymentValidation adv, BeanManager manager) {
MetricsService metricsService = Globals.getDefaultBaseServiceLocator().getService(MetricsService.class);
MetricRegistry registry = metricsService.getOrAddRegistry(metricsService.getApplicationName());
MetricsHelper helper = getReference(manager, MetricsHelper.class);
for (Map.Entry<Producer<?>, AnnotatedMember<?>> entry : metrics.entrySet()) {
AnnotatedMember<?> annotatedMember = entry.getValue();
Producer<?> prod = entry.getKey();
if (hasInjectionPoints(annotatedMember)) {
continue;
}
Metadata metadata = helper.metadataOf(annotatedMember);
registry.register(metadata.getName(), (Metric) prod.produce(manager.createCreationalContext(null)), metadata);
}
metrics.clear();
}
use of fish.payara.microprofile.metrics.MetricsService in project Payara by payara.
the class MetricsInterceptor method constructorInvocation.
@AroundConstruct
private Object constructorInvocation(InvocationContext context) throws Exception {
Object target;
MetricsService metricsService = Globals.getDefaultBaseServiceLocator().getService(MetricsService.class);
if (metricsService.isMetricsEnabled()) {
Class<?> beanClass = bean.getBeanClass();
registerMetrics(beanClass, context.getConstructor(), context.getTarget());
target = context.proceed();
Class<?> type = beanClass;
do {
for (Method method : type.getDeclaredMethods()) {
if (!method.isSynthetic() && !Modifier.isPrivate(method.getModifiers())) {
registerMetrics(beanClass, method, context.getTarget());
}
}
type = type.getSuperclass();
} while (!Object.class.equals(type));
} else {
target = context.proceed();
}
return target;
}
Aggregations