You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2017/07/08 05:18:16 UTC

karaf-decanter git commit: [KARAF-5240] Cleaning create the Kibana index mapping with only required correct fields

Repository: karaf-decanter
Updated Branches:
  refs/heads/master 179282c22 -> e51070d1d


[KARAF-5240] Cleaning create the Kibana index mapping with only required correct fields


Project: http://git-wip-us.apache.org/repos/asf/karaf-decanter/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-decanter/commit/e51070d1
Tree: http://git-wip-us.apache.org/repos/asf/karaf-decanter/tree/e51070d1
Diff: http://git-wip-us.apache.org/repos/asf/karaf-decanter/diff/e51070d1

Branch: refs/heads/master
Commit: e51070d1d8f5f970cd9b67375b23fe0c63d21c63
Parents: 179282c
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Sat Jul 8 07:17:41 2017 +0200
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Sat Jul 8 07:17:41 2017 +0200

----------------------------------------------------------------------
 .../karaf/decanter/kibana4/Activator.java       | 113 +++++++++----------
 1 file changed, 56 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/e51070d1/kibana-4.x/src/main/java/org/apache/karaf/decanter/kibana4/Activator.java
----------------------------------------------------------------------
diff --git a/kibana-4.x/src/main/java/org/apache/karaf/decanter/kibana4/Activator.java b/kibana-4.x/src/main/java/org/apache/karaf/decanter/kibana4/Activator.java
index a0e04a3..c3ab3a0 100644
--- a/kibana-4.x/src/main/java/org/apache/karaf/decanter/kibana4/Activator.java
+++ b/kibana-4.x/src/main/java/org/apache/karaf/decanter/kibana4/Activator.java
@@ -25,8 +25,6 @@ import io.searchbox.client.config.HttpClientConfig;
 import io.searchbox.core.Index;
 import io.searchbox.core.Search;
 import io.searchbox.core.SearchResult;
-import io.searchbox.indices.Analyze;
-import io.searchbox.indices.mapping.GetMapping;
 import org.apache.karaf.features.FeatureEvent;
 import org.apache.karaf.features.FeaturesListener;
 import org.apache.karaf.features.RepositoryEvent;
