====== My Alert (CHANGEME) ======
^ Author | [[ funkju@gmail.com | Justin Funk ]] |
^ Compatibility | Xymon 4.2 |
^ Requirements | Perl, Net::XMPP |
^ Download | None |
^ Last Update | 2009-09-29 |
===== Description =====
Send Xymon Alerts to GTalk via XMPP.
===== Installation =====
This script requires Perl and Net::XMPP
- Install Net::XMPP via CPAN with:
perl -MCPAN -e "install Net::XMPP"
- Place gtalk_alert.pl in the ext/ directory in your xymon sever installation.
- Replace USERNAME and PASSWORD in the gtalk_alert.pl script with the username and password of your alerting google account. (HINT: create a new account to just send alerts- that way you won't have to store your e-mail account password in plain test).
-Make the script executable:
chmod 755 gtalk_alert.pl
- Add the following line in whichever alert for which you want messages
SCRIPT [XYMON_SERVER_ROOT]ext/gtalk_alert.pl [RECIPIENT] FORMAT=SMS
- And of course you replaced [XYMON_SERVER_ROOT] with the full path to your xymon server directory and [RECIPENT] with the google account that you want to recieve messages.
===== Source =====
==== gtalk_alert.pl ====
#!/usr/bin/perl -w
#
# A script to send BB alerts to a GTalk client
# @author Justin Funk
# @date 9/29/2009
#
#
# Based off of work by Thus0
#
# Copyright (c) 2005, Thus0 . All rights reserved.
# released under the terms of the GNU General Public License v2
#
# The script get the following environment variables pre-defined so
# that they can send a meaningful alert:
#
# BBCOLORLEVEL - The color of the alert: "red", "yellow" or "purple"
# BBALPHAMSG - The full text of the status log triggering the alert
# ACKCODE - The "cookie" that can be used to acknowledge the alert
# RCPT - The recipient, from the SCRIPT entry
# BBHOSTNAME - The name of the host that the alert is about
# MACHIP - The IP-address of the host that has a problem
# BBSVCNAME - The name of the service that the alert is about
# BBSVCNUM - The numeric code for the service. From SVCCODES definition.
# BBHOSTSVC - HOSTNAME.SERVICE that the alert is about.
# BBHOSTSVCCOMMAS - As BBHOSTSVC, but dots in the hostname replaced with commas
# BBNUMERIC - A 22-digit number made by BBSVCNUM, MACHIP and ACKCODE.
# RECOVERED - Is "1" if the service has recovered.
# DOWNSECS - Number of seconds the service has been down.
# DOWNSECSMSG - When recovered, holds the text "Event duration : N" where
# N is the DOWNSECS value.
use strict;
use Net::XMPP;
## Username and Password of Account
## an account specificlly for alerts can be made at
## https://www.google.com/accounts/NewAccount
my $username = "USERNAME";
my $password = "PASSWORD";
## Get recipent from hobbit-alerts.cfg
my $to = $ENV{'RCPT'};
my $resource = "PerlBot";
## Google Talk Configuration
my $hostname = 'talk.google.com';
my $port = 5222;
my $componentname = 'gmail.com';
my $connectiontype = 'tcpip';
my $tls = 1;
## Setup and connect
my $Connection = new Net::XMPP::Client();
my $status = $Connection->Connect(
hostname => $hostname, port => $port,
componentname => $componentname,
connectiontype => $connectiontype, tls => $tls);
## If connection failed- quit
if (!(defined($status))) {
print "ERROR: XMPP connection failed.\n";
print " ($!)\n";
exit(0);
}
my $sid = $Connection->{SESSION}->{id};
$Connection->{STREAM}->{SIDS}->{$sid}->{hostname} = $componentname;
## Authenticate with Google
my @result = $Connection->AuthSend(
username => $username, password => $password,
resource => $resource);
## If failure
if ($result[0] ne "ok") {
print "ERROR: Authorization failed: $result[0] - $result[1]\n";
exit(0);
}
## Send the message
$Connection->MessageSend(
to => "$to\@$componentname", body => $ENV{'BBALPHAMSG'},
resource => $resource);
===== Known Bugs and Issues =====
===== To Do =====
===== Credits =====
Net::XMPP code based off Thus0
===== Changelog =====
* **2009-09-29**
* Initial release