fix add elasticsearch stats
@@ -20,6 +20,12 @@ import java.util.function.Supplier;
import org.apache.commons.text.StringEscapeUtils;
import org.codelibs.core.timer.TimeoutTarget;
+import org.codelibs.fess.es.client.FessEsClient;
+import org.codelibs.fess.util.ComponentUtil;
+import org.elasticsearch.action.admin.cluster.node.stats.NodesStatsResponse;
+import org.elasticsearch.common.xcontent.ToXContent;
+import org.elasticsearch.common.xcontent.XContentBuilder;
+import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.monitor.os.OsProbe;
import org.elasticsearch.monitor.os.OsStats;
import org.elasticsearch.monitor.process.ProcessProbe;
@@ -56,6 +62,7 @@ public class SystemMonitorTarget implements TimeoutTarget {
buf.append("[SYSTEM MONITOR] ");
buf.append('{');
+ append(buf, "timestamp", () -> System.currentTimeMillis()).append(',');
buf.append("\"os\":{");
final OsProbe osProbe = OsProbe.getInstance();
@@ -84,7 +91,7 @@ public class SystemMonitorTarget implements TimeoutTarget {
buf.append("},");
buf.append("\"cpu\":{");
append(buf, "percent", () -> processProbe.getProcessCpuPercent()).append(',');
- append(buf, "time", () -> processProbe.getProcessCpuTotalTime());
+ append(buf, "total", () -> processProbe.getProcessCpuTotalTime());
buf.append("},");
buf.append("\"virtual_memory\":{");
append(buf, "total", () -> processProbe.getTotalVirtualMemorySize());
@@ -98,9 +105,31 @@ public class SystemMonitorTarget implements TimeoutTarget {
append(buf, "max", () -> runtime.maxMemory()).append(',');
append(buf, "total", () -> runtime.totalMemory());
buf.append('}');
- buf.append('}');
+ buf.append("},");
+
+ appendElasticsearchStats(buf);
+
buf.append('}');
logger.info(buf.toString());
}
+
+ protected void appendElasticsearchStats(StringBuilder buf) {
+ String stats = null;
+ try {
+ FessEsClient esClient = ComponentUtil.getFessEsClient();
+ NodesStatsResponse response =
+ esClient.admin().cluster().prepareNodesStats().ingest(false).setBreaker(false).setDiscovery(false).setFs(true)
+ .setHttp(false).setIndices(true).setJvm(true).setOs(true).setProcess(true).setScript(false).setThreadPool(true)
+ .setTransport(true).execute().actionGet(10000L);
+ XContentBuilder builder = XContentFactory.jsonBuilder();
+ builder.startObject();
+ response.toXContent(builder, ToXContent.EMPTY_PARAMS);
+ builder.endObject();
+ stats = builder.string();
+ } catch (Exception e) {
+ logger.debug("Failed to access Elasticsearch stats.", e);
+ }
+ buf.append("\"elasticsearch\":").append(stats);
+ }
}
