diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..32868bd --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.classpath +.project diff --git a/promql_client/.settings/org.eclipse.core.resources.prefs b/promql_client/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..f9fe345 --- /dev/null +++ b/promql_client/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/promql_client/.settings/org.eclipse.jdt.core.prefs b/promql_client/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..abec6ca --- /dev/null +++ b/promql_client/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/promql_client/.settings/org.eclipse.m2e.core.prefs b/promql_client/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/promql_client/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/promql_client/pom.xml b/promql_client/pom.xml new file mode 100644 index 0000000..86624cf --- /dev/null +++ b/promql_client/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + + com.bdwise.prometheus.client + promql_client + 0.1-SNAPSHOT + jar + + promql_client + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + com.google.code.gson + gson + 2.8.1 + + + diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/builder/InstantQueryBuilder.java b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/InstantQueryBuilder.java new file mode 100644 index 0000000..22b2e04 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/InstantQueryBuilder.java @@ -0,0 +1,51 @@ +package com.bdwise.prometheus.client.builder; + +import java.net.URI; +import java.util.HashMap; +import java.util.Map; + + +public class InstantQueryBuilder implements QueryBuilder { + private static final String TARGET_URI_PATTERN_SUFFIX = "/api/v1/query?query=#{query}&time=#{time}&timeout=#{timeout}"; + + private static final String TIME_EPOCH_TIME = "time"; + private static final String TIMEOUT = "timeout"; + private static final String QUERY_STRING = "query"; + + + private String targetUriPattern; + private Map params = new HashMap(); + + public InstantQueryBuilder(String serverUrl) { + targetUriPattern = serverUrl+ TARGET_URI_PATTERN_SUFFIX; + params.put(TIMEOUT, ""); + params.put(TIME_EPOCH_TIME, ""); + } + + public InstantQueryBuilder withQuery(String query) { + params.put(QUERY_STRING, query); + return this; + } + + public InstantQueryBuilder withEpochTime(long time) { + params.put(TIME_EPOCH_TIME, time); + return this; + } + + + public InstantQueryBuilder withTimeout(String timeout) { + params.put(TIMEOUT, timeout); + return this; + } + + public URI build() { + return URI.create(Utils.namedFormat(targetUriPattern, params)); + } + + private boolean validate() { + return true; + } + + + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilder.java b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilder.java new file mode 100644 index 0000000..488fa96 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilder.java @@ -0,0 +1,5 @@ +package com.bdwise.prometheus.client.builder; + +public interface QueryBuilder { + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilderType.java b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilderType.java new file mode 100644 index 0000000..589fb8f --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilderType.java @@ -0,0 +1,44 @@ +package com.bdwise.prometheus.client.builder; + +public enum QueryBuilderType { + RangeQuery{ + + @SuppressWarnings("unchecked") + @Override + public RangeQueryBuilder newInstance(String prometheusUrl) { + return new RangeQueryBuilder(prometheusUrl); + } + + }, + InstantQuery{ + + @SuppressWarnings("unchecked") + @Override + public InstantQueryBuilder newInstance(String prometheusUrl) { + return new InstantQueryBuilder(prometheusUrl); + } + + }, + MetadaQuery{ + + @SuppressWarnings("unchecked") + @Override + public QueryBuilder newInstance(String prometheusUrl) { + // TODO Auto-generated method stub + return null; + } + + }, + TargetQuery{ + + @SuppressWarnings("unchecked") + @Override + public QueryBuilder newInstance(String prometheusUrl) { + // TODO Auto-generated method stub + return null; + } + + }; + + public abstract T newInstance(String prometheusUrl); +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/builder/RangeQueryBuilder.java b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/RangeQueryBuilder.java new file mode 100644 index 0000000..6c1c829 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/RangeQueryBuilder.java @@ -0,0 +1,54 @@ +package com.bdwise.prometheus.client.builder; + +import java.net.URI; +import java.util.HashMap; +import java.util.Map; + + +public class RangeQueryBuilder implements QueryBuilder { + private static final String TARGET_URI_PATTERN_SUFFIX = "/api/v1/query_range?query=#{query}&start=#{start}&end=#{end}&step=#{step}"; + + private static final String START_TIME_EPOCH_TIME = "start"; + private static final String END_TIME_EPOCH_TIME = "end"; + private static final String STEP_TIME = "step"; + private static final String QUERY_STRING = "query"; + + + private String targetUriPattern; + private Map params = new HashMap(); + + public RangeQueryBuilder(String serverUrl) { + targetUriPattern = serverUrl+ TARGET_URI_PATTERN_SUFFIX; + } + + public RangeQueryBuilder withQuery(String query) { + params.put(QUERY_STRING, query); + return this; + } + + public RangeQueryBuilder withStartEpochTime(long startTime) { + params.put(START_TIME_EPOCH_TIME, startTime); + return this; + } + + public RangeQueryBuilder withEndEpochTime(long endTime) { + params.put(END_TIME_EPOCH_TIME, endTime); + return this; + } + + public RangeQueryBuilder withStepTime(String step) { + params.put(STEP_TIME, step); + return this; + } + + public URI build() { + return URI.create(Utils.namedFormat(targetUriPattern, params)); + } + + private boolean validate() { + return true; + } + + + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/builder/Utils.java b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/Utils.java new file mode 100644 index 0000000..fb3fde8 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/Utils.java @@ -0,0 +1,25 @@ +package com.bdwise.prometheus.client.builder; + +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Utils { + private final static Pattern namedFormatPattern = Pattern.compile("#\\{(?.*?)}"); + public static String namedFormat(final String format, Map kvs) { + final StringBuffer buffer = new StringBuffer(); + final Matcher match = namedFormatPattern.matcher(format); + while (match.find()) { + final String key = match.group("key"); + final Object value = kvs.get(key); + if (value != null) + match.appendReplacement(buffer, value.toString()); + else if (kvs.containsKey(key)) + match.appendReplacement(buffer, "null"); + else + match.appendReplacement(buffer, ""); + } + match.appendTail(buffer); + return buffer.toString(); + } +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/ConvertUtil.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/ConvertUtil.java new file mode 100644 index 0000000..1cc4d59 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/ConvertUtil.java @@ -0,0 +1,70 @@ +package com.bdwise.prometheus.client.converter; + +import java.io.IOException; + +import com.bdwise.prometheus.client.converter.query.DefaultQueryResult; +import com.bdwise.prometheus.client.converter.query.QueryDataType; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + + +public abstract class ConvertUtil { + + + private static QueryDataType searchDataType(String typeString) { + for (QueryDataType each : QueryDataType.class.getEnumConstants()) { + if (each.name().compareToIgnoreCase(typeString) == 0) { + return each; + } + } + return null; + } + + @SuppressWarnings("unchecked") + public static DefaultQueryResult convertQueryResultString(String jsonString) { + Gson gson = new GsonBuilder().registerTypeAdapter(DefaultQueryResult.class, new TypeAdapter>() { + @Override + public DefaultQueryResult read(JsonReader reader) throws IOException { + DefaultQueryResult queryResult = new DefaultQueryResult(); + String status = null; + String resultType = null; + reader.beginObject(); + while(reader.hasNext()) { + String propertyName = reader.nextName(); + if("status".equals(propertyName)) { + status = reader.nextString(); + } else if("data".equals(propertyName)) { + reader.beginObject(); + while(reader.hasNext()) { + propertyName = reader.nextName(); + if("resultType".equals(propertyName)) { + resultType = reader.nextString(); + } else if("result".equals(propertyName)) { + System.out.println("resultType:"+ resultType); + reader.beginArray(); + while(reader.hasNext()) { + queryResult.addData((T) searchDataType(resultType).convert(reader)); + } + reader.endArray(); + } + } + reader.endObject(); + } + } + reader.endObject(); + queryResult.setStatus(status); + queryResult.setResultType(resultType); + return queryResult; + } + + @Override + public void write(JsonWriter arg0, DefaultQueryResult arg1) throws IOException { + } + }).create(); + return gson.fromJson(jsonString, DefaultQueryResult.class); + } + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Data.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Data.java new file mode 100644 index 0000000..c6ee5a2 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Data.java @@ -0,0 +1,5 @@ +package com.bdwise.prometheus.client.converter; + +public interface Data { + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Result.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Result.java new file mode 100644 index 0000000..228548a --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Result.java @@ -0,0 +1,22 @@ +package com.bdwise.prometheus.client.converter; + +import java.util.List; + +public abstract class Result{ + String status = null; + String resultType = null; + public String getStatus() { + return status; + } + public void setStatus(String status) { + this.status = status; + } + public String getResultType() { + return resultType; + } + public void setResultType(String resultType) { + this.resultType = resultType; + } + + public abstract List getResult(); +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.java new file mode 100644 index 0000000..3bcb0ca --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.java @@ -0,0 +1,24 @@ +package com.bdwise.prometheus.client.converter.query; + +import java.util.ArrayList; +import java.util.List; + +import com.bdwise.prometheus.client.converter.Data; +import com.bdwise.prometheus.client.converter.Result; + + +public class DefaultQueryResult extends Result{ + + List result = new ArrayList(); + public void addData(T data) { + result.add(data); + } + + @Override + public List getResult() { + return result; + } + + + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/MatrixData.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/MatrixData.java new file mode 100644 index 0000000..a947db4 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/MatrixData.java @@ -0,0 +1,72 @@ +package com.bdwise.prometheus.client.converter.query; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import com.bdwise.prometheus.client.converter.Data; + + + +public class MatrixData implements Data { + + private Map metric = new HashMap(); + + private QueryResultItemValue[] dataValues; + + + public Map getMetric() { + return metric; + } + + public void setMetric(Map metric) { + this.metric = metric; + } + + public QueryResultItemValue[] getDataValues() { + return dataValues; + } + + public void setDataValues(QueryResultItemValue[] values) { + this.dataValues = values; + } + + + public double[] getValues() { + double[] values = new double[dataValues.length]; + int index = 0; + for(QueryResultItemValue dataValue : dataValues) { + values[index++] = dataValue.getValue(); + } + return values; + } + + public double[] getTimestamps() { + double[] timestamps = new double[dataValues.length]; + int index = 0; + for(QueryResultItemValue dataValue : dataValues) { + timestamps[index++] = dataValue.getTimestamp(); + } + return timestamps; + } + + public String[] getFormattedTimestamps(String format) { + SimpleDateFormat formatter = new SimpleDateFormat(format); + String[] timestamps = new String[dataValues.length]; + int index = 0; + for(QueryResultItemValue dataValue : dataValues) { + timestamps[index++] = formatter.format(new Date(Math.round(dataValue.getTimestamp()*1000L))); + } + return timestamps; + } + + @Override + public String toString() { + return "MatrixData [metric=" + metric + ", dataValues=" + Arrays.toString(dataValues) + "]"; + } + + + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryDataType.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryDataType.java new file mode 100644 index 0000000..1a41ec5 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryDataType.java @@ -0,0 +1,86 @@ +package com.bdwise.prometheus.client.converter.query; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.bdwise.prometheus.client.converter.Data; +import com.google.gson.stream.JsonReader; + +public enum QueryDataType { + Matrix{ + + @SuppressWarnings("unchecked") + @Override + public MatrixData convert(JsonReader reader) throws IOException { + MatrixData resultDataItem = new MatrixData(); + reader.beginObject(); + while(reader.hasNext()) { + String name = reader.nextName(); + if("metric".equalsIgnoreCase(name)) { + Map metric = new HashMap(); + reader.beginObject(); + while(reader.hasNext()) { + metric.put(reader.nextName(), reader.nextString()); + } + reader.endObject(); + resultDataItem.setMetric(metric); + } else if("values".equalsIgnoreCase(name)) { + ArrayList resultDataItemValue = new ArrayList(); + reader.beginArray(); + while(reader.hasNext()) { + reader.beginArray(); + resultDataItemValue.add(new QueryResultItemValue(reader.nextDouble(), reader.nextDouble())); + reader.endArray(); + } + reader.endArray(); + resultDataItem.setDataValues(resultDataItemValue.toArray(new QueryResultItemValue[] {})); + } + } + reader.endObject(); + return resultDataItem; + } + + }, + Vector{ + + @SuppressWarnings("unchecked") + @Override + public VectorData convert(JsonReader reader) throws IOException { + VectorData resultDataItem = new VectorData(); + reader.beginObject(); + while(reader.hasNext()) { + String name = reader.nextName(); + if("metric".equalsIgnoreCase(name)) { + Map metric = new HashMap(); + reader.beginObject(); + while(reader.hasNext()) { + metric.put(reader.nextName(), reader.nextString()); + } + reader.endObject(); + resultDataItem.setMetric(metric); + } else if("value".equalsIgnoreCase(name)) { + reader.beginArray(); + resultDataItem.setDataValue(new QueryResultItemValue(reader.nextDouble(), reader.nextDouble())); + reader.endArray(); + } + } + reader.endObject(); + return resultDataItem; + } + + }, + Scalar{ + + @SuppressWarnings("unchecked") + @Override + public ScalarData convert(JsonReader reader) throws IOException { + ScalarData resultDataItem = null; + resultDataItem = new ScalarData(reader.nextDouble(), reader.nextDouble()); + return resultDataItem; + } + + }; + public abstract T convert(JsonReader reader) throws IOException ; +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.java new file mode 100644 index 0000000..093a126 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.java @@ -0,0 +1,28 @@ +package com.bdwise.prometheus.client.converter.query; + +public class QueryResultItemValue { + private double timestamp; + private double value; + public QueryResultItemValue(double timestamp, double value) { + super(); + this.timestamp = timestamp; + this.value = value; + } + public double getTimestamp() { + return timestamp; + } + public void setTimestamp(double timestamp) { + this.timestamp = timestamp; + } + public double getValue() { + return value; + } + public void setValue(double value) { + this.value = value; + } + @Override + public String toString() { + return "ResultDataItemValue [timestamp=" + timestamp + ", value=" + value + "]"; + } + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/ScalarData.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/ScalarData.java new file mode 100644 index 0000000..42aeff7 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/ScalarData.java @@ -0,0 +1,11 @@ +package com.bdwise.prometheus.client.converter.query; + +import com.bdwise.prometheus.client.converter.Data; + +public class ScalarData extends QueryResultItemValue implements Data { + + public ScalarData(double timestamp, double value) { + super(timestamp, value); + } + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/VectorData.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/VectorData.java new file mode 100644 index 0000000..2b750f9 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/VectorData.java @@ -0,0 +1,54 @@ +package com.bdwise.prometheus.client.converter.query; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import com.bdwise.prometheus.client.converter.Data; + + +public class VectorData implements Data { + + private Map metric = new HashMap(); + + private QueryResultItemValue dataValue; + + + public Map getMetric() { + return metric; + } + + public void setMetric(Map metric) { + this.metric = metric; + } + + public QueryResultItemValue getDataValue() { + return dataValue; + } + + public void setDataValue(QueryResultItemValue value) { + this.dataValue = value; + } + + + public double getValue() { + return dataValue.getValue(); + } + + public double getTimestamps() { + return dataValue.getTimestamp(); + } + + public String getFormattedTimestamps(String format) { + SimpleDateFormat formatter = new SimpleDateFormat(format); + return formatter.format(new Date(Math.round(dataValue.getTimestamp()*1000))); + } + + @Override + public String toString() { + return "VectorData [metric=" + metric + ", dataValue=" + dataValue + "]"; + } + + +} diff --git a/promql_client/src/test/java/com/bdwise/prometheus/client/builder/UriBuilderTest.java b/promql_client/src/test/java/com/bdwise/prometheus/client/builder/UriBuilderTest.java new file mode 100644 index 0000000..c341d65 --- /dev/null +++ b/promql_client/src/test/java/com/bdwise/prometheus/client/builder/UriBuilderTest.java @@ -0,0 +1,27 @@ +package com.bdwise.prometheus.client.builder; + +import java.net.MalformedURLException; +import java.net.URI; + + +import junit.framework.TestCase; + +public class UriBuilderTest extends TestCase { + + public void testRangeQueryBuilder() throws MalformedURLException { + RangeQueryBuilder rangeQueryBuilder = QueryBuilderType.RangeQuery.newInstance("http://52.192.4.59:30900"); + URI targetUri = rangeQueryBuilder.withQuery("irate(received_api_call_total[60s])") + .withStartEpochTime(System.currentTimeMillis() / 1000 - 60*10) + .withEndEpochTime(System.currentTimeMillis() / 1000) + .withStepTime("60s") + .build(); + + System.out.println(targetUri.toURL().toString()); + } + + public void testInstantQueryBuilder() throws MalformedURLException { + InstantQueryBuilder iqb = QueryBuilderType.InstantQuery.newInstance("http://52.192.4.59:30900"); + URI targetUri = iqb.withQuery("irate(received_api_call_total[60s])").build(); + System.out.println(targetUri.toURL().toString()); + } +} diff --git a/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.java b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.java new file mode 100644 index 0000000..f53a791 --- /dev/null +++ b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.java @@ -0,0 +1,22 @@ +package com.bdwise.prometheus.client.comverter.query; + + +import com.bdwise.prometheus.client.converter.ConvertUtil; +import com.bdwise.prometheus.client.converter.Data; +import com.bdwise.prometheus.client.converter.query.DefaultQueryResult; +import com.bdwise.prometheus.client.converter.query.ScalarData; + +import junit.framework.TestCase; + +public class MatrixResultTest extends TestCase { + + private String testScalarData="{\"status\":\"success\",\"data\":{\"resultType\":\"scalar\",\"result\":[1536200364.286,\"1\"]}}"; + + public void testParser() { + DefaultQueryResult result = ConvertUtil.convertQueryResultString(testScalarData); + System.out.println("-----" +result.getResult().size()); + for(Data data : result.getResult()) { + System.out.println("=======>" + data); + } + } +} diff --git a/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.java b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.java new file mode 100644 index 0000000..e29bd61 --- /dev/null +++ b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.java @@ -0,0 +1,20 @@ +package com.bdwise.prometheus.client.comverter.query; + +import com.bdwise.prometheus.client.converter.ConvertUtil; +import com.bdwise.prometheus.client.converter.Data; +import com.bdwise.prometheus.client.converter.query.DefaultQueryResult; +import com.bdwise.prometheus.client.converter.query.VectorData; + +import junit.framework.TestCase; + +public class ScalarResultTest extends TestCase { + private String testVectorData="{\"status\":\"success\",\"data\":{\"resultType\":\"vector\",\"result\":[{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-7ztnz\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.4.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-7ztnz\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-7ztnz\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.4.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-7ztnz\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8gb82\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.2.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8gb82\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8gb82\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.2.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8gb82\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8xh22\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.1.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8xh22\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8xh22\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.1.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8xh22\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]}]}}"; + + public void testParser() { + DefaultQueryResult result = ConvertUtil.convertQueryResultString(testVectorData); + System.out.println("-----" +result.getResult().size()); + for(Data data : result.getResult()) { + System.out.println("=======>" + data); + } + } +} diff --git a/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/VectorResultTest.java b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/VectorResultTest.java new file mode 100644 index 0000000..ea93ef3 --- /dev/null +++ b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/VectorResultTest.java @@ -0,0 +1,20 @@ +package com.bdwise.prometheus.client.comverter.query; + +import com.bdwise.prometheus.client.converter.ConvertUtil; +import com.bdwise.prometheus.client.converter.Data; +import com.bdwise.prometheus.client.converter.query.DefaultQueryResult; +import com.bdwise.prometheus.client.converter.query.VectorData; + +import junit.framework.TestCase; + +public class VectorResultTest extends TestCase { + private String testVectorData="{\"status\":\"success\",\"data\":{\"resultType\":\"vector\",\"result\":[{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-7ztnz\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.4.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-7ztnz\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-7ztnz\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.4.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-7ztnz\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8gb82\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.2.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8gb82\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8gb82\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.2.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8gb82\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8xh22\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.1.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8xh22\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8xh22\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.1.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8xh22\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]}]}}"; + + public void testParser() { + DefaultQueryResult result = ConvertUtil.convertQueryResultString(testVectorData); + System.out.println("-----" +result.getResult().size()); + for(Data data : result.getResult()) { + System.out.println("=======>" + data); + } + } +} diff --git a/promql_client/target/classes/META-INF/MANIFEST.MF b/promql_client/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..9421486 --- /dev/null +++ b/promql_client/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: mckang +Build-Jdk: 1.8.0_144 +Created-By: Maven Integration for Eclipse + diff --git a/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.properties b/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.properties new file mode 100644 index 0000000..f33cab5 --- /dev/null +++ b/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Fri Sep 07 12:58:14 KST 2018 +version=0.1-SNAPSHOT +groupId=com.bdwise.prometheus.client +m2e.projectName=promql_client +m2e.projectLocation=/Users/mckang/playground/prometheus_dev/promql_client +artifactId=promql_client diff --git a/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.xml b/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.xml new file mode 100644 index 0000000..86624cf --- /dev/null +++ b/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + + com.bdwise.prometheus.client + promql_client + 0.1-SNAPSHOT + jar + + promql_client + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + com.google.code.gson + gson + 2.8.1 + + + diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/InstantQueryBuilder.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/InstantQueryBuilder.class new file mode 100644 index 0000000..2a6404c Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/builder/InstantQueryBuilder.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilder.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilder.class new file mode 100644 index 0000000..ec65077 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilder.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$1.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$1.class new file mode 100644 index 0000000..8f71f67 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$1.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$2.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$2.class new file mode 100644 index 0000000..09a7f97 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$2.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$3.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$3.class new file mode 100644 index 0000000..70b3c13 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$3.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$4.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$4.class new file mode 100644 index 0000000..41d2127 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$4.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType.class new file mode 100644 index 0000000..1a11ed1 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/RangeQueryBuilder.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/RangeQueryBuilder.class new file mode 100644 index 0000000..d11f528 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/builder/RangeQueryBuilder.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/Utils.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/Utils.class new file mode 100644 index 0000000..51a5427 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/builder/Utils.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/ConvertUtil$1.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/ConvertUtil$1.class new file mode 100644 index 0000000..8c93c65 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/ConvertUtil$1.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/ConvertUtil.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/ConvertUtil.class new file mode 100644 index 0000000..0dadea2 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/ConvertUtil.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/Data.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/Data.class new file mode 100644 index 0000000..8c2ebbc Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/Data.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/Result.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/Result.class new file mode 100644 index 0000000..eb020e4 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/Result.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.class new file mode 100644 index 0000000..3b97b29 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/MatrixData.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/MatrixData.class new file mode 100644 index 0000000..8d30b8e Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/MatrixData.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$1.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$1.class new file mode 100644 index 0000000..c384a88 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$1.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$2.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$2.class new file mode 100644 index 0000000..3372cba Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$2.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$3.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$3.class new file mode 100644 index 0000000..eae6492 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$3.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType.class new file mode 100644 index 0000000..07742ff Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.class new file mode 100644 index 0000000..6833ee0 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/ScalarData.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/ScalarData.class new file mode 100644 index 0000000..7aeba73 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/ScalarData.class differ diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/VectorData.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/VectorData.class new file mode 100644 index 0000000..26aa498 Binary files /dev/null and b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/VectorData.class differ diff --git a/promql_client/target/test-classes/com/bdwise/prometheus/client/builder/UriBuilderTest.class b/promql_client/target/test-classes/com/bdwise/prometheus/client/builder/UriBuilderTest.class new file mode 100644 index 0000000..271891d Binary files /dev/null and b/promql_client/target/test-classes/com/bdwise/prometheus/client/builder/UriBuilderTest.class differ diff --git a/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.class b/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.class new file mode 100644 index 0000000..87f6b48 Binary files /dev/null and b/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.class differ diff --git a/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.class b/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.class new file mode 100644 index 0000000..848fc09 Binary files /dev/null and b/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.class differ diff --git a/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/VectorResultTest.class b/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/VectorResultTest.class new file mode 100644 index 0000000..4fcbd7c Binary files /dev/null and b/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/VectorResultTest.class differ