Commit a6d9111d authored by pengys5's avatar pengys5
Browse files

no message

parent c1c7d9b8
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
package org.skywalking.apm.collector.ui.dao;

import java.util.List;
import org.skywalking.apm.collector.storage.table.instance.Instance;

/**
 * @author pengys5
@@ -12,6 +13,8 @@ public interface IInstanceDAO {

    List<Application> getApplications(long time);

    Instance getInstance(int instanceId);

    class Application {
        private final int applicationId;
        private final long count;
+20 −0
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@ package org.skywalking.apm.collector.ui.dao;

import java.util.LinkedList;
import java.util.List;
import org.elasticsearch.action.get.GetRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
@@ -16,6 +18,7 @@ import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortMode;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
import org.skywalking.apm.collector.storage.table.instance.Instance;
import org.skywalking.apm.collector.storage.table.register.InstanceTable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -93,4 +96,21 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO {
        }
        return applications;
    }

    @Override public Instance getInstance(int instanceId) {
        logger.debug("get instance info, instance id: {}", instanceId);
        GetRequestBuilder requestBuilder = getClient().prepareGet(InstanceTable.TABLE, String.valueOf(instanceId));
        GetResponse getResponse = requestBuilder.get();
        if (getResponse.isExists()) {
            Instance instance = new Instance();
            instance.setId(String.valueOf(instanceId));
            instance.setApplicationId(((Number)getResponse.getSource().get(InstanceTable.COLUMN_APPLICATION_ID)).intValue());
            instance.setAgentUUID((String)getResponse.getSource().get(InstanceTable.COLUMN_AGENT_UUID));
            instance.setRegisterTime(((Number)getResponse.getSource().get(InstanceTable.COLUMN_REGISTER_TIME)).longValue());
            instance.setHeartBeatTime(((Number)getResponse.getSource().get(InstanceTable.COLUMN_HEARTBEAT_TIME)).longValue());
            instance.setOsInfo((String)getResponse.getSource().get(InstanceTable.COLUMN_OS_INFO));
            return instance;
        }
        return null;
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ package org.skywalking.apm.collector.ui.dao;

import java.util.List;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
import org.skywalking.apm.collector.storage.table.instance.Instance;

/**
 * @author pengys5
@@ -18,4 +19,8 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
    @Override public List<Application> getApplications(long time) {
        return null;
    }

    @Override public Instance getInstance(int instanceId) {
        return null;
    }
}
+49 −0
Original line number Diff line number Diff line
package org.skywalking.apm.collector.ui.jetty.handler.instancemetric;

import com.google.gson.JsonElement;
import javax.servlet.http.HttpServletRequest;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler;
import org.skywalking.apm.collector.ui.service.InstanceHealthService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author pengys5
 */
public class InstanceMetricGetHandler extends JettyHandler {

    private final Logger logger = LoggerFactory.getLogger(InstanceMetricGetHandler.class);

    @Override public String pathSpec() {
        return "/instance/jvm/instanceId";
    }

    private InstanceHealthService service = new InstanceHealthService();

    @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
        String timestampStr = req.getParameter("timestamp");
        String applicationIdStr = req.getParameter("applicationId");
        logger.debug("instance health get timestamp: {}", timestampStr);

        long timestamp;
        try {
            timestamp = Long.parseLong(timestampStr);
        } catch (NumberFormatException e) {
            throw new ArgumentsParseException("timestamp must be long");
        }

        int applicationId;
        try {
            applicationId = Integer.parseInt(applicationIdStr);
        } catch (NumberFormatException e) {
            throw new ArgumentsParseException("application id must be integer");
        }

        return service.getInstances(timestamp, applicationId);
    }

    @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
        throw new UnsupportedOperationException();
    }
}
+41 −0
Original line number Diff line number Diff line
package org.skywalking.apm.collector.ui.jetty.handler.instancemetric;

import com.google.gson.JsonElement;
import javax.servlet.http.HttpServletRequest;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler;
import org.skywalking.apm.collector.ui.service.InstanceJVMService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author pengys5
 */
public class InstanceOsInfoGetHandler extends JettyHandler {

    private final Logger logger = LoggerFactory.getLogger(InstanceOsInfoGetHandler.class);

    @Override public String pathSpec() {
        return "/instance/os/instanceId";
    }

    private InstanceJVMService service = new InstanceJVMService();

    @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
        String instanceIdStr = req.getParameter("instanceId");
        logger.debug("instance os info get, instance id: {}", instanceIdStr);

        int instanceId;
        try {
            instanceId = Integer.parseInt(instanceIdStr);
        } catch (NumberFormatException e) {
            throw new ArgumentsParseException("instance id must be integer");
        }

        return service.getInstanceOsInfo(instanceId);
    }

    @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
        throw new UnsupportedOperationException();
    }
}
Loading