Introduction
Check_MK est une extension du système de surveillance de Nagios qui permet de créer une configuration basée sur les règles à l'aide d'une interface en Python, ce qui permet de surveiller et facilite d'avantage la gestion de la plateforme.
Il est livré avec un ensemble de contrôles système, une interface utilisateur basée sur “mod_python”, “JavaScript” et un module qui permet un accès rapide au noyau Nagios.
En plus de Nagios, il ajoute des fonctionnalités supplémentaires.
La plateforme est compatible avec les OS : Redhat / Debian / Solaris / Microsoft …
Check_MK Editions
| Functionality | Raw Edition | Enterprise Edition | Managed Services Edition |
|---|---|---|---|
| Comprehensive IT monitoring leveraging more than 1500 | |||
| Hardware / software inventory | |||
| Event console – analysis of SysLog, SNMP traps and log files | |||
| BI — Business Intelligence | |||
| Simple, graphical visualization of time-series metrics data | |||
| Interactive views, improved graphics, own graphs, calculations | |||
| Creation of PDF-reports | |||
| Management of extension packages (MKPs) via the graphical UI | |||
| Graphical configuration of the monitoring agents — individually by target device | |||
| Execution of automated actions that can be configured graphically | |||
| Regularly recurring maintenance downtimes | |||
| Optional user interface in German | |||
| SLA Reporting |
Pré requis
System :
- OS : Linux CentOS 8
- HOST : slv-pro-cmk01
- Hardware : 4vCPU / 8 Go de RAM
- Stockage : 300 Go
- Check_MK version : 1.6.0p10
- SELinux / Firewall désactivé dans un premier temps.
- L'agent doit être opérationnel sur le serveur client.
Repository
- EPEL repository
Network / Firewall
- Le flux TCP/6556 doit être ouvert coté firewall (Srv Windows / Linux / Solaris). (cf: Matrice de flux).
- Le flux TCP/9440 doit être ouvert coté firewall (Prism NUTANIX).
- Le flux TCP/443 doit être ouvert coté firewall (VMWare vCenter).
Architecture de la plateforme
L'architecture suivante décrit la mise en place d'un serveur centrale Check_MK ainsi que la mise en place de deux serveurs satellite.
Le serveurs satellite supervise le SI.
Installation de la plateforme Check_MK
Installation des repository EPEL et activation du repository PowerTools
[root@srv ~]# yum install epel-release [root@srv ~]# yum config-manager --set-enabled PowerTools [root@srv ~]# yum update
L'installation de la plateforme passe par un simple yum :
[root@srv ~]# yum localinstall https://checkmk.com/support/1.6.0p10/check-mk-raw-1.6.0p10-el8-38.x86_64.rpm
[root@srv ~]# systemctl start omd [root@srv ~]# systemctl status omd [root@srv ~]# systemctl enable omd
Nous allons créer une instance Check_MK qui aura pour nom : production
[root@srv ~]# omd create production Adding /opt/omd/sites/production/tmp to /etc/fstab. Creating temporary filesystem /omd/sites/production/tmp...OK Restarting Apache...OK Created new site production with version 1.6.0p10.cre. The site can be started with omd start production. The default web UI is available at http://check-mk.oowy.lan/production/ The admin user for the web applications is cmkadmin with password: vvTB4VNR (It can be changed with 'htpasswd -m ~/etc/htpasswd cmkadmin' as site user. ) Please do a su - production for administration of this site.
A cette étape, il ne nous reste plus qu'a démarrer notre instance.
[root@srv ~]# omd start production OK Starting mkeventd...OK Starting rrdcached...OK Starting npcd...OK Starting nagios...2020-01-27 00:03:23 [6] updating log file index 2020-01-27 00:03:23 [6] updating log file index OK Starting apache...OK Initializing Crontab...O
L'installation est terminée
Rendez-vous à l'url indiquée lors de la création de l'instance production : http://check-mk.oowy.lan/production/
Note:
Dans notre exemple, lors de la création de l'instance, l'installeur créer le user “cmkadmin” et génére un mot de passe par défaut, ici le mot de passe sera : vvTB4VNR
Connecter vous avec les identifiants fournis lors de la création de l'instance.
Une fois connecté sur l'interface de Check_MK, la première action à réaliser et la déclaration du serveur.
Cela va nous permettre de superviser celui-ci et de récupérer tous les métrics par défaut fourni par la plateforme. (cf. Installation Check_MK_Agent )
Configuration de base de la plateforme
Installation Check_MK_Agent
Check_mk fournissant le package pour CentOS et dérivé (Voir l'interface WATO).
Le package xinetd doit être présent sur le système, si ce n'est pas le cas :
[ root@srv ]# yum install xinetd
Récupérer la dernier version de l'agent directement sur l'interface Web de Check_MK (WATO).
Allez dans la section : WATO - CONFIGURATION > Monitoring Agents.
Récupérer celle correspondant à notre gestionnaire de package.
(Actuellement la version supporté : 1.6.0p10-1)
[ root@srv ]# yum localinstall /var/tmp/check-mk-agent-1.6.0p10-1.noarch.rpm
Configuration de xinetd
[ root@srv ]# vi /etc/xinetd.d/check_mk
Déclarer l'adresse IP du serveur Check_mk
#only_from = 127.0.0.1 only_from = <IP_SERVEUR_CHECK_MK>
Procéder à la relance du daemon xinetd
[ root@srv ]# systemctl restart xinetd
Administration de la plateforme Check_MK
Qu'est-ce que WATO ?
WATO est le nouvel outil d'administration graphique de Check_MK. C'est une interface utilisateur basée sur le Web pour la gestion des hôtes et des services à surveiller avec Check_MK.
L'idée de base de WATO est la suivante: lorsqu'il s'agit de surveillance, une ou plusieurs personnes sont généralement responsables de la configuration et de la maintenance du serveur de surveillance. Ils passent beaucoup de temps avec le système et ses composants internes et n'ont généralement aucune difficulté à éditer des fichiers de configuration basés sur du texte - ou même les préfèrent via une interface graphique.
Cependant, les “utilisateurs” de la surveillance n'ont besoin que de surveiller leurs systèmes mais n'ont pas le temps d'apprendre à écrire des fichiers de configuration valides. Ce n'est pas non plus leur travail. Ainsi, chaque fois qu'ils ont besoin d'une modification de la surveillance - par exemple si un nouveau serveur a été configuré, une configuration de switch a changé ou une instance de base de données a été supprimée - ils demandent à l'équipe de surveillance d'adapter leur configuration en conséquence.
Ces changements constituent une part substantielle de la charge de travail quotidienne de l'équipe de surveillance. WATO vous permet de resoudre ces tâches quotidiennes quotidienne rapidement via une interface graphique. L'équipe de surveillance peut consacrer son temps à son travail actuel : réglage du système, implémentation de nouveaux contrôles, configuration des règles générales, etc.
Enfin, WATO prend en compte le fait que les différents besoins des administrateurs de surveillance et des utilisateurs doivent être reflétés dans l'interface graphique.
Ajout d'un host Linux
Check_mk fournissant le package pour Redhat et dérivé (Voir l'interface WATO).
Le package xinetd doit être présent sur le système, si ce n'est pas le cas :
[ root@srv ]# yum install xinetd
Récupérer le package depuis l'interface WATO.
[ root@srv ]# yum localinstall /var/tmp/check-mk-agent-1.4.0p13-1.noarch.rpm
Configuration de xinetd
[ root@srv ]# vi /etc/xinetd.d/check_mk
Déclarer l'adresse IP du serveur Check_mk
#only_from = 127.0.0.1 10.0.20.1 10.0.20.2
only_from = 172.31.4.178
Procéder à la relance du daemon xinetd
[ root@srv ]# service xinetd restart
Ajout d'un host Windows
netsh advfirewall firewall add rule name=“Check_MK Port 6556” dir=in action=allow protocol=TCP localport=6556
Ajout d'un host Solaris
Pré requis : Faire une demande à l'équipe sécurité pour ajouter le serveur dans le groupe proxy : GRP-SRV-CMK-PROXY-SOLARIS
Check_MK ne fournissant pas de package Solaris(pkg), créer manuellement l'arborescence :
[ root@srv ]# mkdir /etc/check_mk [ root@srv ]# mkdir -p /usr/lib/check_mk_agent/plugins [ root@srv ]# mkdir /usr/lib/check_mk_agent/local [ root@srv ]# mkdir -p /var/lib/check_mk_agent/job [ root@srv ]# mkdir /var/lib/check_mk_agent/cache
Récupérer l'agent sur l'interface d'administration de Check_MK(Link) et déposer celui-ci dans : /usr/bin/
[ root@srv ]# ls -al /usr/bin/check_mk_agent [ root@srv ]# chmod 775 /usr/bin/check_mk_agent [ root@srv ]# chown root:TeamSystemUnix /usr/bin/check_mk_agent
Ajouter le port utilisé par l’agent Check_MK dans /etc/services:
[ root@srv ]# vi /etc/services check_mk 6556/tcp # CheckMk
Ajouter la ligne suivante à la fin du fichier /etc/inet/inetd.conf :
Pour Solaris 11 :
[ root@srv ]# vi /etc/inet/inetd.conf check_mk stream tcp nowait root /usr/sbin/tcpd /usr/bin/check_mk_agent
Pour Solaris 10 :
[ root@srv ]# vi /etc/inet/inetd.conf check_mk stream tcp nowait root /usr/sfw/sbin/tcpd /usr/bin/check_mk_agent
Convertir le script Check_MK dans SMF (en tant que service).
[ root@srv ]# inetconv
Activer le service
[ root@srv ]# inetconv -e
Vérifier la présence du service
[ root@srv ]# svcs svc:/network/check_mk/tcp:default STATE STIME FMRI online 12:42:24 svc:/network/check_mk/tcp:default
Vérifier le contenu des fichiers /etc/hosts.allow et /etc/hosts.deny s'ils existent afin d'autoriser le serveur à communiquer avec le client:
[ root@srv ]# echo 'check_mk_agent: IP_SRV_CHECK-MK' >> /etc/hosts.allow
Ajout des packages nécessaires pour installer statgrab (outils supplémentaires pour le monitoring) :
[ root@srv ]# pkgadd -d http://get.opencsw.org/now -x 57.200.111.195:8080 [ root@srv ]# /opt/csw/bin/pkgutil -U [ root@srv ]# /opt/csw/bin/pkgutil -y -i libstatgrab6 [ root@srv ]# /opt/csw/bin/pkgutil -y -i pm_unix_statgrab [ root@srv ]# /opt/csw/bin/pkgutil -y -i libstatgrab_utils [ root@srv ]# ln -s /opt/csw/bin/statgrab /usr/bin/statgrab [ root@srv ]# svcadm restart svc:/network/check_mk/tcp
La version de check_mk pour Solaris n'intègre pas les états des I/O disques.
Dans ce cas, nous créerons un script qui injectera les données récoltées directement dans check_mk qui les exploitera pour réaliser les graphes nécessaires:
[ root@srv ]# echo '#! /usr/local/bin/bash [ root@srv ]# > varInterval=5 [ root@srv ]# > varOutput=$(iostat -xn $varInterval 2 | egrep c[0-99]); [ root@srv ]# > tokens=( $varOutput ) [ root@srv ]# > tokenCount=$(echo ${tokens[*]} | wc -w ) [ root@srv ]# > tokenStart=$(((tokenCount/2)-1)) [ root@srv ]# > tokenInterval=11 [ root@srv ]# > tokenEnd=$((tokenCount)) [ root@srv ]# > for i in $(eval echo {$tokenStart..$tokenEnd..$tokenInterval}); [ root@srv ]# > do echo 0 disk_busy_${tokens[$i]} percent=${tokens[$i-1]} ${tokens[$i-1]} % average disk utilization last $varInterval seconds; [ root@srv ]# > echo 0 disk_latency_${tokens[$i]} ms=${tokens[$i-3]} ${tokens[$i-3]} ms response time average last $varInterval seconds; [ root@srv ]# > done' > /usr/lib/check_mk_agent/local/disk_iostat.sh
Rafraichir la configuration pour prise en compte de ce nouveau script en commitant le nouveau changement.
Mise à jour de la plateforme Check_MK
La mise à jour de la plateforme se fait facilement et rapidement. Celle-ci se découpe en 2 étapes :
- Installation du package RPM
- Update de la plateforme
Donc, la mise à jour du RPM ne signifie pas que la mise à jour sera appliquée sur la plateforme.
Installation de la nouvelle version
[root@srv ~]# yum localinstall https://mathias-kettner.de/support/1.4.0p13/check-mk-raw-1.4.0p13-el7-60.x86_64.rpm Loaded plugins: product-id, rhnplugin, search-disabled-repos, subscription-manager This system is receiving updates from RHN Classic or Red Hat Satellite. check-mk-raw-1.4.0p13-el7-60.x86_64.rpm Examining /var/tmp/yum-root-n_v9jO/check-mk-raw-1.4.0p13-el7-60.x86_64.rpm: check-mk-raw-1.4.0p13-el7-60.x86_64 Marking /var/tmp/yum-root-n_v9jO/check-mk-raw-1.4.0p13-el7-60.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package check-mk-raw-1.4.0p13.x86_64 0:el7-60 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================= Package Arch Version ================================================================================================================================================= Installing: check-mk-raw-1.4.0p13 x86_64 el7-60 Transaction Summary ================================================================================================================================================= Install 1 Package Total size: 424 M Installed size: 424 M Is this ok [y/d/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : check-mk-raw-1.4.0p13-el7-60.x86_64 New default version is 1.4.0p13.cre. Installing systemd service: omd.init Verifying : check-mk-raw-1.4.0p13-el7-60.x86_64 Installed: check-mk-raw-1.4.0p13.x86_64 0:el7-60 Complete!
Mise à jour de la plateforme
Sur le serveur Check_MK, vérifier l'état de la plateforme.
[root@srv ~]# omd status Doing 'status' on site production: mkeventd: running rrdcached: running npcd: running nagios: running apache: running crontab: running ----------------------- Overall state: running
Avant l'application du patch, il nous faudra arrêter la plateforme.
[root@srv ~]# omd stop production Removing Crontab...OK Stopping dedicated Apache for site production....OK Stopping nagios.....OK Stopping npcd...OK Stopping rrdcached...waiting for termination...OK Stopping mkeventd...killing 61453....OK
Application de la mise à jour.
[root@srv ~]# omd update production Unmounting temporary filesystem...OK
Valider : <Update!>
┌──────────────────────────────────────────────────┐ │ You are going to update the site production from │ │ version 1.4.0p10.cre to version 1.4.0p13.cre. │ │ This will include updating all of you │ │ configuration files and merging changes in the │ │ default files with changes made by you. In case │ │ of conflicts your help will be needed. │ ├──────────────────────────────────────────────────┤ │ <Update!> < Abort > │ └──────────────────────────────────────────────────┘
La mise à jour est terminée.
2017-09-29 14:35:07 - Updating site 'production' from version 1.4.0p10.cre to 1.4.0p13.cre... Finished update.
On peut redémarrer la plateforme.
[root@srv ~]# omd start production Creating temporary filesystem /omd/sites/production/tmp...OK Starting mkeventd...OK Starting rrdcached...OK Starting npcd...OK Starting nagios...2017-09-29 14:35:12 [6] updating log file index 2017-09-29 14:35:12 [6] updating log file index OK Starting dedicated Apache for site production...OK Initializing Crontab...OK
Pour info :
Déployer la nouvelle version de l'agent sur : ( /var/www/html/pub/Accor-Packages/check_mk/ )
Mise à jour des agents
ANNEXE
Chiffrement client / server
Etant donné que la plateforme se trouve dans l'environnement PCI DSS, nous allons mettre en place le chiffrement entre les clients et la plateforme centrale.
Le premier fichier : encryption.cfg
[root@srv ~]# nano /etc/check_mk/encryption.cfg ENCRYPTED=yes PASSPHRASE=xxxXXXXXXXXXXXXXXxxxxxxxxxx Limiter les droit sur le fichier
[root@srv ~]# chmod 400 /etc/check_mk/encryption.cfg
Le second fichier : real_time_checks.cfg
[root@srv ~]# nano /etc/check_mk/real_time_checks.cfg PASSPHRASE=xxxXXXXXXXXXXXXXXxxxxxxxxxx Limiter les droit sur le fichier
[root@srv ~]# chmod 400 /etc/check_mk/real_time_checks.cfg
Redémarrer le service xinetd pour la prise en charge de la nouvelle configuration.
[root@srv ~]# service xinetd restart
Mise en place du Hardening et du HTTPS
Désactivation de virtualhost par default : welcome.conf en diésant toutes les entrées.
[root@srv ~]# nano /etc/httpd/conf.d/welcome.conf #<LocationMatch “^/+$”> # Options -Indexes # ErrorDocument 403 /.noindex.html #</LocationMatch>
#<Directory /usr/share/httpd/noindex> # AllowOverride None # Require all granted #</Directory>
#Alias /.noindex.html /usr/share/httpd/noindex/index.html
Activation de la sécurité de base
[root@srv ~]# nano /etc/httpd/conf.d/security.conf # The ServerTokens directive controls the server response header field which$ ServerTokens Prod
# Configures the footer on server-generated documents ServerSignature Off
# To prevent allows remote attackers to obtain sensitive information like in$ # multipart MIME boundary and child process through Etag header. # This is required to fix for PCI compliance Header unset ETag FileETag None
# Set cookie with HttpOnly and Secure flag # Ensure mod_headers.so is enabled Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
# Restrict Browser Frame Options # Ensure mod_headers.so is enabled Header always append X-Frame-Options SAMEORIGIN
# X-XSS Protection # Cross Site Scripting (XSS) protection can be bypassed in many browsers. # You can force apply this protection for web application if it was disabled$ # Ensure mod_headers.so is enabled Header set X-XSS-Protection “1; mode=block”
# Disable Trace HTTP Request TraceEnable off
# HostnameLookups off # HostnameLookups add overhead to each request by requesting DNS lookup on t$ # to find the name from the IP address, and then a forward look up to ensure$ # In most cases, you can simply disable this. HostnameLookups off
Changement des droits sur le fichier
[root@srv ~]# chmod 644 /etc/httpd/conf.d/check_mk.conf
Désactivation des modules suivants :
[root@srv ~]# nano /etc/httpd/conf.modules.d/00-dav.conf [root@srv ~]# nano /etc/httpd/conf.modules.d/00-lua.conf [root@srv ~]# nano /etc/httpd/conf.modules.d/01-cgi.conf
Création des certificats
[root@srv ~]# cd /etc/ssl/certs [root@srv ~]# [root@srv ~]# openssl req -new -newkey rsa:2048 -nodes -subj “/CN=check_mk.vauban.priv/O=ACCORHOTELS/C=FR/ST=FRANCE/L=EVRY/OU=DGSIT” -keyout check_mk.vauban.priv.key -out check_mk.vauban.priv.csr Generating a 2048 bit RSA private key …………………………………………………….+++ …………………………………………………………………+++ writing new private key to 'check_mk.vauban.priv.key'
Installation du package mod_ssl
Pour pouvoir faire du https avec apache, nous allons avoir besoin du mod_sll
[root@srv ~]# yum install mod_ssl
Création d'un virtualhost check_mk.conf
[root@srv ~]# nano /etc/httpd/conf.d/check_mk.conf <VirtualHost *:80>
ServerName check_mk.vauban.priv
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [L]
</VirtualHost>
<VirtualHost *:443>
ServerName check_mk.vauban.priv
# Enable/Disable SSL for this virtual host.
SSLEngine on
# SSL Cipher Suite:
SSLCipherSuite HIGH:MEDIUM:!ADH:!MD5:!aNULL:!EXPORT40:!EXPORT56
#SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 TLSv1.1 TLSv1.2
SSLHonorCipherOrder On
SSLCompression off
# Server Certificate:
SSLCertificateFile /etc/ssl/certs/check_mk.vauban.priv.crt
# Server Private Key:
SSLCertificateKeyFile /etc/ssl/certs/check_mk.vauban.priv.key
</VirtualHost>
Changement des droits sur le fichier.
[root@srv ~]# chmod 644 /etc/httpd/conf.d/check_mk.conf
Création d'un fichier .htaccess (à adapter selon l'environnement)
[root@srv ~]# nano /var/www/html/.htaccess RewriteEngine On RewriteCond %{HTTP_HOST} ^192\.168\.120\.150$ RewriteRule ^(.*)$ https://check_mk.vauban.priv/production/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^(check_mk\.)?vauban\.priv$ [NC] RewriteRule !^production/ /production%{REQUEST_URI} [L,NC]
Modification des droits.
[root@srv ~]# chmod 644 /var/www/html/.htaccess
Redémarrage de la plateforme.
[root@srv ~] # omd su production Last login: Thu Jan 4 22:32:46 CET 2018 on pts/0 OMD[production]:~$ omd restart