Search Exchange
Search All Sites
Nagios Live Webinars
Let our experts show you how Nagios can help your organization.Login
Directory Tree
Server Push Notifications for Android
Current Version
1.0.0
Last Release Date
2014-03-08
Compatible With
- Nagios 3.x
Owner
Website
License
GPL
Hits
33131
Meet The New Nagios Core Services Platform
Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.
Monitoring Made Magically Better
- Nagios Core on Overdrive
- Powerful Monitoring Dashboards
- Time-Saving Configuration Wizards
- Open Source Powered Monitoring On Steroids
- And So Much More!
To send push notifications to the Android App you need to apply these changes. Example using PHP but you can also use a shell script etc. In this tutorial i use Debian Squeeze so path and files could be different to your Linux distribution
1) Edit /etc/nagios3/comands.cfg and insert the following code under the "NOTIFICATION COMMANDS" section
# 'server-push-notifications' comannd definition
define command{
command_name server-push-notifications
command_line php /etc/nagios3/send.php $NOTIFICATIONTYPE$ $SERVICEDESC$ "***** Nagios *****nnHost: $HOSTALIAS$nAddress: $HOSTADDRESS$nState: $SERVICESTATE$nnDate/Time: $LONGDATETIME$nnAdditional Info:nn$SERVICEOUTPUT$"
}
2) Create a new file /etc/nagios3/send.php with the following content
class notify_obj {
public $notification = array();
public function __construct() {
$this->notification = array(
"username"=>"",
"password"=>"",
"category"=>"",
"encrypted"=>"",
"flags"=>"",
"service"=>"",
"title"=>"",
"message"=>""
);
}
}
$pushmsg = new notify_obj();
$pushmsg->notification["username"] = "YOUR USERNAME"; // Change this to the username in your app
$pushmsg->notification["password"] = "YOUR PASSWORD"; // Change this to the password set in your app
$pushmsg->notification["category"] = "1";
$pushmsg->notification["encrypted"] = "0";
$pushmsg->notification["flags"] = "0";
$pushmsg->notification["service"] = htmlentities($argv[2], ENT_QUOTES, "UTF-8");
$pushmsg->notification["title"] = htmlentities($argv[1], ENT_QUOTES, "UTF-8");
$pushmsg->notification["message"] = htmlentities($argv[3], ENT_QUOTES, "UTF-8");
$jsonString = json_encode($pushmsg);
// Send JSON Object to Push Server via Curl
$ch = curl_init();
// Replace SERVERNAME with the one mentioned in the settings of the APP.
curl_setopt($ch, CURLOPT_URL, "https://SERVERNAME/pushjson.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // See API docs in forum to activate!
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonString);
curl_setopt($ch, CURLOPT_TIMEOUT, '10'); // wait max 10s to complete
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, '8' ); // wait max 8s to connect
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
)
);
$result = curl_exec($ch);
curl_close($ch);
// Check $result for any status codes coming back from the server if you need
?>
3) Save the file and assign correct permissions so Nagios can execute it later
chown nagios:nagios /etc/nagios3/send.php
chmod 755 /etc/nagios3/send.php
4) Edit /etc/nagios3/conf.d/contacts_nagios2.cfg and configure the default contact like below. Please take note for this example I removed any email notification from the default contact for better readability. For more options see the Nagios Manual.
define contact{
contact_name root
alias Root
service_notification_period 24x7
service_notification_options w,u,c,r,f
service_notification_commands server-push-notifications
host_notification_period 24x7
host_notification_options d,u,f,r,s
host_notification_commands server-push-notifications
}
5) Save the file and restart Nagios
/etc/init.d/nagios3 restart
1) Edit /etc/nagios3/comands.cfg and insert the following code under the "NOTIFICATION COMMANDS" section
# 'server-push-notifications' comannd definition
define command{
command_name server-push-notifications
command_line php /etc/nagios3/send.php $NOTIFICATIONTYPE$ $SERVICEDESC$ "***** Nagios *****nnHost: $HOSTALIAS$nAddress: $HOSTADDRESS$nState: $SERVICESTATE$nnDate/Time: $LONGDATETIME$nnAdditional Info:nn$SERVICEOUTPUT$"
}
2) Create a new file /etc/nagios3/send.php with the following content
class notify_obj {
public $notification = array();
public function __construct() {
$this->notification = array(
"username"=>"",
"password"=>"",
"category"=>"",
"encrypted"=>"",
"flags"=>"",
"service"=>"",
"title"=>"",
"message"=>""
);
}
}
$pushmsg = new notify_obj();
$pushmsg->notification["username"] = "YOUR USERNAME"; // Change this to the username in your app
$pushmsg->notification["password"] = "YOUR PASSWORD"; // Change this to the password set in your app
$pushmsg->notification["category"] = "1";
$pushmsg->notification["encrypted"] = "0";
$pushmsg->notification["flags"] = "0";
$pushmsg->notification["service"] = htmlentities($argv[2], ENT_QUOTES, "UTF-8");
$pushmsg->notification["title"] = htmlentities($argv[1], ENT_QUOTES, "UTF-8");
$pushmsg->notification["message"] = htmlentities($argv[3], ENT_QUOTES, "UTF-8");
$jsonString = json_encode($pushmsg);
// Send JSON Object to Push Server via Curl
$ch = curl_init();
// Replace SERVERNAME with the one mentioned in the settings of the APP.
curl_setopt($ch, CURLOPT_URL, "https://SERVERNAME/pushjson.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // See API docs in forum to activate!
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonString);
curl_setopt($ch, CURLOPT_TIMEOUT, '10'); // wait max 10s to complete
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, '8' ); // wait max 8s to connect
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
)
);
$result = curl_exec($ch);
curl_close($ch);
// Check $result for any status codes coming back from the server if you need
?>
3) Save the file and assign correct permissions so Nagios can execute it later
chown nagios:nagios /etc/nagios3/send.php
chmod 755 /etc/nagios3/send.php
4) Edit /etc/nagios3/conf.d/contacts_nagios2.cfg and configure the default contact like below. Please take note for this example I removed any email notification from the default contact for better readability. For more options see the Nagios Manual.
define contact{
contact_name root
alias Root
service_notification_period 24x7
service_notification_options w,u,c,r,f
service_notification_commands server-push-notifications
host_notification_period 24x7
host_notification_options d,u,f,r,s
host_notification_commands server-push-notifications
}
5) Save the file and restart Nagios
/etc/init.d/nagios3 restart