GNU/Linux >> Znalost Linux >  >> Cent OS

Monitorování serveru pomocí Munin a Monit na CentOS 7.2

V tomto článku popíšu, jak můžete monitorovat svůj server CentOS 7 pomocí Munin a Monit. Munin vytváří šikovnou malou grafiku o téměř každém aspektu vašeho serveru (průměrné zatížení, využití paměti, využití CPU, propustnost MySQL, provoz eth0 atd.) bez velké konfigurace, zatímco Monit kontroluje dostupnost služeb jako Apache, MySQL, Postfix a bere příslušná akce, jako je restart, pokud zjistí, že se služba nechová podle očekávání. Kombinace těchto dvou vám poskytuje plné monitorování:grafika, která vám umožní rozpoznat aktuální nebo nadcházející problémy (jako „Brzy potřebujeme větší server, naše průměrná zátěž se rychle zvyšuje.“) a hlídací pes, který zajišťuje dostupnost monitorovaných služeb. .

Přestože Munin umožňuje monitorovat více než jeden server, zde se budeme zabývat pouze monitorováním systému, kde je nainstalován.

Tento tutoriál byl napsán pro CentOS 7.2, ale konfigurace by se měla vztahovat i na jiné distribuce, jako je RHEL a Scientific Linux.

1 předběžná poznámka

Hostname našeho systému je server1.example.com a máme na něm web www.example.com s kořenem dokumentu /var/www/html.

2 Povolit úložiště EPEL

Na CentOS 7 nejsou Munin a Monit dostupné ve výchozích úložištích CentOS. Naštěstí je můžeme nainstalovat z úložiště EPEL. Chcete-li povolit úložiště EPEL, spustíme:

yum -y install epel-release

Importujte klíč EPEL GPG:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

a poté spusťte:

yum -y update

abychom se ujistili, že je systém aktuální a že se načte seznam balíčků z EPEL, než začneme instalovat munin.

2 Instalace webového serveru Apache

Munin vyžaduje, aby webový server obsluhoval a zobrazoval soubory statistik. Zde nainstaluji apache httpd server:

yum install httpd

Spusťte apache a povolte jeho automatické spouštění při spouštění.

systemctl enable httpd
systemctl start httpd

4 Instalace a konfigurace Munin

Chcete-li nainstalovat Munin na CentOS, provedeme toto:

yum -y install munin munin-node

Poté vytvoříme odkazy pro spuštění systému pro Munin a spustíme jej:

systemctl enable munin-node
systemctl start munin-node

Dále musíme upravit konfigurační soubor Munin /etc/munin/munin.conf.

nano /etc/munin/munin.conf

Chceme, aby munin ve výstupu HTML používal název server1.example.com místo localhost, proto nahradíme localhost serverem1.example.com. Bez komentářů vypadá změněný soubor takto:

[...]
# a simple host tree
[server1.example.com]
    address 127.0.0.1
    use_node_name yes
[...]

Statistiky munin jsou chráněny uživatelským jménem a heslem (Apache basic auth). V dalším kroku přidáme nového uživatele a heslo do souboru /etc/munin/munin-htpasswd.

htpasswd /etc/munin/munin-htpasswd admin

Příkaz přidá nového uživatele se jménem "admin" a dvakrát vyzve k zadání nového hesla.

Nyní počkejte několik minut, aby munin mohl vytvořit první statistický výstup, poté přejděte ve svém prohlížeči na http://server1.example.com/munin/ a uvidíte první statistiku.

(Toto je jen malý výňatek z mnoha grafik, které munin produkuje...)

5 Instalace a konfigurace Monit

Dále nainstalujeme Monit:

yum -y install monit

Poté vytvoříme odkazy pro spuštění systému pro Monit:

systemctl enable monit
systemctl start monit

