This commit is contained in:
crusader 2018-05-04 18:07:18 +09:00
parent 88cd40bc05
commit 2fccbc85bb
14 changed files with 111 additions and 107 deletions

2
.vscode/launch.json vendored
View File

@ -13,7 +13,7 @@
"stopOnEntry": false,
"mainClass": "com.loafle.overflow.container.general.GeneralContainer",
"projectName": "container_general",
"args": "${workspaceFolder}/general.pid"
"args": "60000"
},
{
"type": "java",

View File

@ -26,7 +26,7 @@
<overflow.container-java.version>1.0.0-SNAPSHOT</overflow.container-java.version>
<netty.version>4.1.17.Final</netty.version>
<gson.version>2.8.2</gson.version>
<jackson.mapper.version>1.9.13</jackson.mapper.version>
<spring.version>5.0.5.RELEASE</spring.version>
<mysql-connector-java.version>6.0.6</mysql-connector-java.version>
@ -76,9 +76,9 @@
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.mapper.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>

View File

@ -2,8 +2,8 @@ package com.loafle.overflow.container.general;
import com.loafle.overflow.container.Container;
import com.loafle.overflow.container.configuration.ContainerConfiguration;
import com.loafle.overflow.container.general.server.GeneralContainerConfiguration;
import com.loafle.overflow.container.general.server.GeneralContainerServer;
import com.loafle.overflow.container.general.client.GeneralContainerClient;
import com.loafle.overflow.container.general.client.GeneralContainerConfiguration;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
@ -17,12 +17,22 @@ public class GeneralContainer {
String pidFilePath = args[0];
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) {
context.getBeanFactory().registerSingleton(Container.PIDFILE_PATH, pidFilePath);
context.register(ContainerConfiguration.class, GeneralContainerConfiguration.class);
context.getBeanFactory().registerSingleton(Container.PORT_NUMBER, pidFilePath);
context.register(GeneralContainerConfiguration.class, ContainerConfiguration.class);
context.refresh();
context.registerShutdownHook();
GeneralContainerServer server = context.getBean(GeneralContainerServer.class);
server.start();
GeneralContainerClient client = context.getBean(GeneralContainerClient.class);
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
try {
client.stop();
} catch (Exception e) {
e.printStackTrace();
}
}
});
client.start();
}
}
}

View File

@ -1,10 +1,10 @@
package com.loafle.overflow.container.general.server;
package com.loafle.overflow.container.general.client;
import java.util.HashMap;
import java.util.Map;
import com.loafle.overflow.container.general.service.Service;
import com.loafle.overflow.container.server.ContainerServer;
import com.loafle.overflow.container.client.ContainerClient;
import com.loafle.overflow.core.annotation.RPCService;
import org.springframework.beans.factory.annotation.Autowired;
@ -14,17 +14,17 @@ import org.springframework.stereotype.Component;
import static com.loafle.overflow.core.interfaces.Service.execServices;
import static com.loafle.overflow.core.interfaces.Service.ServiceMethodType;
/**
* GeneralContainerClient
*/
@Component
public class GeneralContainerServer extends ContainerServer {
public class GeneralContainerClient extends ContainerClient {
@Autowired
private ApplicationContext applicationContext;
private Map<Class<?>, Object> services;
public GeneralContainerServer() {
}
@Override
protected void init() throws Exception {
super.init();
@ -39,23 +39,18 @@ public class GeneralContainerServer extends ContainerServer {
});
execServices(this.services, ServiceMethodType.INIT, Service.OrderedServices, false);
}
@Override
}
protected void onStart() throws Exception {
super.onStart();
execServices(this.services, ServiceMethodType.START, Service.OrderedServices, false);
}
@Override
protected void onStop() throws Exception {
execServices(this.services, ServiceMethodType.STOP, Service.OrderedServices, true);
super.onStop();
}
@Override
protected void destroy() throws Exception {
execServices(this.services, ServiceMethodType.DESTROY, Service.OrderedServices, true);

View File

@ -0,0 +1,57 @@
package com.loafle.overflow.container.general.client;
import java.net.URI;
import java.util.Map;
import com.loafle.commons.server.websocket.client.Client;
import com.loafle.overflow.config.container.ContainerProtocol;
import com.loafle.overflow.config.probe.ContainerType;
import com.loafle.overflow.container.Container;
import com.loafle.overflow.container.general.crawler.Crawlers;
import com.loafle.overflow.crawler.Crawler;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import io.netty.handler.codec.http.DefaultHttpHeaders;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker;
import io.netty.handler.codec.http.websocketx.WebSocketClientHandshakerFactory;
import io.netty.handler.codec.http.websocketx.WebSocketVersion;
/**
* GeneralContainerConfiguration
*/
@Configuration
@ComponentScan(basePackages = { "com.loafle.overflow" })
public class GeneralContainerConfiguration {
@Autowired
@Qualifier(Client.SERVER_URI)
protected URI serverURI;
@Bean(Client.HANDSHAKER)
public WebSocketClientHandshaker handshaker() {
HttpHeaders customHeaders = new DefaultHttpHeaders();
customHeaders.add(ContainerProtocol.HTTPRequestHeaderKey_Container_Method, ContainerProtocol.HTTPRequestHeaderValue_Container_Method_Connect);
customHeaders.add(ContainerProtocol.HTTPRequestHeaderKey_Container_Type, ContainerType.GENERNAL.toString());
return WebSocketClientHandshakerFactory.newHandshaker(serverURI, WebSocketVersion.V13, null, false, customHeaders);
}
@Bean(Container.CRAWLERS)
public Map<String, Crawler> crawlers() {
return Crawlers.getCrawlers();
}
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return objectMapper;
}
}

