Affichage des articles dont le libellé est TOOLS. Afficher tous les articles
Affichage des articles dont le libellé est TOOLS. Afficher tous les articles
mercredi 13 février 2013
L’objectif de cet outil et de réaliser des captures de métrique MBean via JMX sur des instances Weblogic d’un domaine.
On établit un ensemble de métrique Weblogic avec une fréquence de capture et l’outil se connecte collecte et historise ceux-ci pour l’ensemble des instances d’un domaine dans des fichiers CSV.
Il permet également de visualiser ces métriques graphiquement en temps réel. Il apporte une vue agrégée par instance par rapport aux autres outils de monitoring comme la Jconsole ou Jrockit Mission Control ont l’extension de console Weblogic.
Il permet également de réaliser un paramétrage rapide en précisant les types et attributs de Mbean a capturer
ThreadPoolRuntime=HoggingThreadCount,PendingUserRequestCount,QueueLength,Throughput,ExecuteThreadTotalCount
JTARuntime=TransactionRolledBackTotalCount
JDBCDataSourceRuntime=ActiveConnectionsCurrentCount,ActiveConnectionsHighCount,CurrCapacity
JDBCOracleDataSourceRuntime=ActiveConnectionsCurrentCount
JMSDestinationRuntime=MessagesPendingCount,MessagesCurrentCount
JMSServerRuntime=MessagesPendingCount,MessagesCurrentCount
WebAppComponentRuntime=OpenSessionsCurrentCount,OpenSessionsHighCount
WorkManagerRuntime=PendingRequests,StuckThreadCount
ExecuteQueueRuntime=ExecuteThreadCurrentIdleCount,PendingRequestCurrentCount,ExecuteThreadTotalCount
JVMRuntime=HeapFreeCurrent
JRockitRuntime=HeapFreePercent,UsedPhysicalMemory,AllProcessorsAverageLoad,JvmProcessorLoad,TotalNumberOfThreads
ServerRuntime=OpenSocketsCurrentCount
ClusterRuntime=MulticastMessagesLostCount
EJBPoolRuntime=BeansInUseCurrentCount
Vous pouvez télécharger cet outil via l’URL suivante.
(attention, problème sous IE pour les téléchargement)
jeudi 27 janvier 2011
Présenté dans cet article les différentes façons de récupérer des métriques MBean via JMX dans un contexte Weblogic Server.
Vous pouvez lancer Weblogic avec les JVM Sun, JRockit et AIX. Les métriques peuvent être requêtées de façon native dans Weblogic (Console ou WLST) ou via des outils externes (jconsole SUN, Mission Control Jrockit). Les types de métriques exploitables sont décrits dans l’article suivant : MONITORING & MÉTRIQUES http://j-francois.blogspot.com/2010/03/monitoring-metriques.html)
WEBLOGIC console
La console Weblogic permet de récupérer les métriques et les afficher graphiquement (Voir l’article suivant : WEBLOGIC : EXTENTION DE CONSOLE http://j-francois.blogspot.com/2010/04/weblogic-extention-de-console.html )
WEBLOGIC WLDF
Weblogic Diagnostic Framework intégré dans Weblogic permet de collecter des métriques en interne de l’instance et les historiser dans des fichiers ou en base. L’exploitation de ces métriques doit être réalisée manuellement (pour plus d’information, reportez-vous à la documentation Weblogic).
DiagnosticsàDiagnosticsModulesàNew(‘Module’)
Préciser le target du modul (ActiveConnectionsCurrentCount du datasource de nom ORACLE dans l’exemple présenté)
Diagnosticsà DiagnosticsModulesà${Module}àTarget
Ajouter des métriques à collecter
Diagnosticsà DiagnosticsModulesà${Module}àCollected MetricsàNewàServerRuntimeàMBean Type
Attributes=ActiveConnectionsCurrentCount
Instance ORACLE (pour l’exemple, mon DataSource ORACLE)
Pour visualiser les informations,
DiagnosticsàDiagnosticsModulesàLog Filesà HarvestedDataArchiveàView
Via le scripting Weblogic WLST vous pouvez parcourir l’arbre des MBean et récupère leurs attributs.
Lancer WLST
@CLS
@echo OFF
@SETLOCAL
@call "${WL_HOME}\server\bin\setWLSEnv.cmd" 2> C:\temp\null
"%JAVA_HOME%\bin\java" -Dprod.props.file="%WL_HOME%\.product.properties" weblogic.WLST %
Récupération de l’attribut d’un DataSource de nom ORACLE
connect('weblogic','weblogic1','t3://localhost:7001')
serverRuntime()
cd(‘serverRuntime:/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ORACLE’)
cmo.getActiveConnectionsCurrentCount()
Ou via Jython directement l’API JMX et le nom long du MBean.
from java.util import Hashtable
from javax.management import ObjectName
from javax.management.remote import JMXConnectorFactory
from javax.management.remote import JMXServiceURL
serviceURL= JMXServiceURL("t3", "localhost", 7001, "/jndi/weblogic.management.mbeanservers.runtime")
h= Hashtable()
h.put("java.naming.security.principal", "weblogic")
h.put("java.naming.security.credentials", "weblogic1")
h.put("jmx.remote.protocol.provider.pkgs", "weblogic.management.remote")
connector = JMXConnectorFactory.connect(serviceURL, h)
connection = connector.getMBeanServerConnection()
mbeanName= "com.bea:ServerRuntime=AdminServer,Name=ORACLE,Type=JDBCDataSourceRuntime"
mbeanObjName=ObjectName(mbeanName)
attributeName="ActiveConnectionsCurrentCount"
attributeValue = connection.getAttribute(mbeanObjName, attributeName)
print "%(mbeanName)s.%(attributeName)s -> %(attributeValue)s" % vars()
Ou JAVA
import java.util.Hashtable;
import javax.management.ObjectName;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.naming.Context;
import javax.management.MBeanServerConnection;
import javax.management.remote.JMXConnector;
class Test {
public static void main(String[] args) {
Hashtable h = new Hashtable();
h.put(Context.SECURITY_PRINCIPAL , "weblogic");
h.put(Context.SECURITY_CREDENTIALS, "weblogic1");
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "weblogic.management.remote");
try {
JMXServiceURL serviceURL= new JMXServiceURL("t3", "localhost", 7001, "/jndi/weblogic.management.mbeanservers.runtime");
JMXConnector connector = JMXConnectorFactory.connect(serviceURL, h);
MBeanServerConnection connection = connector.getMBeanServerConnection();
String mbeanName= "com.bea:ServerRuntime=AdminServer,Name=ORACLE,Type=JDBCDataSourceRuntime";
ObjectName mbeanObjName= new ObjectName(mbeanName);
String attributeName="ActiveConnectionsCurrentCount";
Object attributeValue = connection.getAttribute(mbeanObjName, attributeName);
System.out.println("ActiveConnectionsCurrentCount -> "+attributeValue);;
} catch (Exception exc) {
exc.printStackTrace();
}
}
}
JRockit Mission Control
Mission Control possède une vue MBean via sa console. Pour afficher les métriques Weblogic, il faut cocher les métriques suivantes dans la console et ajouter un properties JAVA sur l’instance à monitorer.
${domain name}àConfigurationàGeneralàAdvanced
Platform MBean Server Enabled (check)
Platform MBean Server Used (check)
Properties JAVA à ajouter dans le scripte de démarrage de l’instance à monitorer
-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder
Une fois redémarrée l’instance avec ces paramétrages, lancer l’outil JRockit et connecter vous à l’instance :
%JAVA_HOME%\bin\jrcmd.[exe/sh]
DiscoveredàLocalàWeblogic Server (cas d’une instance local à l’outil)
com.bea.AdminServer.ORACLE.JDBCConnectionPoolRuntime.ActiveConnectionCurrentCount
Vous pouvez également faire une recherche par type de MBean (JDBCConnectionPoolRuntime)
Et visualiser via un graphique.
JConsole/Visual VM
La console du JDK permet de visualiser les métriques (Voir l’article suivant : Weblogic MBean JConsole http://j-francois.blogspot.com/2010/03/weblogic-mbean-jconsole.html ). Vous pouvez utiliser le même paramétrage que présenté ci-dessus et lancer la JConsole
Platform MBean Server Enabled (check)
Platform MBean Server Used (check)
-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder
${JAVA_HOME}\bin\jconsole.exe
Ou via Visual VM
${JAVA_HOME}\bin\jvisualvm.exe
jeudi 8 avril 2010
Cet outil étend les fonctions WLST sur la migration de messages JMS d’une file à l’autre. Cette fonctionnalité est présente via la console Weblogic mais n’existe pas en natif dans les API WLST.
· Scripte d’exportation d’une file JMS vers un fichier
#IMPORT/EXPORT FROM FILE - START
# must be on a domain runtime to proceed
domainRuntime()
print "--- ### export all message from SRC to file/dir \n"
print " - go to SRC MBean [%s] \n" % mbean_src
cdMbeanQueueDomainRuntime(distributed_src, instancename_src, jmsservername_src, modulename, queue_src )
print " - lsMessages from SRC ...\n"
lsMessages()
print " - exportQueueMessagesToFile ...\n"
exportQueueMessagesToFile( outputfile )
print " - exportQueueMessagesToDir ...\n"
exportQueueMessagesToDir( outputdir )
· Scripte d’importation d’un fichier vers une file JMS.
print "--- ### import to DST from file/dir\n"
print " - go to DST MBean [%s] \n" % mbean_dst
cdMbeanQueueDomainRuntime(distributed_dst, instancename_dst, jmsservername_dst, modulename, queue_dst )
print " - importQueueMessagesFromFile ...\n"
importQueueMessagesFromFile( outputfile )
print " - importQueueMessagesFromDir ...\n"
importQueueMessagesFromDir( outputdir )
print " - RESULT ...\n"
print " - lsMessages ...\n"
lsMessages()
· Même fonctionnalité mais sur un ID de message.
ID=getFirtsFromListID()
print "--- ### get one message from the DST liste [ID=%s] ...\n" % ID
print " - export [ID=%s]...\n" % ID
exportQueueMessageToFileById( ID, outputfile + ".uniq" )
print " - deleteMessages ...\n"
deleteMessages()
print " - lsMessages ...\n"
lsMessages()
print " - importQueueMessagesFromFile ...\n"
importQueueMessagesFromFile( outputfile + ".uniq" )
print " - lsMessages(one message [ID=%s]) ...\n" % ID
lsMessages()
ID=getFirtsFromListID()
print " - deleteMessagesById(%s) ...\n" % ID
deleteMessagesById( ID )
· Suspension et activation d’une file JMS pour ne pas prendre de message supplémentaire lors des imports/exports
print "--- ### pose/resume online queue ...\n"
print " - poseAllOnlineQueue ...\n"
poseAllOnlineQueue()
print " - resumeAllOnlineQueue ...\n"
resumeAllOnlineQueue()
print "--- ### pose/resume offline queue ...\n"
cdMbeanQueueEdit(distributed_dst, instancename_dst, jmsservername_dst, modulename, queue_dst )
print " - pauseAllOfflineQueue ...\n"
pauseAllOfflineQueue()
print " - resumeAllOfflineQueue ...\n"
resumeAllOfflineQueue()
· Changer les messages de file JMS sans passer par un fichier intermédiaire.
print " - move the messages from the SRC to DST"
cdMbeanQueueDomainRuntime(distributed_dst, instancename_dst, jmsservername_dst, modulename, queue_dst )
target=cmo.getDestinationInfo()
cdMbeanQueueDomainRuntime(distributed_src, instancename_src, jmsservername_src, modulename, queue_src )
count=cmo.moveMessages('',target)
print "[%s]" % count
· Vous pouvez filtrer sur un ensemble de critère vous pouvez utiliser la méthode suivante
exportQueueMessagesToFileFiltered( filter, outputFileName ):
avec comme filtre possible :
QUERY : message selection or message filter
The selector is a regular boolean expression consists of a string with syntax similar to where clause of an SQL select statement. Selector can include various attributes associated with the messages headers and properties. WebLogic JMS allows the users to create selector expression based on JMS message header fields and or property fields. In addition to the standard JMS message header fields, you can also use the WebLogic specific system properties such as JMS_BEA_UnitOfOrder, JMS_BEA_Size and JMS_BEA_State.
Contents of the message body cannot be used as part of the filter xpression except for XMLMessage type. For XML message types, WebLogic provides a special syntax called “JMS_BEA_SELECT” based on XPATH expression in addition to the standard SQL select syntax. The XML selector can be used to select messages based on the content of the XML message body.
QUERY :
operator : <, >, =, LIKE (with %)
METADATA | ||
Property Name | Description | Values |
JMS_BEA_UnitOfOrder | The Unit Of Order Identifier | A valid client or system generated string representation of a UOO ID |
JMS_BEA_SizeThe | The size of the message in bytes | A long value |
JMS_BEA_State | The current state of the message | String literal |
JMS_BEA_SequenceNumber | The sequence number assigned to messages by the system upon arrival on the destination | A long value. |
JMS_BEA_DeliveryTime | Birth time of the message | A long value |
JMS_BEA_RedeliveryLimit | The number of the redelivery attempts to be made before moving the message onto error destination | A long value |
JMSXDeliveryCount | The number of times the message | A long value |
HEADER |
JMSMessageID |
JMSDeliveryMode |
JMSExpiration |
JMSPriority |
JMSRedelivered |
JMSTimestamp |
JMS_BEA_State | |||
State | Description | Bitmask | String literal to be used in message selector |
Visible | The message is visible on the destination and may be consumed | 1 | visible |
Send | The message is pending because it is associated with an in progress send operation | 2 | send |
Received | The message is pending because it has been received by a consumer but not yet acknowledged | 4 | receive |
Transaction | The message is associated with a transactional “send” or “receive” operation that is in progress. | 8 | ‘send transaction’ or ‘receive transaction’ |
Ordered | The message belongs to a Unit of Order. | 16 | ordered |
Delayed | The message is pending because it has a scheduled delivery time or is otherwise delayed. | 32 | delayed |
Expired | The message has expired and is no longer available for consumption. | 64 | expired |
Redelivery-count-exceeded | The message has exceeded the redelivery count set for the destination and is no longer available for consumption | 128 | redelivery-count-exceeded |
Paused | The message is pending because of a destination pause operation | 256 | paused |
Sequenced | The message that is part of a SAF sequence | 512 | sequenced |
Unit of work component | The message is part of an Unit of work (UOW) | 1024 | unit-of-work-component |
Deleted | The message marked for deletion | 1073741824 | deleted |
Sample
Get all the messages that are in the queue with priority great than 5
“JMSPriority > 5”
Get all the messages that belong to the unit-of-order “BLUE”
“JMS_BEA_UnitOfOrder LIKE ‘BLUE’”
Get all the messages that are bigger than 1k size
“JMS_BEA_Size > 1024”
Get all the messages that are pending as part of a receive transaction
“JMS_BEA_State LIKE ‘receive transaction’”
Inscription à :
Articles (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
ARCHIVES
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)































