Out of the box SCOM 2012 RC will not discover Tomcat servers running as Windows services. There are a few steps required before they will show up as being monitored in SCOM 2012 RC.
I’ve previously installed Tomcat and imported the JEE Management packs to my SCOM 2012 RC test environment.
First of all I’ll check that my Tomcat server is running, in my case Tomcat 7.0 on a Windows Server 2008 R2.
Tomcat seems to be running so I create a new text-file called “config_Tomcat.txt” and list all JEE Application Servers per URL. In my case one: “http://tomcat:8081.
Next, it is time to install BeanSpy. BeanSpy is an application that ships with the JEE MP and will run on the Tomcat server passing information to our SCOM server.
There are four files listed in the BeanSpy directory; BeanSpy.ear, BeanSpy.HTTP.NoAuth.ear, BeanSpy.HTTP.NoAuth.war and BeanSpy.war. Since I’m not using authentication I’ll rename “BeanSpy.HTTP.NoAuth.war” to “BeanSpy.war”. Either put the war-file in the webapps directory to autoimport BeanSpy or manually import it in the Tomcat manager.
“Message: OK” and the BeanSpy application is listed.
Verify that BeanSpy can query the server by trying the URL in a web browser:
http://<FQDN>:<port>/BeanSpy/Stats/Info
You can also try it with a JMXQuery. It will output the result as an XML-file.
Import the MP from the Sample folder called “Microsoft.JEE.UniversalSample.xml”.
This will generate a new folder under “JEE Application Servers” called “Universal application servers”.
Next it’s time to import the applications servers. Start the Operations Manager Shell. Run
./New-JEEAppServer.ps1 -help
to get a list of parameters.
In my case the command line was:
type .\config_Tomcat.txt | .\New-JEEAppServer.ps1 -ManagementServer OM2012 -JEEAppServerType Tomcat -JEEAppServerVersion 7
After a few minutes of waiting the the server will be displayed in “Deep monitored configurations”.
And the applications will be listed under “Applications”.
The Tomcat server and it’s applications are now discovered. For reference, I used the guides that come with the JEE MP’s; “OpsMgr_MP_Tomcat.docx” and “SC2012_JEE_RC_GettingStarted.docx”.
Where do you put the “config_Tomcat.txt”? Is this on the tomcat server? What directory? Does it have to be on the management server?
Put it anywhere on the MS and use the path with the New-JEEAppServer.ps1 cmdlet.
In my case I put all files in the same directory, hence type .\config_Tomcat.txt | .\New-JEEAppServer.ps1 -ManagementServer OM2012 -JEEAppServerType Tomcat -JEEAppServerVersion 7
Hello!
MY powersheel Opmr dont recognize the New-JEEAppServer.ps1, I found like “NewJEEAppServer.ps1” when execute it, shows:
“The term ‘.\JEEAppServerLibrary.ps1’ is not recognized as the name of a cmdlet, function, script file…”
Please, can you help me?
Thanks
Hi!
Locate and copy all three Powershell files to the same folder. You need the Library file to get the other two scripts to work.
JEEAppServerLibrary.ps1
NewJEEAppServer.ps1
RemoveJEEAppServer.ps1
Hi Marcus!
Thanks I resolved it with your help
“Locate and copy all three Powershell files to the same folder”
Pingback: Random, Happy Dev Thoughts
Hello,
I followed your guide (thx btw), and i now have my 2 tomcat servers under the configured application servers view. They are also under the deep monitored configuration. But the state there is not monitored. Do you know why this is? Also when i look under applications, only applications from 1 server are being shown. Also not monitored… Any ideas?
Thanks!
Hi!
Did you run the import-script successfully? Is the Bean-spy application running?
It takes some time before the applications show up in the console. As always, you can try to restart the Operations Manager agent on the server to speed things up.
Look in the Event log if there are some failed discovery script listings.
Hi. Only one application shows up in the “Applications” view, and with no details – it is healthy though.
The Deep Monitoring view also contains one healthy component, and i get all the performance.
Any idea why my Tomcat applications doesnt show?
Hello!
If you only have one Tomcat server, you should only see that one in the Deep Monitoring view.
As to why you only see one application, did the install script run successfully? Any errors in the log? If you have defined a user account running Tomcat you have to set up a RunAs account in SCOM.
Hi Markus, great post!
Im having problems to discovery my tomcat instance, i get the next error when i run the ps command
New-Object : Exception calling “.ctor” with “1” argument(s): “The requested name is valid, but no data of the
type was found”
At C:\Users\_srv_scom_adm\Desktop\Alg\JEEAppServerLibrary.ps1:139 char:19
+ return new-object <<<< Microsoft.EnterpriseManagement.ManagementGroup($Computername)
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
You cannot call a method on a null-valued expression.
At C:\Users\_srv_scom_adm\Desktop\Alg\JEEAppServerLibrary.ps1:125 char:60
+ $monitoringClasses = $managementGroup.GetMonitoringClasses <<<< ($className)
+ CategoryInfo : InvalidOperation: (GetMonitoringClasses:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
The variable '$monitoringClasses' cannot be retrieved because it has not been set.
At C:\Users\_srv_scom_adm\Desktop\Alg\JEEAppServerLibrary.ps1:127 char:27
+ return $monitoringClasses <<<< [0];
+ CategoryInfo : InvalidOperation: (monitoringClasses:Token) [], RuntimeException
+ FullyQualifiedErrorId : VariableIsUndefined
Failed to load class (Microsoft.JEE.Universal.ApplicationServer) from the imported MP's,
Hi!
It looks like the connection to your Management Group isn’t working.
Have you specified the correct name to a Management Server?
Are you starting the script in an Operations Manager Shell?
Have you imported the MP:s in your OM environment prior to running the script?
hello i have problem , i do all but in deep monitor servers look like not monitored.what can i do? i crated run as acount and add in to acounts.
Hello!
Sorry for the late reply. Did you receive any errors running the import script?
We recently put some app servers (Tomcat 5) onto SCOM. The two which are HTTP/no authentication are fine, but we’ve had problems with the four that are HTTPS/basic authentication.
We get the following logged on the SCOM MS running the Health Service Script:
———————————————————–
Source: Health Service Script
Event ID: 100
Details:
HTTPGet.vbs : HTTP commucation failed with: appserver:443/BeanSpy/Stats – Send Error – -2147024891
———————————————————–
So far have tried re-creating runas accounts/profiles, re-distributing them to the app servers, checked DNS, switched off firewalls/anti-virus (proven since doing TCP traces that communication is ok).
If I click on the URL which is inline in the event log on the calling management server (e.g. HTTPGet.vbs : HTTP commucation failed with: appserver:443/BeanSpy/Stats – Send Error – -2147024891) – that link on the SCOM management server opens the URL in IE, prompts for the authentication details, and if I enter them manually (as per what’s in the Basic Authentication runas account/profile), it returns the XML fine! :/
In the BeanSpy section, in Health Explorer, its reporting a 401 (which is what you’d get it you don’t authenticate with the username/password to the app server URL):
HTTP Status Code 401
Unreachable false
Error Code 2147942487
DNS Resolution Failure false
DNS Resolution Time (seconds) 0
TCP Connect Time (seconds) 0
Time To First Byte (seconds) 0
Time To Last Byte (seconds) 0
Redirect Time (seconds) 0
Download Time (seconds) 0
Total Response Time (seconds) 0
Content Size (bytes) 0
Secure Failure Code 0
Certificate will expire in (days) 695
Verb GET
Version HTTP/1.1
Certificate Expired false
Certificate Authority Untrusted false
Certificate CN Invalid false
Response Headers HTTP/1.1 401 Unauthorized Cache-Control: no-cache Date: Fri, 06 Dec 2013 10:05:03 GMT Pragma: No-cache Content-Length: 954 Content-Type: text/html;charset=utf-8 Expires: Thu, 01 Jan 1970 01:00:00 GMT Server: Apache-Coyote/1.1 WWW-Authenticate: Basic realm=”myrealm”
Response Url
https://appserver:443/BeanSpy/Stats
Request Headers
GET /BeanSpy/Stats HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Connection: Keep-Alive
Response Body See end of page for full Response Body
Any ideas? That is works using the URL and manually supplying the basic authentication credentials (as per what’s in the runas account) seems to prove that BeanSpy is all running ok. But cannot find anything about what this ‘Send Error’ entails?!
Hi there,
I put on application to SCOM, but the state is “not monitored” since days…
I got no errors with import Script.
Processed app server: http://:8080 type: Tomcat Version: 7
All Eventlogs are clean.
I still have a problem to query ageinst the FQDN. It seems to be a Proxy Case. Do that have to the FQDN?
Hi
I am using Websphere 8.5.5.3. when I am running NewJEEAppServer.ps1, I am getting this given error though I imported all the MPs for Websphere 8.
Failed to load class (Microsoft.JEE.Universal.ApplicationServer) from the imported MP’s,
please ensure MP’s JEE MP’s are imported.
And after imported the Management packs and deployed the BeanSpy, I am not able to see the Websphere Details in SCOM 2012 R2. Any idea to make it success..