Sie können Ihre Icinga2 Monitoring-Benachrichtigungen auch durch ein benutzerdefiniertes, in Python geschriebenes Skript mit Hilfe des Python-Programms "tweepy" twittern.
1. Installieren Sie das Python-Programm "tweepy"
Sie benötigen eine installierte Python-Umgebung und den Python-Paketmanager "pip".
pip install tweepy
2. Autorisierung für Ihren Twitter-Konto
Gehen Sie auf die Seite: http://twitter.com/oauth_clients
Bitte loggen Sie sich in Ihren Twitter-Account ein, den Sie für Ihre Icinga2-Überwachungsbenachrichtigungen verwenden möchten. Dann erstellen Sie bitte eine neue App.
Fügen Sie den "API Consumer Key" und "API Consumer Secret" (im Tab "Keys and tokens" -> "Consumer API keys") Ihrer neu erstellten Anwendung in das folgende Python-Skript ein:
#!/usr/bin/env python
import tweepy
#*** Bearbeiten Sie diese beiden Zeilen ***
API_CONSUMER_KEY = 'ADD YOUR CONSUMER KEY HERE'
API_CONSUMER_SECRET = 'ADD YOUR CONSUMER SECRET HERE'
#*** Bearbeiten Sie diese beiden Zeilen ***
auth = tweepy.OAuthHandler(API_CONSUMER_KEY, API_CONSUMER_SECRET)
auth_url = auth.get_authorization_url()
print 'Please authorize: ' + auth_url
verifier = raw_input('PIN: ').strip()
auth.get_access_token(verifier)
print "API CONSUMER KEY = '%s'" % auth.access_token.key
print "API CONSUMER SECRET = '%s'" % auth.access_token.secret
Erstellen Sie dieses Python-Skript, fügen Sie Ihre API-Schlüssel ein und führen Sie dieses Skript aus, um Ihre Twitter-Anwendung für Ihren Server zu autorisieren.
chmod 755 /tmp/authorize_twitter_app
./authorize_twitter_app
Verfolgen Sie die Ausgabe Ihres neu erstellten Skripts. Sie müssen die URL (Autorisierungsseite) öffnen, die in der Ausgabe angezeigt wird. Geben Sie die PIN, die auf der Twitter-Autorisierungsseite angezeigt wird, in Ihrem Skript ein.
Nun benötigen Sie auch den "Access Key" und "Access Secret", die Sie im Tab "Keys und Token" Ihrer Twitter-App-Einstellungen finden. Sie werden auch angezeigt, nachdem Sie das neu erstellte Python-Skript ("authorize_twitter_app") ausgeführt haben.
3. Erstellen Sie das Python-Skript, das für Erstellen von Tweets verwendet wird, und fügen Sie alle 4 erwähnten Schlüssel hinzu:
#!/usr/bin/env python
import sys
import tweepy
import string
#*** Bearbeiten Sie diese 4 Zeilen ***
API_CONSUMER_KEY = 'ADD YOUR CONSUMER KEY HERE'
API_CONSUMER_SECRET = 'ADD YOUR CONSUMER SECRET HERE'
API_ACCESS_KEY = 'ADD YOUR ACCESS KEY HERE'
API_ACCESS_SECRET = 'ADD YOUR ACCESS SECRET HERE'
#*** Bearbeiten Sie diese 4 Zeilen ***
auth = tweepy.OAuthHandler(API_CONSUMER_KEY, API_CONSUMER_SECRET)
auth.set_access_token(API_ACCESS_KEY, API_ACCESS_SECRET)
api = tweepy.API(auth)
# save commandline argument to shorten the tweet message
s = sys.argv[1]
# Lets tweet!
api.update_status(s[0:280])
chmod 755 /usr/bin/tweet_cli
Dieses Skript wird verwendet, um Tweets auf Twitter zu erstellen. Es erhält eine Zeichenkette als Argument.
4. Benutzerdefinierte Benachrichtigungsskripte für Icinga2
Hinweis: Bevor Sie das benutzerdefinierte Benachrichtigungs-Skript verwenden können, müssen Sie ein neues Benachrichtigungs-Objekt in Ihren Icinga2-Einstellungen erstellen. Sie können mehr über die Benachrichtigungseinstellungen in den Links weiter unten finden.
Erstellen Sie diese beiden Benachrichtigungsskripte (für Hosts und Services) im Ordner /etc/icinga2/scripts:
- Benachrichtigungs-Skript "tweet-host-notification.sh"
#!/bin/bash
if [ $NOTIFICATIONTYPE = 'CUSTOM' ]
then
/usr/bin/twagios "#$NOTIFICATIONTYPE - Server $HOSTALIAS. $NOTIFICATIONCOMMENT"
else
if [ "$HOSTSTATE" = 'UP' ] || [ "$HOSTSTATE" = 'OK' ]
then
/usr/bin/twagios "#$NOTIFICATIONTYPE OK - SERVER #$HOSTALIAS is $HOSTSTATE. Thanks for your patience."
else
/usr/bin/twagios "#$NOTIFICATIONTYPE - SERVER #$HOSTALIAS is $HOSTSTATE. Will be fixed asap."
fi
fi
- Benachrichtigungs-Skript "tweet-services-notification.sh
#!/bin/bash
if [ $NOTIFICATIONTYPE = 'CUSTOM' ]
then
/usr/bin/twagios "#$NOTIFICATIONTYPE - Service $SERVICEDISPLAYNAME. $NOTIFICATIONCOMMENT"
else
if [ "$SERVICESTATE" = 'UP' ] || [ "$SERVICESTATE" = 'OK' ]
then
/usr/bin/twagios "#$NOTIFICATIONTYPE OK - SERVICE #$SERVICEDISPLAYNAME is $SERVICESTATE. Thanks for your patience."
else
/usr/bin/twagios "#$NOTIFICATIONTYPE - SERVICE #$SERVICEDISPLAYNAME on #$HOSTALIAS is $SERVICESTATE. Will be fixed asap."
fi
fi
Für weitere Informationen über tweepy:
https://github.com/tweepy/tweepy
Weitere Informationen über icinga2-Benachrichtigungen:
https://icinga.com/docs/icinga2/latest/doc/03-monitoring-basics/#notifications