View Javadoc
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  }