GNU/Linux >> Belajar Linux >  >> Cent OS

Pemantauan server dengan Munin dan Monit di CentOS 7

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.

  • munin:http://munin.projects.linpro.no
  • monit:http://mmonit.com/monit
  • CentOS:http://www.centos.org

Cent OS
  1. Pantau dan Kelola layanan Anda dengan Monit di CentOS 6 / RHEL 6

  2. Cara memantau penggunaan sumber daya server Anda dengan Munin di CentOS 6

  3. Siapkan server email dengan PostfixAdmin dan MariaDB di CentOS 7

  1. Pemantauan server dengan Icinga 2 dan Icingaweb 2 di CentOS 7

  2. Menyiapkan Server dan Klien NFS di CentOS 7.2

  3. Instal Zenario dengan Apache, PHP dan MariaDB di CentOS 7

  1. Cara Menginstal Server dan Klien OpenVPN dengan Easy-RSA 3 di CentOS 7

  2. Cara Menginstal OpenVPN Server dan Klien dengan Easy-RSA 3 di CentOS 8

  3. Instal Mattermost dengan PostgreSQL dan Nginx di CentOS 7