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

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

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, ale konfigurace by měla platit i pro další 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 install epel-release

Importujte klíč EPEL GPG:

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

a poté spusťte:

yum 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 webový server, aby obsluhoval a zobrazoval své statistické soubory. 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 7, provedeme toto:

yum 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.

htpassd /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 svůj první výstup, a 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 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ě chci monitorovat:

  • proftpd
  • sshd
  • mysql
  • 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/monit.d/monitrc

nano /etc/monit.d/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 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

(Ujistěte se prosím, že kontrolujete pouze procesy, které skutečně existují na vašem serveru – jinak se monit nespustí. To znamená, že když ř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 monit se 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 pem cert (/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 začít 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. Jak sledovat využití zdrojů vašeho serveru pomocí Munin na CentOS 6

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

  1. Nastavení serveru a klienta NFS na CentOS 7.2

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

  3. Nainstalujte Zenario s Apache, PHP 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