This is an automated email from the ASF dual-hosted git repository.
jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/karaf-decanter.git
The following commit(s) were added to refs/heads/master by this push:
new 3383c79 feat(influxdb-appender):send strings values to influx as
tags instead of fields
new da838b1 Merge pull request #125 from YotpoLtd/influxdb-appender
3383c79 is described below
commit 3383c79873f2abeb490c5cff261b84794eaa728e
Author: Gilad Weinbach <[email protected]>
AuthorDate: Thu Mar 5 17:24:01 2020 +0200
feat(influxdb-appender):send strings values to influx as tags instead of
fields
---
.../appender/influxdb/InfluxDbAppender.java | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git
a/appender/influxdb/src/main/java/org/apache/karaf/decanter/appender/influxdb/InfluxDbAppender.java
b/appender/influxdb/src/main/java/org/apache/karaf/decanter/appender/influxdb/InfluxDbAppender.java
index b1b4aac..0a39d44 100644
---
a/appender/influxdb/src/main/java/org/apache/karaf/decanter/appender/influxdb/InfluxDbAppender.java
+++
b/appender/influxdb/src/main/java/org/apache/karaf/decanter/appender/influxdb/InfluxDbAppender.java
@@ -40,11 +40,12 @@ import java.util.concurrent.TimeUnit;
immediate = true,
property = EventConstants.EVENT_TOPIC + "=decanter/collect/*"
)
+
public class InfluxDbAppender implements EventHandler {
private Dictionary<String, Object> config;
- private Map<String, String> tags = new HashMap<>();
+ private Map<String, String> globalTags = new HashMap<>();
private InfluxDB influxDB;
@@ -95,10 +96,10 @@ public class InfluxDbAppender implements EventHandler {
String prefix = "tag.";
for (Enumeration<String> e = config.keys(); e.hasMoreElements(); ) {
String key = e.nextElement();
- if (key.startsWith(prefix)) {
+ if( key.startsWith(prefix)) {
Object value = this.config.get(key);
if (value != null)
- tags.put(key.substring(4), value.toString());
+ globalTags.put(key.substring(4),value.toString());
}
}
@@ -120,16 +121,23 @@ public class InfluxDbAppender implements EventHandler {
if (event.getProperty("type") != null) {
type = (String) event.getProperty("type");
}
- Map<String, Object> data = new HashMap<>();
+
+ Map<String, Object> eventFields = new HashMap<>();
+ Map<String, String> eventTags = new HashMap<>();
+ eventTags.putAll(globalTags);
+
for (String propertyName : event.getPropertyNames()) {
Object propertyValue = event.getProperty(propertyName);
if (propertyValue != null) {
- if (propertyValue instanceof Number || propertyValue
instanceof String || propertyValue instanceof Boolean) {
- data.put(propertyName, propertyValue);
+ if (propertyValue instanceof Number || propertyValue
instanceof Boolean) {
+ eventFields.put(propertyName, propertyValue);
+ }
+ else if(propertyValue instanceof String){
+ eventTags.put(propertyName, (String) propertyValue);
}
}
}
- Point point =
Point.measurement(type).fields(data).tag(tags).build();
+ Point point =
Point.measurement(type).fields(eventFields).tag(eventTags).build();
influxDB.write(point);
}
}