summaryrefslogtreecommitdiffstats
path: root/health/notifications/alarm-notify.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'health/notifications/alarm-notify.sh.in')
-rwxr-xr-xhealth/notifications/alarm-notify.sh.in73
1 files changed, 51 insertions, 22 deletions
diff --git a/health/notifications/alarm-notify.sh.in b/health/notifications/alarm-notify.sh.in
index 4aef3a521..ea8223097 100755
--- a/health/notifications/alarm-notify.sh.in
+++ b/health/notifications/alarm-notify.sh.in
@@ -896,7 +896,7 @@ date=$(date --date=@${when} "${date_format}" 2>/dev/null)
# ----------------------------------------------------------------------------
# prepare some extra headers if we've been asked to thread e-mails
-if [ "${SEND_EMAIL}" == "YES" -a "${EMAIL_THREADING}" == "YES" ] ; then
+if [ "${SEND_EMAIL}" == "YES" -a "${EMAIL_THREADING}" != "NO" ] ; then
email_thread_headers="In-Reply-To: <${chart}-${name}@${host}>\nReferences: <${chart}-${name}@${host}>"
else
email_thread_headers=
@@ -1480,7 +1480,7 @@ send_slack() {
{
"channel": "#${channel}",
"username": "netdata on ${host}",
- "icon_url": "${images_base_url}/images/seo-performance-128.png",
+ "icon_url": "${images_base_url}/images/banner-icon-144x144.png",
"text": "${host} ${status_message}, \`${chart}\` (_${family}_), *${alarm}*",
"attachments": [
{
@@ -1545,7 +1545,7 @@ send_rocketchat() {
{
"channel": "#${channel}",
"alias": "netdata on ${host}",
- "avatar": "${images_base_url}/images/seo-performance-128.png",
+ "avatar": "${images_base_url}/images/banner-icon-144x144.png",
"text": "${host} ${status_message}, \`${chart}\` (_${family}_), *${alarm}*",
"attachments": [
{
@@ -1592,39 +1592,68 @@ EOF
# alerta sender
send_alerta() {
- local webhook="${1}" channels="${2}" httpcode sent=0 channel severity content
+ local webhook="${1}" channels="${2}" httpcode sent=0 channel severity resource event payload auth
[ "${SEND_ALERTA}" != "YES" ] && return 1
case "${status}" in
- WARNING) severity="warning" ;;
CRITICAL) severity="critical" ;;
+ WARNING) severity="warning" ;;
CLEAR) severity="cleared" ;;
- *) severity="unknown" ;;
+ *) severity="indeterminate" ;;
esac
- info=$( echo -n ${info})
+ if [[ "${chart}" == httpcheck* ]]
+ then
+ resource=$chart
+ event=$name
+ else
+ resource="${host}:${family}"
+ event="${chart}.${name}"
+ fi
- # the "event" property must be unique and repetible between states to let alerta do automatic correlation using severity value
for channel in ${channels}
do
- content="{"
- content="$content \"environment\": \"${channel}\","
- content="$content \"service\": [\"${host}\"],"
- content="$content \"resource\": \"${host}\","
- content="$content \"event\": \"${name}.${chart} (${family})\","
- content="$content \"severity\": \"${severity}\","
- content="$content \"value\": \"${alarm}\","
- content="$content \"text\": \"${info}\""
- content="$content }"
+ payload="$(cat <<EOF
+ {
+ "resource": "${resource}",
+ "event": "${event}",
+ "environment": "${channel}",
+ "severity": "${severity}",
+ "service": ["Netdata"],
+ "group": "Performance",
+ "value": "${value_string}",
+ "text": "${info}",
+ "tags": ["alarm_id:${alarm_id}"],
+ "attributes": {
+ "roles": "${roles}",
+ "name": "${name}",
+ "chart": "${chart}",
+ "family": "${family}",
+ "source": "${src}",
+ "moreInfo": "<a href=\"${goto_url}\">View Netdata</a>"
+ },
+ "origin": "netdata/${this_host}",
+ "type": "netdataAlarm",
+ "rawData": "${BASH_ARGV[@]}"
+ }
+EOF
+ )"
+ if [[ -n "${ALERTA_API_KEY}" ]]
+ then
+ auth="Key ${ALERTA_API_KEY}"
+ fi
- httpcode=$(docurl -X POST "${webhook}/alert" -H "Content-Type: application/json" -H "Authorization: Key $ALERTA_API_KEY" -d "$content" )
+ httpcode=$(docurl -X POST "${webhook}/alert" -H "Content-Type: application/json" -H "Authorization: $auth" --data "${payload}")
if [[ "${httpcode}" = "200" || "${httpcode}" = "201" ]]
then
info "sent alerta notification for: ${host} ${chart}.${name} is ${status} to '${channel}'"
sent=$((sent + 1))
+ elif [[ "${httpcode}" = "202" ]]
+ then
+ info "suppressed alerta notification for: ${host} ${chart}.${name} is ${status} to '${channel}'"
else
error "failed to send alerta notification for: ${host} ${chart}.${name} is ${status} to '${channel}', with HTTP error code ${httpcode}."
fi
@@ -1655,7 +1684,7 @@ send_flock() {
httpcode=$(docurl -X POST "${webhook}" -H "Content-Type: application/json" -d "{
\"sendAs\": {
\"name\" : \"netdata on ${host}\",
- \"profileImage\" : \"${images_base_url}/images/seo-performance-128.png\"
+ \"profileImage\" : \"${images_base_url}/images/banner-icon-144x144.png\"
},
\"text\": \"${host} *${status_message}*\",
\"timestamp\": \"${when}\",
@@ -1715,7 +1744,7 @@ send_discord() {
"channel": "#${channel}",
"username": "${username}",
"text": "${host} ${status_message}, \`${chart}\` (_${family}_), *${alarm}*",
- "icon_url": "${images_base_url}/images/seo-performance-128.png",
+ "icon_url": "${images_base_url}/images/banner-icon-144x144.png",
"attachments": [
{
"color": "${color}",
@@ -1729,7 +1758,7 @@ send_discord() {
}
],
"thumb_url": "${image}",
- "footer_icon": "${images_base_url}/images/seo-performance-128.png",
+ "footer_icon": "${images_base_url}/images/banner-icon-144x144.png",
"footer": "${this_host}",
"ts": ${when}
}
@@ -1952,7 +1981,7 @@ color="grey"
alarm="${name//_/ } = ${value_string}"
# the image of the alarm
-image="${images_base_url}/images/seo-performance-128.png"
+image="${images_base_url}/images/banner-icon-144x144.png"
# prepare the title based on status
case "${status}" in