package com.trendmicro.tme.portal;
import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExchangeMetricArchiver {
private static final Logger logger = LoggerFactory.getLogger(ExchangeMetricArchiver.class);
private ProcessBuilder processBuilder;
private long lastArchiveTimestamp = 0;
private long intervalMillis;
public ExchangeMetricArchiver(String rrddir, String maxRecords, int intervalSec) {
processBuilder = new ProcessBuilder(new String[] {
"/opt/trend/tme/bin/archive_metrics.sh", rrddir, maxRecords
});
processBuilder.redirectErrorStream(true);
intervalMillis = intervalSec * 1000;
}
public void execute() {
long currentTimestamp = System.currentTimeMillis();
if(currentTimestamp - lastArchiveTimestamp < intervalMillis) {
return;
}
lastArchiveTimestamp = currentTimestamp;
try {
Process process = processBuilder.start();
String output = IOUtils.toString(process.getInputStream());
if(process.waitFor() != 0) {
logger.error("error executing archive script: {}", output);
}
process.destroy();
}
catch(IOException e) {
logger.error(e.getMessage(), e);
}
catch(InterruptedException e) {
logger.error(e.getMessage(), e);
}
}
}