Pada artikel ini, saya akan menjelaskan bagaimana Anda dapat memonitor server CentOS 7 Anda dengan Munin dan Monit. Munin menghasilkan grafik kecil yang bagus tentang hampir setiap aspek server Anda (rata-rata beban, penggunaan memori, penggunaan CPU, throughput MySQL, lalu lintas eth0, dll.) tanpa banyak konfigurasi, sedangkan Monit memeriksa ketersediaan layanan seperti Apache, MySQL, Postfix dan mengambil tindakan yang sesuai seperti memulai ulang jika menemukan layanan tidak berperilaku seperti yang diharapkan. Kombinasi keduanya memberi Anda pemantauan penuh:grafik yang memungkinkan Anda mengenali masalah saat ini atau yang akan datang (seperti "Kami membutuhkan server yang lebih besar segera, rata-rata beban kami meningkat dengan cepat."), dan pengawas yang memastikan ketersediaan layanan yang dipantau .
Meskipun Munin memungkinkan Anda memantau lebih dari satu server, kami hanya akan membahas pemantauan sistem yang dipasang di sini.
Tutorial ini ditulis untuk CentOS 7, tetapi konfigurasi harus berlaku untuk distribusi lain seperti RHEL dan Scientific Linux juga.
1 Catatan Awal
Nama host sistem kami adalah server1.example.com, dan kami memiliki situs web www.example.com dengan root dokumen /var/www/html.
2 Aktifkan Repositori EPEL
Pada CentOS 7, Munin dan Monit tidak tersedia di repositori CentOS default. Untungnya, kita dapat menginstalnya dari repositori EPEL. Untuk mengaktifkan repositori EPEL, kami menjalankan:
yum install epel-release
Impor kunci EPEL GPG:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
lalu jalankan:
yum update
untuk memastikan bahwa sistem terbaru dan daftar paket dari EPEL dimuat sebelum kita mulai menginstal munin.
2 Instal server web Apache
Munin membutuhkan server web untuk melayani dan menampilkan file statistiknya. Saya akan menginstal server httpd Apache di sini:
yum install httpd
Mulai apache dan aktifkan untuk memulai secara otomatis saat boot.
systemctl enable httpd
systemctl start httpd
4 Instal dan Konfigurasi Munin
Untuk menginstal Munin di CentOS 7, kita lakukan ini:
yum install munin munin-node
Kemudian kami membuat tautan startup sistem untuk Munin dan memulainya:
systemctl enable munin-node
systemctl start munin-node
Selanjutnya, kita harus mengedit file konfigurasi Munin /etc/munin/munin.conf.
nano /etc/munin/munin.conf
Kami ingin munin menggunakan nama server1.example.com sebagai ganti localhost dalam output HTML, oleh karena itu kami mengganti localhost dengan server1.example.com. Tanpa komentar, file yang diubah terlihat seperti ini:
[...] # a simple host tree [server1.example.com] address 127.0.0.1 use_node_name yes [...]
Statistik munin dilindungi dengan nama pengguna dan kata sandi (Autentikasi dasar Apache). Pada langkah berikutnya kita menambahkan pengguna dan sandi baru ke file /etc/munin/munin-htpasswd.
htpassd /etc/munin/munin-htpasswd admin
Perintah tersebut akan menambahkan pengguna baru dengan nama "admin" dan meminta kata sandi baru dua kali.
Sekarang tunggu beberapa menit agar munin dapat menghasilkan output pertamanya, lalu buka http://server1.example.com/munin/ di browser Anda, dan Anda akan melihat statistik pertama.
(Ini hanya kutipan kecil dari banyak grafik yang dihasilkan munin...)
5 Instal dan Konfigurasikan Monit
Selanjutnya kita akan menginstal Monit:
yum install monit
Kemudian kita buat link startup sistem untuk monit:
systemctl enable monit
systemctl start monit
File konfigurasi default Monit adalah /etc/monitrc di mana Anda dapat menemukan beberapa contoh konfigurasi (Anda dapat menemukan lebih banyak contoh konfigurasi di http://mmonit.com/wiki/Monit/ConfigurationExamples) yang semuanya dikomentari, tetapi ia memberi tahu monit untuk juga lihat di direktori /etc/monit.d untuk file konfigurasi.
Dalam hal ini saya ingin memantau:
- proftpd
- sshd
- mysql
- apache
- postfix
Selanjutnya, saya akan mengonfigurasi pengaturan ini untuk Monit:
- Aktifkan antarmuka web Monit pada port 2812.
- Gunakan HTTPS untuk antarmuka web, bukan HTTP.
- Konfigurasikan Login yang dilindungi sandi untuk antarmuka web.
- Monit akan mengirimkan lansiran email ke [email protected]
Pertama, saya akan mengonfigurasi setelan autentikasi. Buka file /etc/monit.d/monitrc
nano /etc/monit.d/monitrc
Dan gulir ke bawah hingga Anda menemukan bagian ini:
set httpd port 2812 and
use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server and
allow admin:monit # require user 'admin' with password 'monit'
allow @monit # allow users of group 'monit' to connect (rw)
allow @users readonly # allow users of group 'users' to connect readonly
Ganti dengan pengaturan berikut:
set httpd port 2812 and
use address 0.0.0.0
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:test
Kata "test" adalah kata sandinya, silakan ganti dengan kata sandi yang aman dan Anda mungkin juga ingin mengubah nama pengguna "admin" menjadi nama yang tidak mudah ditebak.
Sekarang kami menambahkan konfigurasi untuk layanan yang dipantau. Daripada memodifikasi /etc/monitrc, kami membuat file konfigurasi baru /etc/monit.d/monitrc.
File saya terlihat seperti ini:
nano /etc/monit.d/monitrc
set logfile syslog facility log_daemon
# Send emails trough this mailserver
set mailserver localhost
# Set the From address of the alert emails
set mail-format { from: [email protected] }
# Send alerts to this address
set alert [email protected]
# Monitor the Proftpd service check process proftpd with pidfile /var/run/proftpd/proftpd.pid start program = "/usr/bin/systemctl start proftpd" stop program = "/usr/bin/systemctl stop proftpd" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout
# Monitor the SSH service check process sshd with pidfile /var/run/sshd.pid start program "/usr/bin/systemctl start sshd" stop program "/usr/bin/systemctl stop sshd" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout
# Monitor MySQL check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/usr/bin/systemctl start mysqld" stop program = "/usr/bin/systemctl stop mysqld" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout
# Monitor the apache webserver check process apache with pidfile /var/run/httpd/httpd.pid group www start program = "/usr/bin/systemctl start httpd" stop program = "/usr/bin/systemctl stop httpd" if failed host localhost port 80 protocol http and request "/monit_token" then restart if cpu is greater than 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 500 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 3 restarts within 5 cycles then timeout
# Monitor postfix mailserver check process postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/usr/bin/systemctl start postfix" stop program = "/usr/bin/systemctl stop postfix" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then timeout
(Pastikan Anda hanya memeriksa proses yang benar-benar ada di server Anda - jika tidak, monit tidak akan mulai. Yaitu, jika Anda memberi tahu monit untuk memeriksa Postfix, tetapi Postfix tidak diinstal pada sistem, monit tidak akan mulai.)
File konfigurasi cukup menjelaskan; jika Anda tidak yakin tentang suatu opsi, lihat dokumentasi monit:http://mmonit.com/monit/documentation/monit.html
Di bagian Apache dari konfigurasi Monit Anda menemukan ini:
if failed host localhost port 80 protocol http and request "/monit_token" then restart
yang berarti monit mencoba terhubung ke localhost pada port 80 dan mencoba mengakses file /monit_token yaitu /var/www/html/monit_token karena akar dokumen situs web kami adalah /var/www/html. Jika Monit tidak berhasil berarti Apache tidak berjalan, dan Monit akan memulai ulang. Sekarang kita harus membuat file /var/www/html/monit_token dan menulis beberapa string acak ke dalamnya:
touch /var/www/html/monit_token
Selanjutnya kita membuat pem cert (/var/certs/monit.pem) yang kita butuhkan untuk antarmuka web Monit terenkripsi SSL:
mkdir /var/certs
cd /var/certs
Kami memerlukan file konfigurasi OpenSSL untuk membuat sertifikat kami. Ini bisa terlihat seperti ini:
nano /var/certs/monit.cnf
# create RSA certs - Server RANDFILE = ./openssl.rnd [ req ] default_bits = 1024 encrypt_key = yes distinguished_name = req_dn x509_extensions = cert_type [ req_dn ] countryName = Country Name (2 letter code) countryName_default = MO stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Monitoria localityName = Locality Name (eg, city) localityName_default = Monittown organizationName = Organization Name (eg, company) organizationName_default = Monit Inc. organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = Dept. of Monitoring Technologies commonName = Common Name (FQDN of your server) commonName_default = server.monit.mo emailAddress = Email Address emailAddress_default = [email protected] [ cert_type ] nsCertType = server
Sekarang kita buat sertifikatnya seperti ini:
openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pem
openssl gendh 512 >> /var/certs/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem
chmod 700 /var/certs/monit.pem
Akhirnya, kita bisa mulai monit:
systemctl restart monit
Sekarang arahkan browser Anda ke https://www.example.com:2812/ (pastikan port 2812 tidak diblokir oleh firewall Anda), masuk dengan admin dan uji, dan Anda akan melihat antarmuka web Monit. Seharusnya terlihat seperti ini:
(Layar Utama)
(Halaman Status Apache)
Bergantung pada konfigurasi Anda di /etc/monit.d/monitrc Monit akan memulai ulang layanan Anda jika gagal dan mengirim email pemberitahuan jika ID proses layanan berubah, dll.
6 Tautan
- munin:http://munin.projects.linpro.no
- monit:http://mmonit.com/monit
- CentOS:http://www.centos.org