Obrolan Pasien Seputar Kesehatan

Tuesday, October 1, 2013

Otomatisasi Health Check Server Dengan PHPMailer

Jika ada masalah di server, misalkan server mati mendadak, seringkali seorang sysadmin merasa sedikit kerepotan untuk mengecek kondisi terakhir server sebelum server itu mati.

Karena itu seorang sysadmin membutuhkan sebuah program yang bisa mengirimkan email harian yang berisi info terkini tentang kondisi server.

Program tersebut saya beri nama Daily Report Health Check Server, program ini memanfaatkan phpmailer untuk mengirim email via smtp dan crontab untuk membuat jadwal pegirimannya.

 
Saya asumsikan kita memiliki sebuah web server internal tanpa koneksi ke internet, dan sebuah email server smtp yang terkoneksi ke internet.

Pertama, kita buat script cekserver.sh yang akan memeriksa kondisi kesehatan server terkini.

Contoh script bisa seperti di bawah ini, dan bisa Anda tambahkan info lain sesuai keperluan Anda.

_echo "Login as"
echo "============================================================"
whoami
date
echo "============================================================"
echo "UPTIME"
echo "============================================================"
uptime
echo "============================================================"
echo "PENGECEKAN USER AKTIF"
echo "============================================================"
who
echo "============================================================"
echo "STATUS WEB SERVER"
echo "============================================================"
/etc/init.d/httpd status
/etc/init.d/mysqld status
/etc/init.d/gheat status
echo "============================================================"
echo "PENGECEKAN HARDDISK SPACE"
echo "============================================================"
df -kh
echo "============================================================"
echo "PENGECEKAN MEMORY"
echo "============================================================"
free -t -m
echo "============================================================"
echo "============================================================"
echo "PORTFORWARDER"
echo "============================================================"
ps -ef | grep portfwd
echo "============================================================"
echo "ROUTING TABLE"
echo "============================================================"
/sbin/route
echo "============================================================"
echo "NETSTAT"
echo "============================================================"
netstat | grep ESTABLISHED
echo "============================================================"
echo "END OF CHECKLIST"_
Simpan script di atas di folder /home/useranda dengan nama cekserver.sh

Kedua, setelah berhasil membuat script cekserver.sh, kita buat lagi script healthcheck.sh dengan diisi perintah berikut.

_sh /home/useranda/cekserver.sh > /var/www/html/cekserver/cekserver.txt_

Simpan script ini di folder /var/www/html/cekserver/ dengan nama healthcheck.sh

Ketiga, kita buat file healthcheck.php di folder /var/www/html/cekserver dengan diisi seperti berikut ini dan menaruh file phpmailer di folder /var/www/html/cekserver/phpmailer.

_<?php
require_once "phpmailer/class.smtp.php";
require_once "phpmailer/class.phpmailer.php";
// ## Tanggal H ###
$h1 = mktime(0, 0, 0, date("m"), date("d"), date("y"));
$sekarang=date("d", $h1);
$tahun=date("FY", $h1);
$tanggal= "$sekarang$tahun";
$mail = new PHPMailer();
// setting
$mail->IsSMTP(); // send via SMTP
$mail->Host = "ipsmtpserver"; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "usersmtpserver"; // SMTP username
$mail->Password = "passwordnya"; // SMTP password
// pengirim
$mail->From = "user@serversmtp.com";
$mail->FromName = "Health Check Server";
// penerima
$mail->AddAddress("penerima1@gmail.com","user1″);  // Email penerima
$mail->AddAddress("penerima2@gmail.com","user2″); // Email penerima 2
$mail->AddCC("penerima3@gmail.com"); // Email untuk CC
// kirim balik
$mail->AddReplyTo("user@serversmtp.com","pengirim");
$mail->WordWrap = 50; // set word wrap
$mail->IsHTML(false); // send as HTML
$mail->Subject = "Health Check Server Web $tanggal";
$mail->Body = "Berikut terlampir cek server $tanggal";
$mail->AltBody = "Cek Server Harian ";
$mail->AddAttachment("cekserver.txt");
if(!$mail->Send())
{
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
?>_
Terakhir buat crontab untuk menjadwal pengiriman otomatis setiap hari. Pada jam 8.00 menjalankan file healthcheck.sh yang berfungsi membuat file lampiran cekserver.txt yang berisi info kesehatan server terkini.

Dan lima menit kemudian menjalankan file healthcheck.php berfungsi mengirimkan email dengan lampiran cekserver.txt yang dibuat sebelumnya.

_# Crontab for Cek kesehatan
00 8 * * * sh /var/www/html/cekserver/healthcheck.sh
05 8 * * * curl http://localhost/cekserver/healthcheck.php_
Dengan begitu setiap hari Anda akan menerima email yang berisi informasi kesehatan server terkini.

[Tulisan lama: sucipto kuncoro - 28061433 - dari blogku yang terhapus]

Share on Facebook
Share on Twitter
Share on Google+

Related : Otomatisasi Health Check Server Dengan PHPMailer

Tampilkan Komentar
Sembunyikan Komentar

1 comments: