You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by an...@apache.org on 2015/02/26 21:38:42 UTC
karaf-decanter git commit: [KARAF-3573] - DECANTER: Improve JMX
collected Data
Repository: karaf-decanter
Updated Branches:
refs/heads/master d34bcf759 -> 0429a816e
[KARAF-3573] - DECANTER: Improve JMX collected Data
Project: http://git-wip-us.apache.org/repos/asf/karaf-decanter/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-decanter/commit/0429a816
Tree: http://git-wip-us.apache.org/repos/asf/karaf-decanter/tree/0429a816
Diff: http://git-wip-us.apache.org/repos/asf/karaf-decanter/diff/0429a816
Branch: refs/heads/master
Commit: 0429a816e477570baa4736c08ef290a6b2b6242b
Parents: d34bcf7
Author: anierbeck <bc...@googlemail.com>
Authored: Thu Feb 26 21:38:26 2015 +0100
Committer: anierbeck <bc...@googlemail.com>
Committed: Thu Feb 26 21:38:26 2015 +0100
----------------------------------------------------------------------
appender/elasticsearch/pom.xml | 149 +++++++++----------
.../elasticsearch/ElasticsearchAppender.java | 30 +++-
assembly/src/main/feature/feature.xml | 1 +
.../decanter/collector/jmx/JmxCollector.java | 33 ++--
pom.xml | 7 +
5 files changed, 135 insertions(+), 85 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/0429a816/appender/elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/appender/elasticsearch/pom.xml b/appender/elasticsearch/pom.xml
index f2a063d..09291dc 100644
--- a/appender/elasticsearch/pom.xml
+++ b/appender/elasticsearch/pom.xml
@@ -1,89 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <!--
+ <!-- Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with this
+ work for additional information regarding copyright ownership. The ASF licenses
+ this file to You under the Apache License, Version 2.0 (the "License"); you
+ may not use this file except in compliance with the License. You may obtain
+ a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless
+ required by applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+ OR CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the License. -->
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
+ <modelVersion>4.0.0</modelVersion>
- http://www.apache.org/licenses/LICENSE-2.0
+ <parent>
+ <groupId>org.apache.karaf.decanter</groupId>
+ <artifactId>appender</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
+ <groupId>org.apache.karaf.decanter.appender</groupId>
+ <artifactId>org.apache.karaf.decanter.appender.elasticsearch</artifactId>
+ <packaging>bundle</packaging>
+ <name>Apache Karaf :: Decanter :: Appender :: Elasticsearch</name>
- <modelVersion>4.0.0</modelVersion>
+ <dependencies>
- <parent>
- <groupId>org.apache.karaf.decanter</groupId>
- <artifactId>appender</artifactId>
- <version>3.0.0-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
+ <!-- Decanter -->
+ <dependency>
+ <groupId>org.apache.karaf.decanter</groupId>
+ <artifactId>org.apache.karaf.decanter.api</artifactId>
+ </dependency>
- <groupId>org.apache.karaf.decanter.appender</groupId>
- <artifactId>org.apache.karaf.decanter.appender.elasticsearch</artifactId>
- <packaging>bundle</packaging>
- <name>Apache Karaf :: Decanter :: Appender :: Elasticsearch</name>
+ <!-- Elasticsearch -->
+ <dependency>
+ <groupId>org.elasticsearch</groupId>
+ <artifactId>elasticsearch</artifactId>
+ <version>${elasticsearch.version}</version>
+ </dependency>
- <dependencies>
+ <!-- OSGi -->
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ </dependency>
- <!-- Decanter -->
- <dependency>
- <groupId>org.apache.karaf.decanter</groupId>
- <artifactId>org.apache.karaf.decanter.api</artifactId>
- </dependency>
+ <!-- JSON builder -->
+ <dependency>
+ <groupId>javax.json</groupId>
+ <artifactId>javax.json-api</artifactId>
+ </dependency>
+ <!-- SLF4J -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
- <!-- Elasticsearch -->
- <dependency>
- <groupId>org.elasticsearch</groupId>
- <artifactId>elasticsearch</artifactId>
- <version>${elasticsearch.version}</version>
- </dependency>
+ </dependencies>
- <!-- OSGi -->
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- </dependency>
-
- <!-- SLF4J -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
-
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <inherited>true</inherited>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
- <Bundle-Version>${project.version}</Bundle-Version>
- <Bundle-Activator>org.apache.karaf.decanter.appender.elasticsearch.Activator</Bundle-Activator>
- <Import-Package>
- org.apache.karaf.decanter.api;version=${project.version},
- org.slf4j;version="[1.7,2)";resolution:=optional,
- org.elasticsearch*;version="[1,2)",
- *
- </Import-Package>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <inherited>true</inherited>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+ <Bundle-Version>${project.version}</Bundle-Version>
+ <Bundle-Activator>org.apache.karaf.decanter.appender.elasticsearch.Activator</Bundle-Activator>
+ <Import-Package>
+ org.apache.karaf.decanter.api;version=${project.version},
+ org.slf4j;version="[1.7,2)";resolution:=optional,
+ org.elasticsearch*;version="[1,2)",
+ *
+ </Import-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/0429a816/appender/elasticsearch/src/main/java/org/apache/karaf/decanter/appender/elasticsearch/ElasticsearchAppender.java
----------------------------------------------------------------------
diff --git a/appender/elasticsearch/src/main/java/org/apache/karaf/decanter/appender/elasticsearch/ElasticsearchAppender.java b/appender/elasticsearch/src/main/java/org/apache/karaf/decanter/appender/elasticsearch/ElasticsearchAppender.java
index 06e36d0..c71cc4b 100644
--- a/appender/elasticsearch/src/main/java/org/apache/karaf/decanter/appender/elasticsearch/ElasticsearchAppender.java
+++ b/appender/elasticsearch/src/main/java/org/apache/karaf/decanter/appender/elasticsearch/ElasticsearchAppender.java
@@ -30,6 +30,11 @@ import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+import javax.json.JsonValue;
+
/**
* Karaf Decanter appender which insert into Elasticsearch
*/
@@ -53,7 +58,30 @@ public class ElasticsearchAppender implements Appender {
Date date = new Date(entry.getKey());
entry.getValue().put("@timestamp", tsFormat.format(date));
String indexName = String.format("karaf_%s", dateFormat.format(date));
- client.prepareIndex(indexName, "karaf_event").setSource(entry.getValue()).execute().actionGet();
+
+ JsonObjectBuilder jsonObjectBuilder = Json.createObjectBuilder();
+ for (Entry<String, Object> valueEntry : entry.getValue().entrySet()) {
+ if (valueEntry.getValue() instanceof String) {
+ jsonObjectBuilder.add(valueEntry.getKey(), (String) valueEntry.getValue());
+ } else if (valueEntry.getValue() instanceof Map) {
+ Map<String, Object> value = (Map<String, Object>) valueEntry.getValue();
+ JsonObjectBuilder innerBuilder = Json.createObjectBuilder();
+ for (Entry<String, Object> innerEntrySet : value.entrySet()) {
+ Object object = innerEntrySet.getValue();
+ if (object instanceof String)
+ innerBuilder.add(innerEntrySet.getKey(), (String) object);
+ else if (object instanceof Long)
+ innerBuilder.add(innerEntrySet.getKey(), (Long) object);
+ else if (object instanceof Integer)
+ innerBuilder.add(innerEntrySet.getKey(), (Integer) object);
+ else if (object instanceof Float)
+ innerBuilder.add(innerEntrySet.getKey(), (Float) object);
+ }
+ jsonObjectBuilder.add(valueEntry.getKey(), innerBuilder.build());
+ }
+ }
+ JsonObject jsonObject = jsonObjectBuilder.build();
+ client.prepareIndex(indexName, "karaf_event").setSource(jsonObject.toString()).execute().actionGet();
}
LOGGER.debug("Apppending done");
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/0429a816/assembly/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/assembly/src/main/feature/feature.xml b/assembly/src/main/feature/feature.xml
index fa52a17..98eba4a 100644
--- a/assembly/src/main/feature/feature.xml
+++ b/assembly/src/main/feature/feature.xml
@@ -45,6 +45,7 @@
<feature name="decanter-appender-elasticsearch" version="${project.version}" description="Karaf Decanter Elasticsearch Appender">
<feature version="${project.version}">decanter-common</feature>
+ <bundle>mvn:org.glassfish/javax.json/${glassfish-json.version}</bundle>
<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.elasticsearch/${elasticsearch.bundle.version}</bundle>
<bundle>mvn:org.apache.karaf.decanter.appender/org.apache.karaf.decanter.appender.elasticsearch/${project.version}</bundle>
</feature>
http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/0429a816/collector/jmx/src/main/java/org/apache/karaf/decanter/collector/jmx/JmxCollector.java
----------------------------------------------------------------------
diff --git a/collector/jmx/src/main/java/org/apache/karaf/decanter/collector/jmx/JmxCollector.java b/collector/jmx/src/main/java/org/apache/karaf/decanter/collector/jmx/JmxCollector.java
index 5f11e92..6fb5dd9 100644
--- a/collector/jmx/src/main/java/org/apache/karaf/decanter/collector/jmx/JmxCollector.java
+++ b/collector/jmx/src/main/java/org/apache/karaf/decanter/collector/jmx/JmxCollector.java
@@ -16,19 +16,21 @@
*/
package org.apache.karaf.decanter.collector.jmx;
-import org.apache.karaf.decanter.api.PollingCollector;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.management.MBeanAttributeInfo;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.management.openmbean.TabularDataSupport;
import java.lang.management.ManagementFactory;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+
+import org.apache.karaf.decanter.api.PollingCollector;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* Decanter JMX Pooling Collector
*/
@@ -51,7 +53,20 @@ public class JmxCollector implements PollingCollector {
for (MBeanAttributeInfo attribute : attributes) {
// TODO add SLA check on attributes and filtering
try {
- data.put(attribute.getName(), server.getAttribute(name, attribute.getName()).toString());
+ Object attributeObject = server.getAttribute(name, attribute.getName());
+ if (attributeObject instanceof String) {
+ data.put(attribute.getName(), (String) attributeObject);
+ } else if (attributeObject instanceof CompositeDataSupport) {
+ CompositeDataSupport cds = (CompositeDataSupport) attributeObject;
+ CompositeType compositeType = cds.getCompositeType();
+ Set<String> keySet = compositeType.keySet();
+ Map<String, Object> composite = new HashMap<String, Object>();
+ for (String key : keySet) {
+ Object cdsObject = cds.get(key);
+ composite.put(key, cdsObject);
+ }
+ data.put(attribute.getName(), composite);
+ }
} catch (Exception e) {
// LOGGER.warn("Can't put MBean {} attribute {} in collected data", name.toString(), attribute.getName(), e);
}
http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/0429a816/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9c5e62c..9dc6b47 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,6 +40,8 @@
<karaf.version>3.0.2</karaf.version>
<kibana.version>3.1.1</kibana.version>
<slf4j.version>1.7.7</slf4j.version>
+ <json-api.version>1.0</json-api.version>
+ <glassfish-json.version>1.0.4</glassfish-json.version>
</properties>
<modules>
@@ -238,6 +240,11 @@
<version>4.12</version>
</dependency>
+ <dependency>
+ <groupId>javax.json</groupId>
+ <artifactId>javax.json-api</artifactId>
+ <version>${json-api.version}</version>
+ </dependency>
</dependencies>
</dependencyManagement>