package org.jvnet.hudson.plugins.monitoring;
import hudson.Plugin;
import hudson.model.Hudson;
import hudson.util.PluginServletFilter;
import javax.servlet.ServletContext;
import java.io.File;
/**
* Entry point of the plugin.
*
* <p>
* There must be one {@link Plugin} class in each plugin.
* See javadoc of {@link Plugin} for more about what can be done on this class.
*
* @author Emeric Vernat
*/
public class PluginImpl extends Plugin {
private ServletContext context;
@Override
public void setServletContext(ServletContext context) {
this.context = context;
}
@Override
public void start() throws Exception {
super.start();
// on active les actions systemes (gc, heap dump, histogramme memoire, processus...), sauf si l'administrateur a dit differemment
if (System.getProperty("javamelody.system-actions-enabled") == null) {
System.setProperty("javamelody.system-actions-enabled", "true");
}
// on desactive les graphiques jdbc et statistiques sql puisqu'il n'y en aura pas
if (System.getProperty("javamelody.no-database") == null) {
System.setProperty("javamelody.no-database", "true");
}
// le repertoire de stockage est dans le repertoire de hudson au lieu d'etre dans le repertoire temporaire
// ("/" initial necessaire sous windows pour javamelody v1.8.1)
if (System.getProperty("javamelody.storage-directory") == null) {
System.setProperty("javamelody.storage-directory", "/" + new File(Hudson.getInstance().getRootDir(),"monitoring").getAbsolutePath());
}
// google-analytics pour connaitre le nombre d'installations actives et pour connaitre les fonctions les plus utilisees
if (System.getProperty("javamelody.analytics-id") == null) {
System.setProperty("javamelody.analytics-id", "UA-1335263-7");
}
// http-transform-pattern pour aggr�ger les requ�tes contenant des parties "dynamiques" comme des numeros des builds,
// les fichiers dans job/<name>/site/, javadoc/, ws/, cobertura/, testReport/, violations/file/
// ou les utilisateurs dans user/ ou les fichiers dans /static/abcdef123/
if (System.getProperty("javamelody.http-transform-pattern") == null) {
System.setProperty("javamelody.http-transform-pattern", "/\\d+/|/site/.+|avadoc/.+|/ws/.+|obertura/.+|estReport/.+|iolations/file/.+|/user/.+|/static/\\w+/");
}
PluginServletFilter.addFilter(new HudsonMonitoringFilter());
// TODO on pourrait ajouter un counter avec les temps de build
}
}