13_Gitlab
Service Gitlab sauf Redis
CÔTÉ AGENT (Serveur GitLab)
Il y a rien a faire ici, car ce sont des check qui passe par une URL
CÔTÉ SERVEUR (Nagios)
télécharger le script qui check les services gitlab
wget -O /usr/local/nagios/libexec/check_gitlab \
https://raw.githubusercontent.com/KevinKrumbiegel/check_gitlab/master/check_gitlab
chmod +x /usr/local/nagios/libexec/check_gitla
Définir la commande check_nrpe dans Nagios
sudo nano /usr/local/nagios/etc/objects/commands.cfg
Ajouter :
define command{
command_name check_gitlab
command_line /usr/local/nagios/libexec/check_gitlab -s $ARG1$ $ARG2$
}
Vériffication manuel
tapez la commande :
/usr/local/nagios/libexec/check_gitlab -s http://gitlab.rohba.local --check-gitaly
le resultat attendu
OK - All checks ok
1 checks done.
Créer le fichier de configuration pour GitLab
sudo nano /usr/local/nagios/etc/objects/gitlab.cfg
Hôte GitLab
dans le fichier gitlab.cfg qui ce trouve /usr/local/nagios/etc/objects/
define host {
use linux-server
host_name gitlab-server
alias GitLab Server
address 192.168.1.50
max_check_attempts 5
check_period 24x7
notification_period 24x7
contacts admins
}
define service{
use generic-service
host_name gitlab
service_description GitLab Database
check_command check_gitlab!http://gitlab.rohba.local!--check-db
}
define service{
use generic-service
host_name gitlab
service_description GitLab Gitaly
check_command check_gitlab!http://gitlab.rohba.local!--check-gitaly
}
define service{
use generic-service
host_name gitlab
service_description GitLab Cache
check_command check_gitlab!http://gitlab.rohba.local!--check-cache
}
define service{
use generic-service
host_name gitlab
service_description GitLab Shared State
check_command check_gitlab!http://gitlab.rohba.local!--check-shared-state
}
Pour valider la config et recharger Nagios Toujours valider avant de recharger :
sudo nagios -v /etc/nagios/nagios.cfg
Vérification
Si aucune erreur :
sudo systemctl reload nagios
Vérifier les logs :
sudo tail -f /var/log/nagios/nagios.log
Service REDIS
CÔTÉ AGENT (Serveur GitLab)
Activer Redis TCP dans GitLab Par défaut, Redis GitLab écoute sur un socket UNIX, pas sur TCP. Le plugin check_redis.pl ne supporte pas les sockets UNIX : il faut activer TCP.
sudo nano /etc/gitlab/gitlab.rb
Ajouter ou décommenter ces deux lignes :
redis['port'] = 6379
redis['bind'] = '127.0.0.1'
Pour appliquer la configuration :
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart redis
Vérifier que Redis écoute maintenant sur TCP :
ss -tlnp | grep 6379
test la connexion avec redis-cli
Tester la connexion :
redis-cli -h 127.0.0.1 -p 6379 ping
Attendu : PONG
Étape 2 — Installer NRPE et les plugins Nagios
sudo apt-get update
sudo apt-get install -y nagios-nrpe-server nagios-plugins
Installer le module Perl Redis
sudo apt-get install -y libredis-perl
perl -MRedis -e 'print "Redis.pm OK\n"'
Vérifier que le plugin est présent :
ls -la /usr/lib/nagios/plugins/check_redis.pl
S'il est absent, le télécharger :
cd /usr/lib/nagios/plugins/
sudo wget -O check_redis.pl \
https://raw.githubusercontent.com/willixix/naglio-plugins/master/check_redis.pl
sudo chmod +x check_redis.pl
Tester le plugin manuellement
Test basique
/usr/lib/nagios/plugins/check_redis.pl -H 127.0.0.1 -p 6379
Tester avec seuils (syntaxe CORRECTE pour ce plugin) Mémoire : warning à 500 MB, critical à 1 GB
/usr/lib/nagios/plugins/check_redis.pl -H 127.0.0.1 -p 6379 \
-m used_memory \
-w WARN:524288000 \
-c CRIT:1073741824
Connexions clients : warning à 100, critical à 200
/usr/lib/nagios/plugins/check_redis.pl -H 127.0.0.1 -p 6379 \
-m connected_clients \
-w WARN:100 \
-c CRIT:200
attention : SYNTAXE INVALIDE (génère "Can not parse") : -m used_memory,500000000,1000000000 ← NE PAS UTILISER
Configurer NRPE
sudo nano /etc/nagios/nrpe.cfg
Modifier la ligne allowed_hosts pour y ajouter l'IP du serveur Nagios :
allowed_hosts=127.0.0.1,192.168.1.100
Ajouter les commandes Redis à la fin du fichier vous pouvez utiliser la ligne que vous vouez pas forcément les trois :
command[check_redis]=/usr/lib/nagios/plugins/check_redis.pl -H 127.0.0.1 -p 6379
command[check_redis_memory]=/usr/lib/nagios/plugins/check_redis.pl -H 127.0.0.1 -p 6379 -m used_memory -w WARN:524288000 -c CRIT:1073741824
command[check_redis_clients]=/usr/lib/nagios/plugins/check_redis.pl -H 127.0.0.1 -p 6379 -m connected_clients -w WARN:100 -c CRIT:200
Pour redémarrer NRPE :
sudo systemctl restart nagios-nrpe-server
sudo systemctl enable nagios-nrpe-server
Vérifier que NRPE écoute sur le port 5666 :
ss -tlnp | grep 5666
Ouverture de port (optionel)
Ouvrir le port firewall (au besoin) pour le serveur Nagios :
sudo ufw allow from 192.168.1.100 to any port 5666
Tester en local que NRPE exécute bien le check :
/usr/lib/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_redis
CÔTÉ SERVEUR (Nagios)
Tester la connexion vers le serveur GitLab :
/usr/lib/nagios/plugins/check_nrpe -H 192.168.1.50 -c check_redis
Définir la commande check_nrpe dans Nagios
sudo nano /usr/local/nagios/etc/objects/commands.cfg
Ajouter :
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
Créer le fichier de configuration pour GitLab
sudo nano /usr/local/nagios/etc/objects/
fichier hôte GitLab
dans le fichier gitlab.cfg qui ce trouve /usr/local/nagios/etc/objects/
define host {
use linux-server
host_name gitlab-server
alias GitLab Server
address 192.168.1.50
max_check_attempts 5
check_period 24x7
notification_period 24x7
contacts admins
}
define service {
use generic-service
host_name gitlab-server
service_description Redis Status
check_command check_nrpe!check_redis
check_interval 5
retry_interval 1
max_check_attempts 3
notification_period 24x7
contacts admins
}
define service {
use generic-service
host_name gitlab-server
service_description Redis Memory
check_command check_nrpe!check_redis_memory
check_interval 10
retry_interval 1
max_check_attempts 3
notification_period 24x7
contacts admins
}
define service {
use generic-service
host_name gitlab
service_description Redis Clients
check_command check_nrpe!check_redis_clients
}
Pour valider la config et recharger Nagios Toujours valider avant de recharger :
sudo nagios -v /etc/nagios/nagios.cfg
Vérification
Si aucune erreur :
sudo systemctl reload nagios
Vérifier les logs :
sudo tail -f /var/log/nagios/nagios.log
Service Runner
CÔTÉ AGENT (Serveur GitLab)
Vous allez créer un fichier qui s'appel check_systemd
sudo nano /usr/lib/nagios/plugins/check_systemd
sudo chmod +x /usr/lib/nagios/plugins/check_systemd
Rajouter ses lignes de code :
#!/bin/bash
SERVICE="$1"
systemctl is-active --quiet "$SERVICE"
if [ $? -eq 0 ]; then
echo "OK - $SERVICE is running"
exit 0
else
echo "CRITICAL - $SERVICE is NOT running"
exit 2
fi
dans le fichier nrpe.cfg ajoute la ligne suivante
command[check_gitlab_runner]=/usr/lib/nagios/plugins/check_systemd gitlab-runner
vérification dans la console que notre script fonctionne bien :
/usr/lib/nagios/plugins/check_systemd gitlab-runner
retour de la commande
OK - gitlab-runner is running
CÔTÉ SERVEUR (Nagios)
Définir la commande check_nrpe dans Nagios
sudo nano /usr/local/nagios/etc/objects/commands.cfg
Ajouter :
define command{
command_name check_nrpe_gitlab_runner
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c check_gitlab_runner
}
dans le fichier gitlab.cfg qui ce trouve /usr/local/nagios/etc/objects/
sudo nano /usr/local/nagios/etc/objects/gitlab.cfg
rajoute a la fin du fichier
define service{
use generic-service
host_name gitlab
service_description GitLab Runner
check_command check_nrpe_gitlab_runner
}