private boolean isNotValidValue(Object value) { return !(isNumeric(value) || stringsValuesAsKey); }
public static boolean isValidNumber(Object value) { if (value == null) { return false; } if (value instanceof Number) { return isValidNumber((Number) value); } if (value instanceof String) { return isNumeric(value); } return false; }
@Override public void write( @Nonnull Writer writer, @Nonnull Server server, @Nonnull Query query, @Nonnull Iterable<Result> results) throws IOException { for (Result result : results) { log.debug("Query result: {}", result); Object value = result.getValue(); if (isValidNumber(value)) { String line = KeyUtils.getKeyString(server, query, result, typeNames, rootPrefix) .replaceAll("[()]", "_") + " " + value.toString() + " " + SECONDS.convert(result.getEpoch(), MILLISECONDS) + "\n"; log.debug("Graphite Message: {}", line); writer.write(line); } else { onlyOnceLogger.infoOnce("Unable to submit non-numeric value to Graphite: [{}] from result [{}]", value, result); } } } }
@Override public void internalWrite(Server server, Query query, ImmutableList<Result> results) throws Exception { Socket socket = null; PrintWriter writer = null; try { socket = pool.borrowObject(address); writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), UTF_8), true); List<String> typeNames = this.getTypeNames(); for (Result result : results) { log.debug("Query result: {}", result); Object value = result.getValue(); if (isValidNumber(value)) { String line = KeyUtils.getKeyString(server, query, result, typeNames, rootPrefix) .replaceAll("[()]", "_") + " " + value.toString() + " " + result.getEpoch() / 1000 + "\n"; log.debug("Graphite Message: {}", line); writer.write(line); } else { onlyOnceLogger.infoOnce("Unable to submit non-numeric value to Graphite: [{}] from result [{}]", value, result); } } } finally { if (writer != null && writer.checkError()) { log.error("Error writing to Graphite, clearing Graphite socket pool"); pool.invalidateObject(address, socket); } else { pool.returnObject(address, socket); } } }
private boolean isNotValidValue(Object value) { return !isNumeric(value); }
public static boolean isValidNumber(Object value) { if (value == null) { return false; } if (value instanceof Number) { return isValidNumber((Number) value); } if (value instanceof String) { return isNumeric(value); } return false; }
if (isValidNumber(value) || allowStringValues && value instanceof String) { filteredValues.put(key, value);
private boolean isNotValidValue(Object value){ return ! (isNumeric(value) || stringsValuesAsKey); }
@Override public void write( @Nonnull Writer writer, @Nonnull Server server, @Nonnull Query query, @Nonnull Iterable<Result> results) throws IOException { for (Result result : results) { log.debug("Query result: {}", result); Object value = result.getValue(); if (isValidNumber(value)) { String line = KeyUtils.getKeyString(server, query, result, typeNames, rootPrefix) .replaceAll("[()]", "_") + " " + value.toString() + " " + SECONDS.convert(result.getEpoch(), MILLISECONDS) + "\n"; log.debug("Graphite Message: {}", line); writer.write(line); } else { onlyOnceLogger.infoOnce("Unable to submit non-numeric value to Graphite: [{}] from result [{}]", value, result); } } } }
private String computeActualValue(Object value){ Object transformedValue = valueTransformer.apply(value); if(isNumeric(transformedValue)){ return ":" + transformedValue.toString(); } return "." + transformedValue.toString() + ":" + stringValueDefaultCount.toString(); }
@Override public void internalWrite(Server server, Query query, ImmutableList<Result> results) throws Exception { Socket socket = null; PrintWriter writer = null; try { socket = pool.borrowObject(address); writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), UTF_8), true); List<String> typeNames = this.getTypeNames(); for (Result result : results) { log.debug("Query result: {}", result); Object value = result.getValue(); if (isValidNumber(value)) { String line = KeyUtils.getKeyString(server, query, result, typeNames, rootPrefix) .replaceAll("[()]", "_") + " " + value.toString() + " " + result.getEpoch() / 1000 + "\n"; log.debug("Graphite Message: {}", line); writer.write(line); } else { onlyOnceLogger.infoOnce("Unable to submit non-numeric value to Graphite: [{}] from result [{}]", value, result); } } } finally { if (writer != null && writer.checkError()) { log.error("Error writing to Graphite, clearing Graphite socket pool"); pool.invalidateObject(address, socket); } else { pool.returnObject(address, socket); } } }
private String computeActualValue(Object value) { Object transformedValue = valueTransformer.apply(value); if (isNumeric(transformedValue)) { return ":" + transformedValue.toString(); } else if (transformedValue == null) { return ":"; } return "." + transformedValue.toString() + ":" + stringValueDefaultCount; } }
if (isValidNumber(value)) { String key = KeyUtils.getPrefixedKeyString(query, result, typeNames); filteredValues.put(key, value);
@Override public String serialize(Server server, Query query, Result result) { return isNumeric(result.getValue()) ? "" : null; } };
private Number computeActualValue(Object value) { Object transformedValue = valueTransformer.apply(value); if (isNumeric(transformedValue)) { return transformedValue instanceof Number ? (Number) transformedValue : Float.valueOf(transformedValue.toString()); } throw new IllegalArgumentException("Only numeric values are supported, enable debug log level for more details."); }
@Override public String serialize(Server server, Query query, Result result) throws IOException { log.debug("Query result: [{}]", result); Object value = result.getValue(); if (!isNumeric(value)) { log.warn("Unable to submit non-numeric value to Kafka: [{}] from result [{}]", value, result); return null; } return createJsonMessage(server, query, result, result.getValuePath(), value); }
private void serialize(Server server, Query query, List<Result> results, OutputStream outputStream) throws IOException { JsonGenerator g = jsonFactory.createGenerator(outputStream, JsonEncoding.UTF8); g.useDefaultPrettyPrinter(); g.writeStartObject(); g.writeStringField("name", "jmxtrans"); g.writeStringField("type", "metric"); g.writeStringField("handler", handler); StringBuilder jsonoutput = new StringBuilder(); List<String> typeNames = getTypeNames(); for (Result result : results) { if (isNumeric(result.getValue())) { Object value = result.getValue(); jsonoutput.append(KeyUtils.getKeyString(server, query, result, typeNames, null)).append(" ") .append(value).append(" ") .append(TimeUnit.SECONDS.convert(result.getEpoch(), TimeUnit.MILLISECONDS)) .append(System.getProperty("line.separator")); } } g.writeStringField("output", jsonoutput.toString()); g.writeEndObject(); g.flush(); g.close(); }
if (isNumeric(result.getValue())) { g.writeStartObject(); g.writeStringField("name", KeyUtils.getKeyString(query, result, typeNames));
List<String> typeNames = getTypeNames(); for (Result result : results) { if (isNumeric(result.getValue())) { g.writeStartObject(); g.writeStringField("name", KeyUtils.getKeyString(query, result, typeNames));
private void doGenerate(List<Result> results) throws Exception { if (isDebugEnabled() && generate) { StringBuilder sb = new StringBuilder("\n"); List<String> keys = new ArrayList<>(); for (Result res : results) { if (isNumeric(res.getValue())) { String key = getDataSourceName(getConcatedTypeNameValues(res.getTypeName()), res.getAttributeName(), res.getValuePath()); if (keys.contains(key)) { throw new Exception("Duplicate datasource name found: '" + key + "'. Please try to add more typeName keys to the writer to make the name more unique. " + res.toString()); } keys.add(key); sb.append("<datasource><!-- ").append(res.getTypeName()).append(":") .append(res.getAttributeName()).append(":").append(res.getValuePath()) .append(" --><name>").append(key) .append("</name><type>GAUGE</type><heartbeat>400</heartbeat><min>U</min><max>U</max></datasource>\n"); } } log.debug(sb.toString()); } }