W pierwszej części artykułu, która znajdziesz tutaj: Amazon SNS cz. 1, pokazałem jak przygotować usługę Amazon SNS (Simple Notification Service) do wysyłania powiadomień z systemu monitoringu Icinga 2. Skonfigurowaliśmy politykę dostępu oraz użytkownika w IAM. W tej części przejdziemy do ustawienia parametrów serwera z systemem Icinga2 oraz uruchomimy usługę.
Do wysłania wiadomości SMS z Amazon Web Services wykorzystamy dedykowany zestaw narzędzi Boto3 SDK dla języka Python. Wszystkie dostępne opcję SDK dla innych języków programowania znajdziesz na stronie https://aws.amazon.com/tools/
Zainstalowanie Boto3 nie jest skomplikowane. Zazwyczaj należy wydać jedną z komend w systemie Linux:
pip install boto3
Jeśli napotkasz problem, zwróć się do nas za pomocą formularza o pomoc bądź sprawdź instrukcję na stronie AWS: https://aws.amazon.com/sdk-for-python/
Po zainstalowaniu pakietu należy edytować plik /root/.boto Następnie podajemy dane uwierzytelniające, które posiadamy od momentu utworzenia użytkownika IAM. Sprawdź poniższy kod, który jest przykładowy. Tak powinna wyglądać zawartość pliku. Należy w nim podać własne dane dostępowe.
[Credentials]
ec2_region_name = us-east-1
aws_access_key_id = AK23........6FQ
aws_secret_access_key = 4rc3..........P63cu
Poprawna obsługa powiadomień wymaga napisania własnego skryptu umożliwiającego wysyłanie wiadomość SMS o dowolnej treści. Dla przykładu, zamieszczam poniżej skrypt, pozwalający na wysyłanie wiadomości.
/etc/icinga2/scripts/send_sns.py
#!/usr/bin/env python
import sys
import boto3
message = sys.argv[1:]
client = boto3.client('sns', region_name='us-east-1')
message_string = ', '.join(message)
response = client.publish(
TopicArn = 'arn:aws:sns:us-east-1:ACCOUNT_ID:Icingaweb2',
Message = message_string
)
Zacznijmy od konfiguracji systemu Icinga 2, który służy do wysyłania powiadomień SMS za pomocą konkretnego skryptu.
Przykładowa komenda w Icinga 2 może wyglądać, tak jak poniżej:
object NotificationCommand "snsapi-host-notification" {
import "plugin-notification-command"
command = [ SysconfDir + "/icinga2/scripts/send_sns.py", "$host.state$ $host.name$
$icinga.short_date_time$ output $host.output$" ]
}
Utworzenie powiadomienia, które zostanie przypisane do każdego hosta z włączonymi powiadomieniami o nazwie „pagersns”.
apply Notification "sns-icingaadmins" to Host {
import "snsapi-host-notification"
user_groups = host.vars.notification.pagersns.groups
users = host.vars.notification.pagersns.users
assign where host.vars.notification.pagersns
}
Szablon dla notyfikacji, jaki jest wykorzystywany przez przypisanie powyższego powiadomienia:
template Notification "snsapi-host-notification" {
command = "snsapi-host-notification"
states = [ Up, Down ]
types = [ Problem, Acknowledgement, Recovery, Custom ]
period = "24x7"
}
Do poprawnego przypisania wcześniej wspomnianego powiadomienia, w konfiguracji hosta należy również uwzględniać poniższy kod.
vars.notification["pagersns"] = {
groups = [ "snsapi-admins" ]
}
Krok po kroku opisałem sposób konfiguracji usługi SNS, proces stworzenia nowego użytkownika IAM z ograniczonym dostępem do wskazanej usługi oraz konfigurację systemu monitoringu Icinga 2, który jest wykorzystywany do wysyłania powiadomień SMS.
Artykuł jest długi, jednak to tylko część możliwości, jakie możemy wykorzystać przy zastosowaniu usługi SMS i monitoringu Icinga 2. Jest to jednak idealny początek na rozpoczęcie swojej srogi z usługami AWS, a zwłaszcza z usługą Amazon Simple Notification Service.
Pamiętaj! AWS SNS to nie tylko SMS, to również powiadomienia e-mail czy protokoły HTTP/S. Usługę możesz wykorzystać na wiele sposobów, znajdź odpowiedni kierunek i działaj.
Jeśli masz pytania, śmiało. Wypełnij formularz, porozmawiamy na temat możliwości wdrożenia AWS SNS w Twojej organizacji.