View File

@ -1,15 +1,16 @@
package com.loafle.overflow.container.general.crawler.impl.wmi;
import com.google.gson.Gson;
import com.loafle.overflow.core.exception.OverflowException;
import com.loafle.overflow.crawler.Crawler;
import com.loafle.overflow.model.sensorconfig.ResultSet;
import com.loafle.overflow.model.sensorconfig.SensorConfig;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
@ -17,10 +18,11 @@ import java.util.List;
import java.util.Map;
public class WMICrawler implements Crawler {
private Gson gson;
private ObjectMapper objectMapper;
public WMICrawler() {
this.gson = new Gson();
this.objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
@Override
@ -87,7 +89,7 @@ public class WMICrawler implements Crawler {
SensorConfig metaConfig = null;
for (String fi : metaFiles) {
if (fi.indexOf("meta_") > -1) {
metaConfig = new Gson().fromJson(new InputStreamReader(new FileInputStream(new File(path + "/" + fi))), SensorConfig.class);
metaConfig = this.objectMapper.readValue(new FileInputStream(new File(path + "/" + fi)), SensorConfig.class);
if (metaConfig != null) {
retList.add(metaConfig);
}

View File

@ -1,34 +0,0 @@
package com.loafle.overflow.container.general.server;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.loafle.overflow.container.Container;
import com.loafle.overflow.container.general.crawler.Crawlers;
import com.loafle.overflow.crawler.Crawler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import io.netty.channel.ChannelHandler;
/**
* GeneralContainerConfiguration
*/
@Configuration
@ComponentScan(basePackages = { "com.loafle.overflow" })
public class GeneralContainerConfiguration {
@Bean(Container.PIPELINE_CHANNEL_HANDLERS)
public List<ChannelHandler> pipelineChannelHandlers() {
return new ArrayList<>();
}
@Bean(Container.CRAWLERS)
public Map<String, Crawler> crawlers() {
return Crawlers.getCrawlers();
}
}

View File

@ -1,10 +1,16 @@
package com.loafle.overflow.container.general.crawler;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.Before;
public abstract class CrawlerTest {
protected ObjectMapper objectMapper;
@Before
public void setUp() throws Exception {
this.objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
}

View File

@ -1,6 +1,5 @@
package com.loafle.overflow.container.general.crawler.impl.database;
import com.google.gson.Gson;
import com.loafle.overflow.container.general.crawler.CrawlerTest;
import com.loafle.overflow.model.sensorconfig.SensorConfig;
@ -38,9 +37,8 @@ public abstract class DatabaseCrawlerTest extends CrawlerTest {
protected SensorConfig getSensorConfig(String path) throws IOException {
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoader.getResource(path).getFile();
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(filePath)));
SensorConfig c = this.objectMapper.readValue(new FileInputStream(new File(filePath)), SensorConfig.class);
SensorConfig c = new Gson().fromJson(inputStreamReader, SensorConfig.class);
return c;
}

View File

@ -1,6 +1,5 @@
package com.loafle.overflow.container.general.crawler.impl.jmx.tomcat;
import com.google.gson.Gson;
import com.loafle.overflow.container.general.crawler.impl.jmx.JMXCrawler;
import com.loafle.overflow.container.general.crawler.impl.jmx.JMXCrawlerTest;
import com.loafle.overflow.model.sensorconfig.SensorConfig;
@ -10,7 +9,6 @@ import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Map;
@ -30,10 +28,7 @@ public class TomcatCrawlerTest extends JMXCrawlerTest {
ClassLoader classLoader = getClass().getClassLoader();
URL url = classLoader.getResource("config/tomcat/");
String filePath = classLoader.getResource("config/tomcat/example1.json").getFile();
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(filePath)));
SensorConfig c = new Gson().fromJson(inputStreamReader, SensorConfig.class);
SensorConfig c = this.objectMapper.readValue(new FileInputStream(new File(filePath)), SensorConfig.class);
JMXCrawler cr = new JMXCrawler();
Map<String, String> result = cr.get(c);

View File

@ -1,6 +1,5 @@
package com.loafle.overflow.container.general.crawler.impl.mongodb;
import com.google.gson.Gson;
import com.loafle.overflow.container.general.crawler.CrawlerTest;
import com.loafle.overflow.model.sensorconfig.SensorConfig;
@ -9,7 +8,6 @@ import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Map;
import static org.junit.Assert.*;
@ -23,9 +21,7 @@ public class MongoDBCrawlerTest extends CrawlerTest {
// read test resources config/example.json
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoader.getResource("config/mongodb/example.json").getFile();
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(filePath)));
SensorConfig c = new Gson().fromJson(inputStreamReader, SensorConfig.class);
SensorConfig c = this.objectMapper.readValue(new FileInputStream(new File(filePath)), SensorConfig.class);
MongoDBCrawler cr = new MongoDBCrawler();
Map<String, String> m = cr.get(c);

View File

@ -1,6 +1,5 @@
package com.loafle.overflow.container.general.crawler.impl.redis;
import com.google.gson.Gson;
import com.loafle.overflow.container.general.crawler.CrawlerTest;
import com.loafle.overflow.model.sensorconfig.SensorConfig;
@ -9,7 +8,6 @@ import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Map;
import static org.junit.Assert.*;
@ -21,10 +19,7 @@ public class RedisCralwerTest extends CrawlerTest {
public void collectMetric() throws Exception {
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoader.getResource("config/redis/example.json").getFile();
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(filePath)));
SensorConfig c = new Gson().fromJson(inputStreamReader, SensorConfig.class);
SensorConfig c = this.objectMapper.readValue(new FileInputStream(new File(filePath)), SensorConfig.class);
RedisCralwer rc = new RedisCralwer();
print("", rc.get(c));

View File

@ -1,6 +1,5 @@
package com.loafle.overflow.container.general.crawler.impl.snmp;
import com.google.gson.Gson;
import com.loafle.overflow.container.general.crawler.CrawlerTest;
import com.loafle.overflow.model.sensorconfig.SensorConfig;
@ -34,10 +33,7 @@ public class SNMPCrawlerTest extends CrawlerTest {
SNMPCrawler c = new SNMPCrawler();
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoader.getResource("config/snmp/examplev3.json").getFile();
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(filePath)));
SensorConfig config = new Gson().fromJson(inputStreamReader, SensorConfig.class);
SensorConfig config = this.objectMapper.readValue(new FileInputStream(new File(filePath)), SensorConfig.class);
Map<String, String> result = c.get(config);
@ -52,10 +48,7 @@ public class SNMPCrawlerTest extends CrawlerTest {
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoader.getResource("config/snmp/examplev2.json").getFile();
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(filePath)));
SensorConfig config = new Gson().fromJson(inputStreamReader, SensorConfig.class);
SensorConfig config = this.objectMapper.readValue(new FileInputStream(new File(filePath)), SensorConfig.class);
Map<String, String> result = c.get(config);

View File

@ -1,6 +1,5 @@
package com.loafle.overflow.container.general.crawler.impl.wmi;
import com.google.gson.Gson;
import com.loafle.overflow.container.general.crawler.CrawlerTest;
import com.loafle.overflow.model.sensorconfig.ResultSet;
import com.loafle.overflow.model.sensorconfig.SensorConfig;
@ -13,7 +12,6 @@ import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.*;
@ -74,9 +72,7 @@ public class WMICrawlerTest extends CrawlerTest {
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoader.getResource("config/wmi").getFile();
System.out.println(filePath);
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(filePath)));
SensorConfig config = new Gson().fromJson(inputStreamReader, SensorConfig.class);
SensorConfig config = this.objectMapper.readValue(new FileInputStream(new File(filePath)), SensorConfig.class);
// Config c = mapper.readValue(new File(classLoader.getResource("config").getFile()),Config.class);
@ -104,9 +100,7 @@ public class WMICrawlerTest extends CrawlerTest {
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoader.getResource("config/wmi/example.json").getFile();
System.out.println(filePath);
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(filePath)));
SensorConfig config = new Gson().fromJson(inputStreamReader, SensorConfig.class);
SensorConfig config = this.objectMapper.readValue(new FileInputStream(new File(filePath)), SensorConfig.class);
System.out.println(config);
}
@ -117,8 +111,7 @@ public class WMICrawlerTest extends CrawlerTest {
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoader.getResource("config/wmi/meta/meta_network.json").getFile();
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(filePath)));
SensorConfig config = new Gson().fromJson(inputStreamReader, SensorConfig.class);
SensorConfig config = this.objectMapper.readValue(new FileInputStream(new File(filePath)), SensorConfig.class);
// Map<String, Object> map = new HashMap<>();
// map.put("id", "administrator");
@ -159,8 +152,7 @@ public class WMICrawlerTest extends CrawlerTest {
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoader.getResource("config/wmi/test.json").getFile();
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(filePath)));
SensorConfig config = new Gson().fromJson(inputStreamReader, SensorConfig.class);
SensorConfig config = this.objectMapper.readValue(new FileInputStream(new File(filePath)), SensorConfig.class);
List<SensorConfig> metaConfigList = loadMetaConfig();
@ -198,8 +190,7 @@ public class WMICrawlerTest extends CrawlerTest {
for (String fi : metaFiles) {
if (fi.indexOf("meta_") > -1) {
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(path + "/" + fi)));
SensorConfig config = new Gson().fromJson(inputStreamReader, SensorConfig.class);
SensorConfig config = this.objectMapper.readValue(new FileInputStream(new File(path + "/" + fi)), SensorConfig.class);
if (config != null) {
retList.add(config);
}