Skip to content

Commit 4448ae0

Browse files
committed
Add additional logging and error message info for when metric does not have proper labels
1 parent 5820a62 commit 4448ae0

File tree

4 files changed

+56
-29
lines changed

4 files changed

+56
-29
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
eclipse.preferences.version=1
22
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
33
org.eclipse.jdt.core.compiler.compliance=1.8
4+
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
45
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
6+
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
57
org.eclipse.jdt.core.compiler.processAnnotations=disabled
68
org.eclipse.jdt.core.compiler.release=disabled
79
org.eclipse.jdt.core.compiler.source=1.8

streams-metric-exporter/pom.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ under the License.
2222
<modelVersion>4.0.0</modelVersion>
2323
<groupId>streamsx.jmxclients</groupId>
2424
<artifactId>streams-metric-exporter</artifactId>
25-
<version>1.3.0</version>
25+
<version>1.3.1</version>
2626
<packaging>jar</packaging>
2727

2828
<name>streams-metric-exporter</name>
@@ -129,7 +129,8 @@ under the License.
129129
<dependency>
130130
<groupId>com.beust</groupId>
131131
<artifactId>jcommander</artifactId>
132-
<version>[1.58,)</version>
132+
<!--<version>[1.58,)</version>-->
133+
<version>1.58</version>
133134
</dependency>
134135
<dependency>
135136
<groupId>io.prometheus</groupId>

streams-metric-exporter/src/main/java/streams/metric/exporter/metrics/MetricsExporter.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
package streams.metric.exporter.metrics;
1818

19-
//import org.slf4j.Logger;
20-
//import org.slf4j.LoggerFactory;
19+
import org.slf4j.Logger;
20+
import org.slf4j.LoggerFactory;
2121
import org.apache.commons.lang.builder.EqualsBuilder;
2222
import org.apache.commons.lang.builder.HashCodeBuilder;
2323
import java.util.Arrays;
@@ -27,7 +27,7 @@
2727
import java.util.Set;
2828

