1 package org.kuali.common.deploy.monitoring.spring; 2 3 import org.kuali.common.deploy.DeployContext; 4 import org.kuali.common.deploy.Deployable; 5 import org.kuali.common.deploy.channel.spring.DefaultSecureChannelConfig; 6 import org.kuali.common.deploy.monitoring.AppDynamicsMonitoring; 7 import org.kuali.common.deploy.monitoring.MachineAgent; 8 import org.kuali.common.deploy.monitoring.Monitoring; 9 import org.kuali.common.deploy.monitoring.ServerAgent; 10 import org.kuali.common.deploy.spring.DefaultDeployContextConfig; 11 import org.kuali.common.util.secure.channel.SecureChannel; 12 import org.kuali.common.util.spring.PropertySourceUtils; 13 import org.kuali.common.util.spring.SpringUtils; 14 import org.kuali.common.util.spring.env.EnvironmentService; 15 import org.kuali.common.util.spring.service.SpringServiceConfig; 16 import org.springframework.beans.factory.annotation.Autowired; 17 import org.springframework.context.annotation.Bean; 18 import org.springframework.context.annotation.Configuration; 19 import org.springframework.context.annotation.Import; 20 import org.springframework.core.env.ConfigurableEnvironment; 21 22 @Configuration 23 @Import({ DefaultDeployContextConfig.class, SpringServiceConfig.class, DefaultSecureChannelConfig.class }) 24 public class AppDynamicsConfig implements MonitoringConfig { 25 26 @Autowired 27 DeployContext context; 28 29 @Autowired 30 EnvironmentService env; 31 32 @Autowired 33 ConfigurableEnvironment configurableEnvironment; 34 35 @Autowired 36 SecureChannel channel; 37 38 @Override 39 @Bean 40 public Monitoring applicationMonitoring() { 41 boolean enabled = env.getBoolean("monitoring.enabled", false); 42 AppDynamicsMonitoring adm = new AppDynamicsMonitoring(); 43 adm.setUser(env.getString("tomcat.user")); 44 adm.setGroup(env.getString("tomcat.group")); 45 adm.setChannel(channel); 46 adm.setMachineAgent(getMachineAgent()); 47 adm.setServerAgent(getServerAgent()); 48 adm.setEnabled(enabled); 49 adm.setFilterProperties(PropertySourceUtils.getAllEnumerableProperties(configurableEnvironment)); 50 return adm; 51 } 52 53 protected Deployable getMachineAgentController() { 54 String local = env.getString("appdynamics.ma.controller.local"); 55 String remote = env.getString("appdynamics.ma.controller"); 56 return new Deployable.Builder(local, remote).filter(true).build(); 57 } 58 59 protected Deployable getServerAgentController() { 60 String local = env.getString("appdynamics.sa.controller.local"); 61 String remote = env.getString("appdynamics.sa.controller"); 62 return new Deployable.Builder(local, remote).filter(true).build(); 63 } 64 65 protected MachineAgent getMachineAgent() { 66 MachineAgent agent = new MachineAgent(); 67 agent.setStartupCommand(env.getString("appdynamics.ma.cmd")); 68 agent.setBaseDir(env.getString("appdynamics.ma.base")); 69 agent.setTmpDir(env.getString("appdynamics.ma.tmp")); 70 agent.setLogsDir(env.getString("appdynamics.ma.logs")); 71 agent.setController(getMachineAgentController()); 72 agent.setLogFile(env.getString("appdynamics.ma.logFile")); 73 agent.setStartupToken(env.getString("appdynamics.ma.logFile.startupToken")); 74 agent.setStartupTimeoutMillis(new Long(SpringUtils.getMillis(env, "appdynamics.ma.logFile.monitor.timeout", "5m")).intValue()); 75 agent.setLogFileIntervalMillis(new Long(SpringUtils.getMillis(env, "appdynamics.ma.logFile.monitor.interval", "500ms")).intValue()); 76 agent.setLogFileEncoding(env.getString("appdynamics.ma.logFile.encoding")); 77 return agent; 78 } 79 80 protected ServerAgent getServerAgent() { 81 String startupOptions = env.getString("appdynamics.sa.tomcat.java.options"); 82 String baseDir = env.getString("appdynamics.sa.base"); 83 String logsDir = env.getString("appdynamics.sa.logs"); 84 Deployable controller = getServerAgentController(); 85 return new ServerAgent(startupOptions, controller, baseDir, logsDir); 86 } 87 88 }