@Override protected void internalWrite(Server server, Query query, ImmutableList<Result> results) throws Exception { try(PrintWriter outputTempPrintWriter = new PrintWriter(this.outputTempFile, "UTF-8")) { List<String> typeNames = this.getTypeNames(); for (Result result : results) { log.debug(result.toString()); String s = resultSerializer.serialize(server, query, result); if (s != null) { outputTempPrintWriter.println(s); } } } assert(this.outputTempFile.renameTo(this.outputFile)); } }
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()); } }
@Override public void internalWrite(Server server, Query query, ImmutableList<Result> results) throws Exception { List<String> typeNames = this.getTypeNames(); for (Result result : results) { log.debug(result.toString()); String key = KeyUtils.getKeyString(server, query, result, typeNames, rootPrefix); if (isNotValidValue(result.getValue())) { log.debug("Skipping message key[{}] with value: {}.", key, result.getValue()); continue; } // These characters can mess with formatting. String line = STATSD_INVALID.matcher(key).replaceAll(this.replacementForInvalidChar) + computeActualValue(result.getValue()) + "|" + bucketType + "\n"; doSend(line.trim()); } }
@Override public void internalWrite(Server server, Query query, ImmutableList<Result> results) throws Exception { RrdDef def = getDatabaseTemplateSpec(); List<String> dsNames = getDsNames(def.getDsDefs()); Map<String, String> dataMap = new TreeMap<>(); // go over all the results and look for datasource names that map to // keys from the result values for (Result res : results) { log.debug(res.toString()); String key = getDataSourceName(getConcatedTypeNameValues(res.getTypeName()), res.getAttributeName(), res.getValuePath()); if (isNumeric(res.getValue())) { log.debug("Generated DataSource name:value: {} : {}", key, res.getValue()); if (dsNames.contains(key)) { dataMap.put(key, res.getValue().toString()); } } } doGenerate(results); if (!dataMap.keySet().isEmpty() && !dataMap.values().isEmpty()) { rrdToolUpdate(StringUtils.join(dataMap.keySet(), ':'), StringUtils.join(dataMap.values(), ':')); } else { log.error("Nothing was logged for query: " + query); } }
@Override protected void internalWrite(Server server, Query query, ImmutableList<Result> results) throws Exception { try(PrintWriter outputTempPrintWriter = new PrintWriter(this.outputTempFile, "UTF-8")) { List<String> typeNames = this.getTypeNames(); for (Result result : results) { log.debug(result.toString()); String s = resultSerializer.serialize(server, query, result); if (s != null) { outputTempPrintWriter.println(s); } } } assert(this.outputTempFile.renameTo(this.outputFile)); } }
@Override public void internalWrite(Server server, Query query, ImmutableList<Result> results) throws Exception { List<String> typeNames = this.getTypeNames(); for (Result result : results) { log.debug(result.toString()); String key = KeyUtils.getKeyString(server, query, result, typeNames, rootPrefix); if (isNotValidValue(result.getValue())) { log.debug("Skipping message key[{}] with value: {}.", key, result.getValue()); continue; } // These characters can mess with formatting. String line = STATSD_INVALID.matcher(key).replaceAll(this.replacementForInvalidChar) + computeActualValue(result.getValue()) + "|" + bucketType + "\n"; doSend(line.trim()); } }