package org.datadog.jmxfetch.reporter;
import java.util.HashMap;
import java.util.LinkedList;
import org.datadog.jmxfetch.Instance;
import org.datadog.jmxfetch.JMXAttribute;
import com.google.common.base.Joiner;
public class ConsoleReporter extends Reporter {
private LinkedList<HashMap<String, Object>> metrics = new LinkedList<HashMap<String, Object>>();
private LinkedList<HashMap<String, Object>> serviceChecks = new LinkedList<HashMap<String, Object>>();
@Override
protected void sendMetricPoint(String metricType, String metricName, double value, String[] tags) {
String tagString = "[" + Joiner.on(",").join(tags) + "]";
System.out.println(metricName + tagString + " - " + System.currentTimeMillis() / 1000 + " = " + value);
HashMap<String, Object> m = new HashMap<String, Object>();
m.put("name", metricName);
m.put("value", value);
m.put("tags", tags);
m.put("type", metricType);
metrics.add(m);
}
public LinkedList<HashMap<String, Object>> getMetrics() {
LinkedList<HashMap<String, Object>> returnedMetrics = new LinkedList<HashMap<String, Object>>();
for (HashMap<String, Object> map : metrics) {
returnedMetrics.add(new HashMap<String, Object>(map));
}
metrics.clear();
return returnedMetrics;
}
public void doSendServiceCheck(String checkName, String status, String message, String[] tags) {
String tagString = "";
if (tags != null && tags.length > 0) {
tagString = "[" + Joiner.on(",").join(tags) + "]";
}
System.out.println(checkName + tagString + " - " + System.currentTimeMillis() / 1000 + " = " + status);
HashMap<String, Object> sc = new HashMap<String, Object>();
sc.put("name", checkName);
sc.put("status", status);
sc.put("message", message);
sc.put("tags", tags);
serviceChecks.add(sc);
}
public LinkedList<HashMap<String, Object>> getServiceChecks() {
LinkedList<HashMap<String, Object>> returnedServiceChecks = new LinkedList<HashMap<String, Object>>();
for (HashMap<String, Object> map : serviceChecks) {
returnedServiceChecks.add(new HashMap<String, Object>(map));
}
serviceChecks.clear();
return returnedServiceChecks;
}
@Override
public void displayMetricReached() {
System.out.println("\n\n\n ------- METRIC LIMIT REACHED: ATTRIBUTES BELOW WON'T BE COLLECTED -------\n\n\n");
}
@Override
public void displayMatchingAttributeName(JMXAttribute jmxAttribute, int rank, int limit) {
System.out.println(" Matching: " + rank + "/" + limit + ". " + jmxAttribute);
}
@Override
public void displayNonMatchingAttributeName(JMXAttribute jmxAttribute) {
System.out.println(" Not Matching: " + jmxAttribute);
}
@Override
public void displayInstanceName(Instance instance) {
System.out.println("\n#####################################");
System.out.println("Instance: " + instance);
System.out.println("#####################################\n");
}
}