
org.swisspush.gateleen.monitoring.ResetMetrics Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gateleen-monitoring Show documentation
Show all versions of gateleen-monitoring Show documentation
Middleware library based on Vert.x to build advanced JSON/REST communication servers
The newest version!
package org.swisspush.gateleen.monitoring;
import io.vertx.core.AsyncResult;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.eventbus.Message;
import io.vertx.core.json.JsonObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.swisspush.gateleen.core.util.Address;
import org.swisspush.gateleen.core.util.RedisUtils;
/**
* Implementation of the ResetMetricsMBean using the vertx eventbus
*
* @author https://github.com/mcweba [Marc-Andre Weber]
*/
public class ResetMetrics implements ResetMetricsMBean {
private Vertx vertx;
private String prefix;
private static Logger log = LoggerFactory.getLogger(ResetMetrics.class);
public ResetMetrics(Vertx vertx, String prefix){
this.vertx = vertx;
this.prefix = prefix;
}
@Override
public void resetLastUsedQueueSizeInformation() {
removeMetric(prefix+MonitoringHandler.LAST_USED_QUEUE_SIZE_METRIC);
}
@Override
public void resetRequestsFromClientsToCrushCount() {
removeMetric(prefix+MonitoringHandler.REQUESTS_CLIENT_NAME);
}
@Override
public void resetRequestsFromCrushToBackendsCount() {
removeMetric(prefix+MonitoringHandler.REQUESTS_BACKENDS_NAME);
}
@Override public void resetMetricByName(String mBeanName) {
removeMetric(mBeanName);
}
private void removeMetric(final String metric){
log.debug("About to reset '" + metric + "' (triggered by an operation from MBean)");
vertx.eventBus().send(Address.monitoringAddress(), new JsonObject().put("name", metric).put("action", "remove"), new Handler>>() {
@Override
public void handle(AsyncResult> reply) {
if (!RedisUtils.STATUS_OK.equals(reply.result().body().getString(RedisUtils.REPLY_STATUS))) {
log.error("Removing value for metric '" + metric + "' resulted in status '" + reply.result().body().getString(RedisUtils.REPLY_STATUS) + "'. Message: " + reply.result().body().getString(RedisUtils.REPLY_MESSAGE));
} else {
log.debug("Value for metric '" + metric + "' successfully removed");
}
}
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy