vendredi 28 janvier 2011
OBJECTIF
L’objectif et de mettre en place une remonté d’alerte sur la présence de threads en blocage sur la plateforme Weblogic/OSB. Pour cela on peut utiliser le module WLDF de Weblogic en remontant l’information par mail.
La procédure consiste à paramétrer Weblogic pour dire au bout de combien de temps on considère qu’un thread est en blocage pour pouvoir remonter l’information dans le log Weblogic (Message ID=BEA-320068). Cette information sera ensuite capturée par une configuration WLDF pour remonter l’information via Mail ou JMS.
L’avantage de cette méthode est que l’on n’est pas obligé de monitorer l’ensemble des WorkManager pour détecter les StuckThreads car quelque soit l’application responsable elle lèvera une notification dans le log Weblogic. L’inconvenant c’est que l’on n’aura pas la finesse de l’information sur la provenance du StuckThread.
Un thread est considéré en blocage s’il prend du temps à s’exécuter (en attente ou en exécution). Il faut donc préciser un temps au bout duquel on considère que le thread en activité est en blocage.
Pour cela, il faut préciser à Weblogic le TIMEOUT au bout duquel on marque le thread en STUCK, ainsi que la fréquence de recherche de threads en STUCK.
Pour le paramétrage du TIMEOUT, il faut se connecter à la console d’administration du domaine et de paramétrer chaque instance de la façon suivante :
${domaine}àEnvironmentàServersà${instance}àConfigurationàTuning
Stuck Thread Max Time | Le temps au bout duquel on considère que le thread est bloqué |
Stuck Thread Timer Interval | La fréquence de contrôle |
Changer la valeur de Stuck Thread Max Time en diminuant la valeur par défaut (si besoin) qui est de 10 minutes.
Exemple d’un log Weblogic sur un StuckThread
####<23 juil. 2009 03 h 14 VET> <[ACTIVE] ExecuteThread: '72' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <> <1248335056672> <[STUCK] ExecuteThread: '64' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "44" seconds working on the request "weblogic.servlet.internal.ServletRequestImpl@b5839e[
GET /TestFreez/Freez.jsp HTTP/1.1
Accept: */*
Referer: http://localhost:7001/console/console.portal?_nfpb=true&_pageLabel=WebAppApplicationTestingPage&handle=
com.bea.console.handles.AppDeploymentHandle%28%22com.bea%3AName%3DTestFreez%2CType
%3DAppDeployment%22%29
Accept-Language: fr
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)
Connection: Keep-Alive
]", which is more than the configured time (StuckThreadMaxTime) of "30" seconds. Stack trace:
Thread-79 "[STUCK] ExecuteThread: '64' for queue: 'weblogic.kernel.Default (self-tuning)'" {
java.lang.Thread.sleep(Thread.java:???)
jsp_servlet.__freez._jspService(__freez.java:61)
weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:224)
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:108)
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:198)
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run
(WebAppServletContext.java:3468)
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:308)
weblogic.security.service.SecurityManager.runAs(Unknown Source)
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2116)
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2038)
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1372)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:198)
weblogic.work.ExecuteThread.run(ExecuteThread.java:165)
}
>
WLDF
Création d’un module WLDF pour la remontée d’alerte. Il faut pour cela :
- Créer un module WLDF pour y créer des ressources associées au monitoring.
- Créer des sources de Notifications pour pouvoir remonter les informations (Mail, JMS, etc …)
- Créer des règles de remontées d’alerte (Watchs) à associer aux sources de Notification.
Il faudra paramétrer la sévérité d’observation pour remonter les problèmes.
WLDF MODULE
La création d’un module est nécessaire pour la suite. Elle ne sert qu’a organiser et rassembler les ressources que l’on va créer par la suite.
Lock & Edit
${domaine}àEnvironmentàDiagnosticsàDiagnostic ModulesàNew
Name : Module
Description : Module de Monitoring
Ok
Activate Changes
Penser à le targer sur l’instance.
CREATION DES NOTIFICATIONS
Plusieurs sources de notifications sont possibles :
- SMTP Via une session mail
- JMS Sur une file de messages
- Diagnostique Image Dans un fichier de diagnostic
- SNMP Via une remontée SNMP
PREREQUIS
Pour une notification mail, il faut d’abord créer une Session Mail.
${domaine}àServicesàMail SessionsàDiagnostic ModulesàNew
Pour une notification JMS, il faudra créer une file de messages
${domaine}àServicesàMessagingàJMS Modulesà${module}à${queue}/${factory}
Pour une notification par trap SNMP, il faut activer l’agent dans Weblogic et paramétrer l’outil externe pour récupérer la notification.
${domaine}àDiagnosticsàSNMPàAgentsà${nom de domaine}àEnabled
CREATION DE LA SOURCE DE NOTIFICATION
Lock & Edit
Aller sous le module
${domaine}àDiagnosticsàDiagnostic Modulesà${module}àConfigurationàWatches and NotificationàNotificationsàNew
Donner un nom logique au service et son type :
Renseigner les informations associées à la source (le destinataire et le contenu du mail)
Finish
Activate Changes
CREATION DE L’ALERTE
On définit ici la règle qui déclenche l’alerte, ainsi que la source pour la remonter.
CREATION DE L’ALERTE
Lock & Edit
${domaine}àEnvironmentàDiagnosticsàDiagnostic Modulesà${module}àConfigurationàWatches and NotificationàWatchesàNew
Préciser un nom logique de la notification.
Watch Name Nom logique
Watch Type Server Log
Définition de la règle d’activation de l’alerte sur l’entrée dans le log par rapport à un Message ID particulier.
Add Expressions
Finish
ASSOCIATION DE L’ALERTE A LA DESTINATION
Se repositionner dans l’alerte définie pour lui associer une destination (Mail)
Notitication
Sélectionner la notification créée précédemment
Activate Changes
Penser à régler la sévérité pour pouvoir remonter l’information correctement
Inscription à :
Publier les commentaires (Atom)
AUTEUR
- Jean FRANCOIS
- Carrières Sur Sein, Yvelines, France
- Consultant Oracle (Ancien consultant BEA depuis 2001), je m’occupe des expertises sur les produits Oracle : SOCLE (Weblogic, Coherence, JRockit) SOA (Service Bus, SOA Suite, BPM)
MON CV
LABEL 3D
Blogumulus by Roy Tanck and Amanda Fazani
LABEL CLOUD
AUTRES BLOG
-
Alexandre Vasseur ex (BEA | Oracle FR / Esper)
James Bayer (BEA | Oracle US)
Maxence Button ex (BEA | Oracle FR)
Marc Kelderman
Edwin Biemond (Oracle ACE)
Mark Smith (Oracle)
Chris Tomkins (Oracle)
0 commentaires:
Enregistrer un commentaire