IBM WebSphere Extended J2EE Discovery using configuration file parsing
Note
This pattern is only available in Atrium Discovery 8.3 and later
Overview
The DiscoverWebSphere pattern performs a deep discovery of WebSphere instances via configuration files by parsing the results to build a J2EE inferred model of its Applications and Resources.
In particular it tries to:
- get the application names from serverindex.xml and create the application SoftwareComponent node.
- get the JNDI names of all the resources used by each application from the <appname.ear>/WEB-INF/web.xml file
- read the resources.xml files for the server, node and cell and get database and mail resource info.
- create the database and mail Detail nodes.
- link each resource with the apps that use it.
Trigger
The DiscoverWebSphere pattern triggers off the creation or confirmation of a IBM WebSphere Application Server Software Instance whose profile_dir, cell_name and node_name attributes all exist.
serverindex.xml Configuration File
The pattern then tries to read the serverindex.xml file on the following path:
UNIX
- <profile_dir>/config/cells/<cell_name>/nodes/<node_name>/serverindex.xml
Windows
- <profile_dir>\config\cells\<cell_name>\nodes\<node_name>\serverindex.xml
The pattern stops immediately if the serverindex.xml file can not be read.
Deployed Applications
The contents of the serverindex.xml file are parsed using the following xpath to extract a list of application names:
//serverEntries[@serverName="<server_name>"]/deployedApplications/text()
where <server_name> is correspondent server name of trigger WebSphere Application Server Software Instance
Server Log
The pattern then tries to extract results matching "ADMN0015I", "WSVR022[01]I WSVR0100W" or "WSVR022[01]I|WSVR0100W" from SystemOut*.log files on the following path:
UNIX
- <profile_dir>/logs/<server_name>/SystemOut*.log
Windows
- <profile_dir>\\logs\\<server_name>\\SystemOut*.log
From the results, it then tries to extract WebSphere's startup time using the following regular expression:
(?:\n|^).*\[(.*)\]
and then the timestamp and state of each application using the following regular expression:
(?:\n|^).*\[(.*)\].*Application\s(started|stopped):\s(\w+)
Deployed Apps
The pattern then extracts the application name using the following regular expression:
- ^(.*?)\.ear
and updates its running state.
The pattern then extracts the ear name using the following regular expression:
- ^(.*?\.ear)
and lists the contents of the following directory:
- <profile_dir>/installedApps/<cell_name>/<ear_name>
The pattern then gets the JNDI names of all the resources used by each application by reading its web.xml file on the following path:
- <app_path>/<app_dir.name>/WEB-INF/web.xml
and then extract the res refs using the following xpath:
- /web-app/resource-ref/res-ref-name/.
and then the res env refs using the following xpath:
- /web-app/resource-env-ref/resource-env-ref-name/.
Clustered Application modeling
If the discovered Application belongs to clustered WebSphere instance the Extended discovery pattern will search for the related SoftwareCluster Node and will create a Containment link with it.
JDBC and Mail Resources
The pattern then reads the resources.xml file for the server, node and cell to get database and mail resource information:
- <profile_dir>/config/cells/<cell_name>/nodes/<node_name>/servers/<server_name>/resources.xml
Also the pattern tries to check is this setup clustered by looking at existence of any directories inside 'clusters' sub-directory of the cells directory:
- <profile_dir>/config/cells/<cell_name>/clusters
and then the pattern obtains cluster configuration from each found cluster.xml configuration file:
- <profile_dir>/config/cells/<cell_name>/clusters/<cluster>/cluster.xml
where <cluster> is found sub-directory name in 'clusters' directory and in the same time it is the name of existing cluster we should check
After obtaining cluster config the pattern checks for belonging of currently processing server to this cluster by result of matching the following XPath query against cluster.xml:
//members[@memberName="<server_name>"]/@memberName
where <server_name> is server name of current server
In successful case this means that current server belongs to this cluster and the following resources configuration file is added to list of processed files:
- <profile_dir>/config/cells/<cell_name>/clusters/<cluster>/resources.xml
DatabaseDetail and MailDetail nodes are then created for each JDBC or Java Mail resource found.
JDBC Resource identification is based on using the following XPath query against any of resources.xml:
- resources.jdbc:JDBCProvider/factories/@name
Java Mail Resource is identified by the following Xpath query:
- resources.mail:MailProvider/factories/@name
Each resource is then linked with the apps that use it.
Clustered JDBC and Mail Resources
If the Extended WebSphere pattern determines the Resource's scope and if its configuration file belongs to cluster it will create a link to correspondent SoftwareCluster instance instead of WebSphere Application Server SoftwareInstance.
Comments
Log in or register to comment.