2929
public abstract class MetricsExporter {
30-
//private static final Logger LOGGER = LoggerFactory.getLogger("root." + StreamsDomainTracker.class.getName());
30+
private static final Logger LOGGER = LoggerFactory.getLogger("root." + MetricsExporter.class.getName());
3131

3232
// Metric Labels Index, allows us to remove child metrics by label
3333
private MetricLabelIndex metricIndex = new MetricLabelIndex();
@@ -134,6 +134,7 @@ public abstract class Metric {
134134
protected final List<String> labelValues;
135135

136136
protected Metric(String name, List<String> labelValues) {
137+
LOGGER.trace("Creating Metric: name={}, labelValues={}",name,String.join(",",labelValues));
137138
this.name = name;
138139
this.labelValues = labelValues;
139140
}

streams-metric-exporter/src/main/java/streams/metric/exporter/prometheus/PrometheusMetricsExporter.java

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,16 @@
2727

2828
import io.prometheus.client.Gauge;
2929
import streams.metric.exporter.metrics.MetricsExporter;
30-
import streams.metric.exporter.streamstracker.StreamsDomainTracker;
30+
//import streams.metric.exporter.streamstracker.StreamsDomainTracker;
31+
32+
// For local Main debugging
33+
import org.apache.log4j.ConsoleAppender;
34+
import org.apache.log4j.PatternLayout;
3135

3236

3337
public class PrometheusMetricsExporter extends MetricsExporter {
34-
private static final Logger LOGGER = LoggerFactory.getLogger("root." + StreamsDomainTracker.class.getName());
38+
//private static final Logger LOGGER = LoggerFactory.getLogger("root." + PrometheusMetricsExporter.class.getName());
39+
private static final Logger LOGGER = LoggerFactory.getLogger("root");
3540
// Singleton Pattern
3641
static MetricsExporter singletonExporter = null;
3742

@@ -121,29 +126,47 @@ protected PrometheusMetric(String name, List<String> labelValues) {
121126

122127
public void set(double val) {
123128
Gauge g = getGauge(name);
124-
if (g != null)
125-
g.labels((String[]) labelValues.toArray()).set(val);
129+
try {
130+
if (g != null)
131+
g.labels((String[]) labelValues.toArray()).set(val);
132+
else {
133+
LOGGER.debug("Tried to do a set on a gauge that did not exist name={}",name);
134+
}
135+
} catch (IllegalArgumentException e) {
136+
LOGGER.error("Attempting to set Prometheus Metric value returned IllegalArgumentException");
137+
LOGGER.error("Metric: name={}, labelValues={}",name,String.join(",",labelValues));
138+
LOGGER.error("This should not occur. Usually caused by invalid labels for metric. Get this fixed!!");
139+
}
126140
}
127141
}
128142

129-
// public static void main(String[] args) {
130-
// MetricsExporter metricsExporter = PrometheusMetricsExporter.getInstance();
131-
//
132-
// System.out.println("Hello World!"); // Display the string.
133-
// Metric m1 = metricsExporter.getStreamsMetric("nTuplesSubmitted", StreamsObjectType.JOB, "StreamsInstance","Job 1");
134-
// Metric m2 = metricsExporter.getStreamsMetric("nTuplesSubmitted", StreamsObjectType.JOB, "StreamsInstance","Job 1","Operator 1");
135-
// Metric m3 = metricsExporter.getStreamsMetric("nTuplesSubmitted", StreamsObjectType.JOB, "StreamsInstance","Job 1","Operator 1");
136-
//
137-
// System.out.println("m1.equals(m2): " + m1.equals(m2));
138-
// System.out.println("m1.equals(m1): " + m1.equals(m1));
139-
// System.out.println("m2.equals(m3): " + m2.equals(m3));
140-
//
141-
// System.out.println("size: " + metricsExporter.getMetricIndex().size());
142-
// metricsExporter.removeAllChildStreamsMetrics("StreamsInstance","Job 1");
143-
// System.out.println("size after remove: " + metricsExporter.getMetricIndex().size());
144-
//
145-
//
146-
// //System.out.println(m1.labelChildOf("StreamsInstance","Job 1"));
147-
// //System.out.println(m1.labelChildOf("SomthingElse","Another"));
148-
// }
143+
public static void main(String[] args) {
144+
MetricsExporter metricsExporter = PrometheusMetricsExporter.getInstance();
145+
org.apache.log4j.Logger logger = org.apache.log4j.Logger.getRootLogger();
146+
PatternLayout layout = new PatternLayout("%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n");
147+
148+
ConsoleAppender consoleAppender = new ConsoleAppender(layout);
149+
consoleAppender.setName("PMETEST");
150+
logger.addAppender(consoleAppender);
151+
logger.setLevel(org.apache.log4j.Level.toLevel("trace"));
152+
153+
System.out.println("Hello World!"); // Display the string.
154+
Metric m1 = metricsExporter.getStreamsMetric("nTuplesSubmitted", StreamsObjectType.JOB, "StreamsInstance","Job 1");
155+
Metric m2 = metricsExporter.getStreamsMetric("nTuplesSubmitted", StreamsObjectType.JOB, "StreamsInstance","Job 1","Operator 1");
156+
Metric m3 = metricsExporter.getStreamsMetric("nTuplesSubmitted", StreamsObjectType.JOB, "StreamsInstance","Job 1","Operator 1");
157+
Metric m4 = metricsExporter.getStreamsMetric("nTuplesSubmitted", StreamsObjectType.JOB, "");
158+
m4.set(1.0);
159+
160+
System.out.println("m1.equals(m2): " + m1.equals(m2));
161+
System.out.println("m1.equals(m1): " + m1.equals(m1));
162+
System.out.println("m2.equals(m3): " + m2.equals(m3));
163+
164+
System.out.println("size: " + metricsExporter.getMetricIndex().size());
165+
metricsExporter.removeAllChildStreamsMetrics("StreamsInstance","Job 1");
166+
System.out.println("size after remove: " + metricsExporter.getMetricIndex().size());
167+
168+
169+
//System.out.println(m1.labelChildOf("StreamsInstance","Job 1"));
170+
//System.out.println(m1.labelChildOf("SomthingElse","Another"));
171+
}
149172
}

0 commit comments

Comments
 (0)