/*
* Copyright 2015 the original author or authors.
* @https://github.com/scouter-project/scouter
*
* Licensed 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.
*/
package scouter.server;
import scouter.Version;
import scouter.server.account.AccountManager;
import scouter.server.core.AutoDeleteScheduler;
import scouter.server.core.TextCacheReset;
import scouter.server.db.DBCtr;
import scouter.server.http.HttpServer;
import scouter.server.netio.data.NetDataProcessor;
import scouter.server.netio.data.net.DataUdpServer;
import scouter.server.netio.service.ServiceHandlingProxy;
import scouter.server.netio.service.net.TcpServer;
import scouter.server.plugin.PlugInManager;
import scouter.server.plugin.alert.AlertEngine;
import scouter.server.plugin.builtin.BuiltInPluginManager;
import scouter.server.term.TermMain;
import scouter.util.ShellArg;
import scouter.util.SysJMX;
import scouter.util.ThreadUtil;
import scouter.util.logo.Logo;
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException, Exception {
Logo.print(true);
Logger.println("Scouter Server Version " + Version.getServerFullVersion());
Logo.print(Logger.pw(), true);
Configure.getInstance();
if(DBCtr.createLock()==false){
return;
}
AlertEngine.load();
CounterManager.getInstance();
AccountManager.ACCOUNT_FILENAME();
DataUdpServer.conf();
ServiceHandlingProxy.load();
TcpServer.conf();
HttpServer.load();
PlugInManager.load();
BuiltInPluginManager.loadPlugins();
NetDataProcessor.working();
AutoDeleteScheduler.getInstance();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
ShutdownManager.shutdown();
}
});
TextCacheReset.engine();
ShellArg sarg = new ShellArg(args);
if (sarg.hasKey("-console")) {
TermMain.process(sarg);
} else {
File exit = new File(SysJMX.getProcessPID() + ".scouter");
try {
exit.createNewFile();
} catch (Exception e) {
String tmp = System.getProperty("user.home", "/tmp");
exit = new File(tmp, SysJMX.getProcessPID() + ".scouter.run");
try {
exit.createNewFile();
} catch (Exception k) {
System.exit(1);
}
}
exit.deleteOnExit();
System.out.println("System JRE version : " + System.getProperty("java.version"));
// System.out.println("This product includes GeoLite data created by MaxMind, available from");
// System.out.println("http://www.maxmind.com");
// System.out.println("download: http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz");
// System.out.println("add configure: geoip_data_city_file=<download path>/GeoLiteCity.dat");
while (true) {
if (exit.exists() == false) {
ShutdownManager.shutdown();
System.exit(0);
}
DBCtr.updateLock();
ThreadUtil.sleep(1000);
}
}
}
}