NEZ-762 OLP_exporter程序开发:olp_exporter 首次提交
This commit is contained in:
110
src/main/java/com/nis/util/TextFormatUtils.java
Normal file
110
src/main/java/com/nis/util/TextFormatUtils.java
Normal file
@@ -0,0 +1,110 @@
|
||||
package com.nis.util;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.util.List;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.prometheus.client.Collector;
|
||||
import io.prometheus.client.Collector.MetricFamilySamples;
|
||||
|
||||
public class TextFormatUtils {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(TextFormatUtils.class);
|
||||
|
||||
public static void write004(Writer writer, List<MetricFamilySamples> mfs) {
|
||||
try {
|
||||
String enter = "\n";
|
||||
for(MetricFamilySamples mfSample:mfs) {
|
||||
Collector.MetricFamilySamples metricFamilySamples = mfSample;
|
||||
writer.write("# HELP ");
|
||||
writer.write(metricFamilySamples.name);
|
||||
writer.write(' ');
|
||||
writeEscapedHelp(writer, metricFamilySamples.help);
|
||||
writer.write(enter);
|
||||
|
||||
writer.write("# TYPE ");
|
||||
writer.write(metricFamilySamples.name);
|
||||
writer.write(' ');
|
||||
writer.write(typeString(metricFamilySamples.type));
|
||||
writer.write(enter);
|
||||
|
||||
for (Collector.MetricFamilySamples.Sample sample: metricFamilySamples.samples) {
|
||||
writer.write(sample.name);
|
||||
if (sample.labelNames.size() > 0) {
|
||||
writer.write('{');
|
||||
for (int i = 0; i < sample.labelNames.size(); ++i) {
|
||||
writer.write(sample.labelNames.get(i));
|
||||
writer.write("=\"");
|
||||
writeEscapedLabelValue(writer, sample.labelValues.get(i));
|
||||
writer.write("\",");
|
||||
}
|
||||
writer.write('}');
|
||||
}
|
||||
writer.write(' ');
|
||||
writer.write(Collector.doubleToGoString(sample.value));
|
||||
if (sample.timestampMs != null){
|
||||
writer.write(' ');
|
||||
writer.write(sample.timestampMs.toString());
|
||||
}
|
||||
writer.write(enter);
|
||||
}
|
||||
}
|
||||
}catch (Exception e) {
|
||||
logger.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private static void writeEscapedHelp(Writer writer, String s) throws IOException {
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
switch (c) {
|
||||
case '\\':
|
||||
writer.append("\\\\");
|
||||
break;
|
||||
case '\n':
|
||||
writer.append("\\n");
|
||||
break;
|
||||
default:
|
||||
writer.append(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String typeString(Collector.Type t) {
|
||||
switch (t) {
|
||||
case GAUGE:
|
||||
return "gauge";
|
||||
case COUNTER:
|
||||
return "counter";
|
||||
case SUMMARY:
|
||||
return "summary";
|
||||
case HISTOGRAM:
|
||||
return "histogram";
|
||||
default:
|
||||
return "untyped";
|
||||
}
|
||||
}
|
||||
|
||||
private static void writeEscapedLabelValue(Writer writer, String s) throws IOException {
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
switch (c) {
|
||||
case '\\':
|
||||
writer.append("\\\\");
|
||||
break;
|
||||
case '\"':
|
||||
writer.append("\\\"");
|
||||
break;
|
||||
case '\n':
|
||||
writer.append("\\n");
|
||||
break;
|
||||
default:
|
||||
writer.append(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user