diff --git a/extra/clustermon.sh b/extra/clustermon.sh deleted file mode 100644 index 8451df3a81..0000000000 --- a/extra/clustermon.sh +++ /dev/null @@ -1,173 +0,0 @@ -#!/bin/bash -# -# Cluster Monitoring Script, for use with crm_mon and Pacemaker, -# to emulate the no-longer-supported --snmp-traps and --mail options. -# (However, alerts are the recommended means of doing this since -# Pacemaker 1.1.15.) -# -# Copyright 2013-2017 the Pacemaker project contributors -# -# The version control history for this file may have further details. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -# Uncomment these lines to run a test of the script. -#CRM_notify_desc=OK -#CRM_notify_node=freepbx-a -#CRM_notify_rc=0 -#CRM_notify_recipient=emailalert@hipbx.org -#CRM_notify_rsc=spare_fs -#CRM_notify_status=0 -#CRM_notify_target_rc=0 -#CRM_notify_task=start - -# Set some defaults -FROMADDR=cluster@`hostname` - -# Check to see if we should do anything with this alert. -# You could put some smarts in this, a database lookup, etc -# This is just a simple setup that tries to guess what you -# want to do based on the notify_recipient option to crm_mon - -# Basic examples: -# pcs resource create ClusterMon-Email --clone ClusterMon user=root extra_options="-E /usr/local/bin/clustermon-new.sh -e emailalert@hipbx.org" -# pcs resource create ClusterMon-SNMP --clone ClusterMon user=root extra_options="-E /usr/local/bin/clustermon-new.sh -e 192.168.254.254" - -function getDest { - # This looks for an '@' in the notify_recipient. If it finds it, it'll send an email. - # Otherwise, it'll send a SNMP trap. - if [ ! -z "${CRM_notify_recipient}" ] - then - if [[ "${CRM_notify_recipient}" == *@* ]] - then - SMTPDEST=${CRM_notify_recipient} - DEST='smtp' - else - SNMPDEST=${CRM_notify_recipient} - DEST='snmp' - fi - else - # Hard coded defaults. Please change these. - SMTPDEST='ididntchangethedefaults@hipbx.org' - SNMPDEST='192.168.254.254' - SNMPCOMMUNITY='public' - # If 'DEST' is blank, nothing happens. - DEST='both' - fi -} - -# Other Predefined functions - -function sendsmtp { - # Re-implemtation of code in crm_mon.c - [ -z "${SMTPDEST}" ] && return - - [ -z "${CRM_notify_node}" ] && CRM_notify_node="-" - node=${CRM_notify_node} - [ -z "${CRM_notify_rsc}" ] && CRM_notify_rsc="-" - rsc=${CRM_notify_rsc} - [ -z "${CRM_notify_desc}" ] && CRM_notify_desc="-" - desc=${CRM_notify_desc} - - crm_mail_prefix="Cluster notification" - - subject="${crm_mail_prefix} - ${CRM_notify_task} event for ${rsc} on ${node}" - body="\n${crm_mail_pref}\n====\n\n" - if [ ${CRM_notify_target_rc} -eq ${CRM_notify_rc} ] - then - body="${body}Completed operation ${CRM_notify_task} for resource ${rsc} on ${node}\n" - else - body="${body}Operation ${CRM_notify_task} for resource ${rsc} on ${node} failed: ${desc}\n" - fi - statusstr=$(ocf_status ${CRM_notify_status}) - body="${body}\nDetails:\n\toperation status: (${CRM_notify_status}) ${statusstr}\n" - if [ "${CRM_notify_status}" -eq 0 ] - then - result=$(ocf_exitcode ${CRM_notify_rc}) - target=$(ocf_exitcode ${CRM_notify_target_rc}) - body="${body}\tscript returned: (${CRM_notify_rc}) ${result}\n" - body="${body}\texpected return value: (${CRM_notify_target_rc}) ${target}\n" - fi - - echo -e $body | mail -r "$FROMADDR" -s "$subject" "$SMTPDEST" -} - -function ocf_status { - case $1 in - -1) echo "pending" ;; - 0) echo "complete" ;; - 1) echo "Cancelled" ;; - 2) echo "Timed Out" ;; - 3) echo "NOT SUPPORTED" ;; - 4) echo "Error" ;; - 5) echo "Not installed" ;; - *) echo "Exceptionally unusual" ;; - esac -} - -function ocf_exitcode { - case $1 in - 0) echo "OK" ;; - 1) echo "Unknown Error" ;; - 2) echo "Invalid Parameter" ;; - 3) echo "Unimplemented Feature" ;; - 4) echo "Insufficient Privileges" ;; - 5) echo "not installed" ;; - 6) echo "not configured" ;; - 7) echo "not running" ;; - 8) echo "master" ;; - 9) echo "master (failed)" ;; - 192) echo "OCF_EXEC_ERROR" ;; - 193) echo "OCF_UNKNOWN" ;; - 194) echo "OCF_SIGNAL" ;; - 195) echo "OCF_NOT_SUPPORTED" ;; - 196) echo "OCF_PENDING" ;; - 197) echo "OCF_CANCELLED" ;; - 198) echo "OCF_TIMEOUT" ;; - 199) echo "OCF_OTHER_ERROR" ;; - *) echo "Exceptionally unknown error" ;; - esac -} - - -function sendsnmp() { - [ -f /usr/bin/snmptrap ] && /usr/bin/snmptrap -v 2c -c "$SNMPCOMMUNITY" "$SNMPDEST" "" PACEMAKER-MIB::pacemakerNotification \ - PACEMAKER-MIB::pacemakerNotificationNode s "${CRM_notify_node}" \ - PACEMAKER-MIB::pacemakerNotificationResource s "${CRM_notify_rsc}" \ - PACEMAKER-MIB::pacemakerNotificationOperation s "${CRM_notify_task}" \ - PACEMAKER-MIB::pacemakerNotificationDescription s "${CRM_notify_desc}" \ - PACEMAKER-MIB::pacemakerNotificationStatus i "${CRM_notify_status}" \ - PACEMAKER-MIB::pacemakerNotificationReturnCode i ${CRM_notify_rc} \ - PACEMAKER-MIB::pacemakerNotificationTargetReturnCode i ${CRM_notify_target_rc} -} - -# Lets see who wants to do what with this. -getDest - -# Do we want to do anything with this alert? -if [ -z "$DEST" ] -then - exit 0; -fi - -if [ "$DEST" == "both" -o "$DEST" == "smtp" ] -then - sendsmtp; -fi - -if [ "$DEST" == "both" -o "$DEST" == "snmp" ] -then - sendsnmp; -fi