Most likely you can use msend to send an event to BEIM. You need to meet the following two conditions first:
1) You must have a way to detect the issue. This can be done by using any vendor's monitoring tool, or by running your own script (reading the log, e.g.) periodically through cron job.
2) You must be able to call an OS script once an issue is detected.
To install msend on your web-service server, simply copy msend executable from a BEIM server running on the same OS. You also need to copy mcell.dir. Define $MCELL_HOME environment variable and put msend in your path. Keep the same relative directory structure as in your BEIM server. Try the following command first
msend -n <cellname> -a EVENT -m "test"
to see if you need to copy a few more conf files based on the error message. You can choose to ignore warning messages.
Then simply call msend when an issue is detected. See 'msend -h' for full syntax and decide how much detail you want to pass in the event.
Hi Willa Ou,
We have a similar requirement for one of our clients, and have suggested using msend through perl script.
Is there any other method this can be achieved? msend is one option.. any additional ones that we can provide.
Sorry for the delay to answer your question.
BMC provides three general-purpose methods to integrate events from 3rd-party monitoring software into BPPM: msend API, SNMP trap adapter, and iiSDK. In addition, if your 3rd-party monitoring software cannot call msend API but can send emails, you can use email as the 4th method for event integration.
Among all 4 methods, msend API method is the easiest and most reliable integration method. Your 3rd-party monitoring software directly communicates with BPPM cell without using an adapter. Most of the mappings can be done by the event source through simple shell or perl scripts. It also has the built-in buffer and retry mechanism for guaranteed delivery.
SNMP trap adapter method requires mcxa adapter provided by BMC. But you must configure it using MIB file. Mappings in addition to MIB file have to be programmed in MRL rules. It has no guaranteed delivery mechanism before SNMP traps reach mcxa adapter. You also need to figure out your own high-availability strategy.
iiSDK method requires you to write your own adapter in either C or Java. The SDK provides you a library of C or Java APIs that you can call from your C or Java code. From your C or Java code you will build an executable program that runs as an adapter. Since you write your own code, you have more flexibility as what you want your adapter to do.
Email method requires you to write your own email adapter in the language of your choice. Email adapter runs on a computer with process to receive emails such as 'sendmail' in UNIX. In your email adapter, you will need to parse the incoming emails based on their formats, convert each email to an event, and send the event to BPPM cell. Again, it has no guaranteed delivery mechanism and you need to figure out your own high-availability strategy.
Events are pushed from the event source when using msend API, SNMP trap adapter, and email. Only iiSDK can pull events from event source. Web-service interface works in a request/response model that it expects the event destination to pull events out of it. Because a BPPM cell doesn't pull events, you must write your own adapter to pull events out of the web-service at one end, convert the events to the right format, and push the events into BPPM cell.
Effort wise, msend API would be 1, SNMP trap adapter would be 3, email adapter would be 6, and iiSDK would be 10.
Due to extensive effort to use iiSDK, you may want to take a look on what is behind the web service as web service is often just a wrapper for a server based application. It may be easier to let this server based application push its events out using msend API.
Thanks a lot Willa Ou, its decided that we would use msend on the Linux box.
Any specific things we need to take care of for this? I have copied the msend from the remote/Linux directory from my cell, created a msend directory structure, copied over the mcell.dir, mcleint.conf, mcleint.trace and locale directories from my cell.
When I try to execute msend from the command line of the monitored box it throws an error, -bash: msend: command not found.
I am trying to find out the solution, please help if you have any idea
Thanks and Regards,
On your Linux box, you need to define $MCELL_HOME (pointing to server directory) and put $MCELL_HOME/bin in your path.
If your 3rd-party monitoring software cannot load $MCELL_HOME and new path, you may want to write another script, e.g. call_msend.sh. Your 3rd-party monitoring software will just call call_msend.sh with an absolute path. Inside call_msend.sh, you define $MCELL_HOME and call msend.
Hope it helps,
Thanks Willa Ou,
The script thing worked, now have to get in touch with system admins for setting up the $MCELL_HOME and path
Thanks and Regards,
If possible, could you please share the shell script you used in this case to call msend? We have a similar requirement of this sort.
I already have an integration with CA Spectrum using msend API on a Windows environment and I only uploaded msend.exe file (location $MCELL_HOME/remote/Windows/) to remote server and execute it as msend.exe -n @bppmserver/port#mc -a ALERT -m "Message" and was all, my event was generated on BPPM perfectly, on Linux or AIX servers, why I have to upload mcell.dir, mcell.trace, etc. to remote machine?
With just msend.exe, the integration will work. You don't have to have mcell.dir or mcell.trace, etc. to make msend to work.
The purpose of having mcell.dir is that you don't have to hard-code @bppmserver/port#mc in your integration module. You can simply use the cell name you defined in mcell.dir such as ServerCell or RemoteCell1, etc. This is handy especially when you try to 'msend' events to a pair of H/A remote cells. This also makes switching cells or switching from test environment to production environment easier by isolating environment related information (such as server name, port#, etc) in mcell.dir.
Having mcell.trace is to eliminate a warning message. You can safely ignore the warning message without mcell.trace but you may need to explain that to everyone who questions about it. :-)