Wiadomości email – Skrypt
Do wysyłki maili z ostrzeżeniami z Zabbixa możemy wykorzystać różne narzędzia.Przykładowo, instalując odpowiednie aplikacje typu Sendmail lub Msmtp. W poniższym poradniku obejdziemy się bez instalowania dodatkowego oprogramowania na serwerze i podłączymy do Zabbixa, utworzony przez nas skrypt. Dla tego przykładu wykorzystamy konto pocztowe skonfigurowane na serwerze Gmail. Oczywiście, w ten sam sposób możemy podłączyć adres mailowy skonfigurowany na innym serwerze. Wystarczy zmienić nazwę i port serwera SMTP.
Zapraszamy na darmowe szkolenie "Grafana dla początkujących".
Widzimy się 17 października o 13:00! . Zapisz się: https://asdevops.pl/s43/
Na początek sprawdzamy gdzie nasz serwer Zabbixa przechowuje skrypty służące do alarmowania:
vi /etc/zabbix/zabbix_server.conf
Mowi o tym ten parameter „AlertScriptsPath=”. W moim przypadku jest to:
AlertScriptsPath=/usr/lib/zabbix/alert scripts
Oczywiście, możemy tu zmienić tą lokalizację.
Cykl szkoleń Artykuły prowadzone w ramach cyklu „Szkolenie Zabbix”. Wszystkie dotychczasowe części kursu Zabbix znajdziesz w tym miejscu: |
Tworzymy nowy plik ze skryptem:
vi /usr/lib/zabbix/alertscripts/gmailnew.sh
Wrzucamy ten skrypt:
#!/usr/bin/python # -*- coding: utf-8 -*- „”” Zabbix SMTP Alert script for gmail. „””
import sys import smtplib from email.MIMEText import MIMEText from email.Header import Header from email.Utils import formatdate
# Mail Account MAIL_ACCOUNT = ‘twojekonto@gmail.com’ MAIL_PASSWORD = ‘TWOJE HASLO DO POCZTY’
# Sender Name SENDER_NAME = u’Zabbix Alert’
# Mail Server SMTP_SERVER = 'smtp.gmail.com’ SMTP_PORT = 587 # TLS SMTP_TLS = True
def send_mail(recipient, subject, body, encoding=’utf-8′): session = None msg = MIMEText(body, 'plain’, encoding) msg[’Subject’] = Header(subject, encoding) msg[’From’] = Header(SENDER_NAME, encoding) msg[’To’] = recipient msg[’Date’] = formatdate() try: session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) if SMTP_TLS: session.ehlo() session.starttls() session.ehlo() session.login(MAIL_ACCOUNT, MAIL_PASSWORD) session.sendmail(MAIL_ACCOUNT, recipient, msg.as_string()) except Exception as e: raise e finally: # close session if session: session.quit()
if __name__ == '__main__’: „”” recipient = sys.argv[1] subject = sys.argv[2] body = sys.argv[3] „”” if len(sys.argv) == 4: send_mail( recipient=sys.argv[1], subject=sys.argv[2], body=sys.argv[3]) else: print u”””requires 3 parameters (recipient, subject, body) \t$ zabbix-gmail.sh recipient subject body „””
|
Zamieniamy jedynie sekcje:
MAIL_ACCOUNT = 'your.account@gmail.com’
MAIL_PASSWORD = 'your mail password’
Nadajemy uprawnienia do pliku:
chmod 755 /usr/lib/zabbix/alertscripts/gmailnew.sh
W tym momencie możemy podłączyć skrypt do Zabbixa i przetestować jego działanie.