Výchozí konfigurační soubor Monitu je /etc/monitrc, kde můžete najít příklady konfigurace (další příklady konfigurace najdete na http://mmonit.com/wiki/Monit/ConfigurationExamples), které jsou všechny zakomentovány, ale říká Monitu, aby také vyhledejte konfigurační soubory v adresáři /etc/monit.d.

V tomto případě budu sledovat:

  • proftpd
  • sshd
  • MariaDB
  • apache
  • postfix

Dále nakonfiguruji tato nastavení pro Monit:

  • Povolte webové rozhraní Monit na portu 2812.
  • Pro webové rozhraní místo HTTP použijte HTTPS.
  • Nakonfigurujte heslem chráněné přihlášení pro webové rozhraní.
  • Monit bude zasílat e-mailová upozornění na adresu [email protected].

Nejprve nakonfiguruji nastavení ověřování. Otevřete soubor /etc/monitrc

nano /etc/monitrc

A přejděte dolů, dokud nenajdete tuto sekci:

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

Nahraďte jej následujícím nastavením:

set httpd port 2812 and
use address 0.0.0.0
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:test

Slovo "test" je heslo, nahraďte ho prosím bezpečným heslem a možná budete chtít změnit uživatelské jméno "admin" na jméno, které nelze snadno uhodnout.

Nyní přidáme konfiguraci pro sledované služby. Místo úpravy /etc/monitrc vytvoříme nový konfigurační soubor /etc/monit.d/monitrc.

Můj soubor vypadá takto:

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 MariaDB check process mysql with pidfile /var/run/mariadb/mariadb.pid group database start program = "/usr/bin/systemctl start mariadb" stop program = "/usr/bin/systemctl stop mariadb" 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

(Ujistěte se prosím, že kontrolujete pouze procesy, které skutečně existují na vašem serveru – jinak se monit nespustí. To znamená, že pokud řeknete monitu, aby zkontroloval Postfix, ale Postfix není v systému nainstalován, monit se nespustí.)

Konfigurační soubor je docela samovysvětlující; pokud si nejste jisti některou možností, podívejte se na dokumentaci Monit:http://mmonit.com/monit/documentation/monit.html

V části Apache konfigurace Monit najdete toto:

   if failed host localhost port 80 protocol http
      and request "/monit_token" then restart

což znamená, že se Monit pokusí připojit k localhostu na portu 80 a pokusí se získat přístup k souboru /monit_token, což je /var/www/html/monit_token, protože kořen dokumentu našeho webu je /var/www/html. Pokud Monit neuspěje, znamená to, že Apache neběží a Monit jej restartuje. Nyní musíme vytvořit soubor /var/www/html/monit_token a napsat do něj nějaký náhodný řetězec:

touch /var/www/html/monit_token

Dále vytvoříme certifikát SSL (pem) (/var/certs/monit.pem), který potřebujeme pro webové rozhraní Monit šifrované SSL:

mkdir /var/certs
cd /var/certs

K vytvoření našeho certifikátu potřebujeme konfigurační soubor OpenSSL. Může to vypadat takto:

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

Nyní vytvoříme certifikát takto:

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

Konečně můžeme spustit Monit:

systemctl restart monit

Nyní nasměrujte svůj prohlížeč na https://www.example.com:2812/ (ujistěte se, že port 2812 není blokován vaším firewallem), přihlaste se pomocí admin a otestujte a měli byste vidět webové rozhraní Monit. Mělo by to vypadat takto:

(Hlavní obrazovka)

(Stránka stavu Apache)

V závislosti na vaší konfiguraci v /etc/monit.d/monitrc Monit restartuje vaše služby, pokud selžou, a odešle e-maily s upozorněním, pokud se změní ID procesů služeb atd.

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

Cent OS
  1. Monitorování serveru pomocí Icinga 2 a Icingaweb 2 na CentOS 7

  2. Nastavení serveru a klienta NFS na CentOS 7.2

  3. Monitorujte a spravujte své služby pomocí Monit na CentOS 6 / RHEL 6

  1. Jak sledovat využití zdrojů vašeho serveru pomocí Munin na CentOS 6

  2. Nainstalujte Zenario s Apache, PHP a MariaDB na CentOS 7

  3. Nastavte poštovní server pomocí PostfixAdmin a MariaDB na CentOS 7

  1. Jak nainstalovat OpenVPN Server a klienta s Easy-RSA 3 na CentOS 7

  2. Jak nainstalovat OpenVPN Server a klienta s Easy-RSA 3 na CentOS 8

  3. Nainstalujte Mattermost s PostgreSQL a Nginx na CentOS 7