Skip to main content

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
}