Zarządzając środowiskami informatycznymi opartymi na Linuksie często zachodzi potrzeba cyklicznego wysyłania powiadomień o stanie maszyny czy działających procesach. Artykuł ten opisuje jak w prosty sposób skonfigurować wysyłanie automatycznych wiadomości e-mail w systemie CentOS7. Oczywiście istnieje wiele gotowych aplikacji do analizy i zgłaszania błędów w systemach informatycznych tj. Centreon. Choć są one bardzo rozbudowane i oferują szeroką gamę modułów to często zachodzi potrzeba otrzymywania niestandardowych powiadomień (np. informacje pobrane ze strony internetowej czy wygenerowane przez jakąś aplikację).
Aby skonfigurować automatyczne wysyłanie wiadomości należy wykonać następujące kroki:
- Konfiguracja automatycznego generowania treści wiadomości
- Konfiguracja Firewalla
- Instalacja oraz konfiguracja pakietu Mutt.
- Konfiguracja zadań cyklicznych w CRONIE.
1. Konfiguracja automatycznego generowania treści wiadomości.
Wszystko co chcemy wysłać umieszczamy w pliku tekstowym, który będzie wykorzystany jako treść wiadomości e-mail. Do jego wygenerowania możemy wykorzystać najróżniejsze systemy czy skrypty. Może być to wynik działania kodu na stronie internetowej lub parę linijek napisanych w Bash-u.
W tym artykule pokażę, jak stworzyć prosty skrypt Bash generujący plik tekstowy z najważniejszymi parametrami systemu: Wykorzystanie CPU, RAM-u, dysku itp. Dla uproszczenia należy zalogować się jako użytkownik root i stworzyć nowy katalog /root/skrypty w którym zostanie umieszczony program.
su root
mkdir /root/skrypty
Oczywiście każdy użytkownik może stworzyć swoje skrypty i je wykonywać. Należy jednak pamiętać, że mogą one nie zostać wykonane z powodu braku uprawnień.
Teraz można otworzyć dowolny notatnik i stworzyć nowy plik z rozszerzeniem .sh.
cd /root/skrypty
nano tresc.sh
w treści wpisując:
#!/bin/bash
echo Raport wykorzystania serwera Testowego: > ./serwer.txt
echo >> ./serwer.txt
echo Wykorzystanie dysku: >> serwer.txt
df | grep vg_dane-var >> ./serwer.txt
df | grep vg_system-root >> ./serwer.txt
echo >> ./serwer.txt
echo Informacje o procesorze: >> ./serwer.txt
lscpu | grep CPU: >> ./serwer.txt
echo >> ./serwer.txt
echo Wykożystanie RAM-u i SWAP-u: >> ./serwer.txt
free -h >> ./serwer.txt
echo >> ./serwer.txt
echo Czas pracy serwera: >> ./serwer.txt
uptime >> ./serwer.txt
Następnie należy go zapisać i nadać mu odpowiednie uprawnienia w celu umożliwienia wykonywania kodu.
chmod +x tresc.sh
Na koniec trzeba sprawdzić, czy efekt jego wykonania jest zgodny z naszymi oczekiwaniami przez wykonanie polecenia.
/root/skrypty/tresc.sh
cd /root/skrypty
ls
Jeśli wszystko przebiegło pomyślnie powinien zostać stworzony nowy plik o nazwie tresc.txt i treści:
Raport wykorzystania serwera Testowego:
Wykorzystanie dysku:
Informacje o procesorze:
Tryb(y) pracy CPU: 32-bit, 64-bit
CPU: 4
Lista aktywnych CPU: 0-3
Rodzina CPU: 6Wykożystanie RAM-u i SWAP-u:
total used free shared buff/cache available
Mem: 3,7G 3,1G 516M 8,4M 124M 460M
Swap: 2,0G 0B 2,0GCzas pracy serwera:
19:01:09 up 21 min, 1 user, load average: 0,00, 0,01, 0,02
2. Konfiguracja Firewalla
Aby było możliwe wysyłanie widomości s serwera pracującego na systemie Centos konieczne jest otwarcie odpowiednich porów na zaporze:
firewall-cmd --permanent --add-port=465/tcp
firewall-cmd --permanent --add-port=993/tcp firewall-cmd --reload
firewall-cmd –reload Źródło: https://access.redhat.com/solutions/962473
3. Instalacja oraz konfiguracja pakietu Mutt.
Mutt jest lekkim klientem poczty obsługiwanym z linii komend. Aby go zainstalować należy wydać polecenie:
su root
yum install mutt cyrus-sasl* -y
touch $MAIL
chmod 660 $MAIL
chown `whoami`:mail $MAIL
Teraz można rozpocząć konfigurację klienta przez wydanie polecenia
nano ~/.muttrc
Stworzy ono plik konfiguracyjny w katalogu domowym użytkownika, na którym zostało wykonane. Należy podać w nim parametry połączenia do serwera pocztowego. W celach szkoleniowych założyłem konto na G-mailu i dla niego utworzyłem konfigurację połączenia:
set from = „testmutt1234@gmail.com”
set realname = „testmutt1234”
set imap_user = „testmutt1234@gmail.com”
set imap_pass = „—„
set folder = „imaps://imap.gmail.com:993”
set spoolfile = „imaps://imap.gmail.com/INBOX”
set postponed =”+[Gmail]/Drafts”
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
set smtp_url = „smtps://testmutt1234@gmail.com@smtp.gmail.com:465/”
set smtp_pass = „—„
set move = no
set imap_keepalive = 900
Aby można było zacząć wysyłać wiadomości należy jeszcze zatwierdzić konfigurację przez wydanie polecenia:
mkdir -p ~/.mutt/cache
Połączenie jest gotowe. W celu upewnienia się, że wszystko przebiegło zgodnie z planem należy przetestować połączenie wydając polecenie:
mutt -s „Wiadomość Testowa” twojadres@example.com < /root/skrypty/tresc.txt
gdzie:
Wiadomość testowa – tytuł wiadomości
twojadres@example.com - twój adres e-mail
/root/skrypty/tresc.txt – plik z treścią wiadomości.
Jak widać na zamieszczonym rysunku wysyłanie powiodło się. Przedstawiona konfiguracja dotyczy poczty g-mail lecz inne serwery mogą mieć różne wymagania. Np. w przypadku systemów niewymagających szyfrowania i zezwalających na wysyłanie poczty bez uwierzytelnienia w pliku konfiguracyjnym wystarczy wpisać:
set realname = „Użytkownik”
set from = „uzytkownik@serwer.com”
set smtp_url = „smtp://serwer.com:25”
4. Konfiguracja zadania w CRONIE
Teraz do wcześniej stworzonego kodu tresc.sh można dodać skrypt wysyłający wiadomość e-mail. W tym celu należy go edytować.
nano /root/skrypty/tresc.sh
i dodać nową linijkę:
mutt -s „Raport” biuro@einformatyka.com.pl < /root/skrypty/serwer.txt
Dzięki temu w CRONIE wystarczy skonfigurować jeden skrypt, który zarówno stworzy treść wiadomości jak i ją wyśle.
Aby skonfigurować zadanie cykliczne należy wykonać polecenie
crontab -e
i dopisać do niego następującą linijkę kodu:
01 07 * * * /root/skrypty/raport.sh
gdzie 01 to minuta wykonania a 07 godzina. Po jego zapisaniu wiadomość e-mail będzie wysyłana codziennie o godzinie 7:01.