@@ -35,8 +33,6 @@ import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.HashMap;
-import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 public class Activator implements BundleActivator {
@@ -58,22 +54,6 @@ public class Activator implements BundleActivator {
         LOGGER.debug("Stopping Kibana 4 console ...");
     }
 
-    private void traverseJson(String parent, JsonObject jsonObject, Map<String, String> map) {
-        if (jsonObject.entrySet().size() > 0) {
-            for (Map.Entry<String, JsonElement> element : jsonObject.entrySet()) {
-                if (element.getKey().equalsIgnoreCase("type") && element.getValue().isJsonPrimitive()) {
-                    if (element.getValue().getAsString().equalsIgnoreCase("long") || element.getValue().getAsString().equalsIgnoreCase("double"))
-                        map.put(parent, "number");
-                    else if (element.getValue().getAsString().equalsIgnoreCase("object")) {
-                        // bypass object
-                    } else map.put(parent, element.getValue().getAsString());
-                } else if (element.getValue().isJsonObject()) {
-                    traverseJson(element.getKey(), element.getValue().getAsJsonObject(), map);
-                }
-            }
-        }
-    }
-
     private JestClient createClient() {
         // TODO load the config from resources to get the Kibana index name
         // and location of the elasticsearch instance
@@ -89,64 +69,83 @@ public class Activator implements BundleActivator {
         return factory.getObject();
     }
 
+    private void addField(StringBuilder stringBuilder, String fieldName, String fieldType) {
+        stringBuilder.append("{");
+        stringBuilder.append("\\\"name\\\": \\\"").append(fieldName).append("\\\",");
+        stringBuilder.append("\\\"type\\\": \\\"").append(fieldType).append("\\\",");
+        stringBuilder.append("\\\"indexed\\\": true,");
+        if (fieldType.equals("number")) {
+            stringBuilder.append("\\\"analyzed\\\": true");
+        } else {
+            stringBuilder.append("\\\"analyzed\\\": false");
+        }
+        stringBuilder.append("}");
+    }
+
     private void updateIndex() {
         LOGGER.debug("Updating kibana index");
 
         JestClient client = createClient();
 
         try {
-            GetMapping getMapping = new GetMapping.Builder().build();
-            JestResult result = client.execute(getMapping);
-            if (!result.isSucceeded()) {
-                throw new IllegalStateException("Can't retrieve mappings");
-            }
-            JsonObject resultJson = result.getJsonObject();
-            JsonObject karafIndex = resultJson.getAsJsonObject();
-
-            Map<String, String> fields = new HashMap<>();
-
-            for (Map.Entry<String, JsonElement> index : karafIndex.entrySet()) {
-                if (index.getKey().startsWith("karaf")) {
-                    traverseJson(index.getKey(), index.getValue().getAsJsonObject(), fields);
-                }
-            }
 
-            LOGGER.debug("Updating .kibana index");
+            LOGGER.debug("Updating .kibana index mapping");
             StringBuilder stringBuilder = new StringBuilder();
             stringBuilder.append("{ \"title\": \"*\",");
             stringBuilder.append("\"timeFieldName\": \"@timestamp\",");
             stringBuilder.append("\"fields\": \"[");
 
-            for (String field : fields.keySet()) {
-                stringBuilder.append("{");
-                stringBuilder.append("\\\"name\\\":\\\"").append(field).append("\\\",");
-                stringBuilder.append("\\\"type\\\":\\\"").append(fields.get(field)).append("\\\",");
-                stringBuilder.append("\\\"count\\\":0,");
-                stringBuilder.append("\\\"scripted\\\":false,");
-                if (field.startsWith("_"))
-                    stringBuilder.append("\\\"indexed\\\":false,");
-                else stringBuilder.append("\\\"indexed\\\":true,");
-                if (fields.get(field).equalsIgnoreCase("string"))
-                    stringBuilder.append("\\\"analyzed\\\":false,");
-                else stringBuilder.append("\\\"analyzed\\\":true,");
-                stringBuilder.append("\\\"doc_values\\\":false");
-                stringBuilder.append("},");
-            }
-            if (stringBuilder.charAt(stringBuilder.length() - 1) == ',')
-                stringBuilder.deleteCharAt(stringBuilder.length() - 1);
+            addField(stringBuilder, "level", "string");
+            stringBuilder.append(",");
+            addField(stringBuilder, "loggerName", "string");
+            stringBuilder.append(",");
+            addField(stringBuilder, "Usage.used", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "Usage.max", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "Usage.committed", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "LastGcInfo.GcThreadCount", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "LastGcInfo.duration", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "LoadedClassCount", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "TotalLoadedClassCount", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "UnloadedClassCount", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "FreePhysicalMemorySize", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "FreeSwapSpaceSize", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "OpenFileDescriptorCount", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "ProcessCpuLoad", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "SystemCpuLoad", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "ThreadCount", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "DaemonThreadCount", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "PeakThreadCount", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "timestamp", "number");
+            stringBuilder.append(",");
+            addField(stringBuilder, "@timestamp", "date");
 
             stringBuilder.append("]\" }");
 
-            result = client.execute(new Index.Builder(stringBuilder.toString()).index(KIBANA_INDEX).type("index-pattern").id("*").build());
+            JestResult result = client.execute(new Index.Builder(stringBuilder.toString()).index(KIBANA_INDEX).type("index-pattern").id("*").build());
             if (!result.isSucceeded()) {
                 throw new IllegalStateException(result.getErrorMessage());
             }
+
             result = client.execute(new Index.Builder("{ \"buildNum\" : 7562, \"defaultIndex\": \"*\" }").index(KIBANA_INDEX).type("config").id("4.1.2-es-2.0").build());
             if (!result.isSucceeded()) {
                 throw new IllegalStateException(result.getErrorMessage());
             }
-            Analyze analyze = new Analyze.Builder().analyzer("standard").build();
-            client.execute(analyze);
         } catch (Exception e) {
             LOGGER.warn("Can't update .kibana index", e);
         }
@@ -160,7 +159,7 @@ public class Activator implements BundleActivator {
         Search search = new Search.Builder(query).build();
         try {
             SearchResult result = client.execute(search);
-            if (result.getTotal() > 1) {
+            if (result != null && result.getTotal() > 1) {
                 return true;
             } else {
                 return false;