FreeBSD : Shinken
Bonjour à tous,
Aujourd'hui un billet sur l'installation et la configuration (rapide) de Shinken sur une FreeBSD 12.
Il faut savoir qu'au moment où j'écris ce billet, Shinken est uniquement compatible python2.7.
Avant d'installer Shinken, certains paquets sont nécessaires :
pkg install py27-pip py27-pycurl py27-bottle nagios-plugins mongodb40
Un utilisateur dédié à Shinken est nécessaire :
pw adduser shinken
chsh -s /usr/local/bin/bash shinken
On peut maintenant effectuer l'installation de Shinken via pip :
pip install shinken pymongo bottle
L'installation de Shinken doit être initialisée, pour cela il faut passer au compte créé précédemment et lancer l'initialisation :
su - shinken
shinken --init
Cette initialisation va créer le fichier .shinken.ini (dans le dossier home de l'utilisateur) qui doit être modifié pour fonctionner correctement sous FreeBSD :
[paths]
# # set the paths according to your setup. defaults follow # the linux standard base
etc = /usr/local/etc/shinken
lib = /usr/local/libexec/shinken
share = %(lib)s/share
cli = %(lib)s/cli
packs = %(etc)s/packs
modules = %(lib)s/modules
doc = %(lib)s/doc
inventory = %(lib)s/inventory
libexec = %(lib)s/libexec
[shinken.io]
# options for connection to the shinken.io website. # proxy: curl style, should look as http://user:password@server:3128 # api_key: useful for publishing packages or earn xp after each install. create an account at http://shinken.io and go to http://shinken.io/~
proxy =
api_key =
Il faut éditer deux lignes :
- etc = le chemin d'origine est pour linux
- lib = même problématique, chemin pour linux et pas FreeBSD
L'initialisation doit être relancée pour que tout soit en ordre.
Afin de pouvoir installer des modules à Shinken, un dossier doit être créé :
mkdir /usr/local/libexec/shinken/share
Le fichier /usr/local/libexec/shinken/resource.d/path.cfg contient les différentes variables utilisables au sein de Shinken dont celle concernant le dossier contenant les plugins. Le path de la variable NAGIOSPLUGINSDIR doit être changé de /usr/lib/nagios/plugins à /usr/local/libexec/nagios/.
Avant de pouvoir démarrer Shinken, il faut rajouter dans le fichier /etc/rc.conf les différents daemons :
shinken_arbiter_enable="YES"
shinken_broker_enable="YES"
shinken_poller_enable="YES"
shinken_reactionner_enable="YES"
shinken_receiver_enable="YES"
shinken_scheduler_enable="YES"
D'origine, les fichiers de configuration des daemons bind sur le localhost mais il est nécessaire d'éditer les fichiers dans /usr/local/etc/shinken/daemons pour confirmer ce paramétrage.
/usr/local/etc/rc.d/shinken-arbiter restart
/usr/local/etc/rc.d/shinken-broker restart
/usr/local/etc/rc.d/shinken-poller restart
/usr/local/etc/rc.d/shinken-reactionner restart
/usr/local/etc/rc.d/shinken-receiver restart
/usr/local/etc/rc.d/shinken-scheduler restart
Afin de bénéficier d'une IHM web, il est nécessaire d'installer des modules :
shinken install webui2
shinken install auth-cfg-password
Pour que le module webui2 soit pris en compte, il faut éditer le fichier /usr/local/etc/shinken/brokers/brokers-master.cfg et rajouter à la ligne module webui2.
Il est également nécessaire d'éditer le fichier /usr/local/etc/shinken/modules/webui2.cfg afin de pouvoir gérer les password et d'ajouter à la ligne module :
auth-cfg-password
Les lignes host et port doivent également être modifiés pour que le daemon écoute en local uniquement.
Depuis l'IHM webui2, il est possible que les utilisateurs déclarés configurent une homepage spécifique avec des widgets, pour cela il faut que la configuration soit stockée dans MongoDB. Le fichier /usr/local/etc/shinken/modules/webui2.cfg doit être modifié :
uri mongodb://localhost/?safe=false
database shinken
Avant de démarrer tous les daemons, il faut vérifier la configuration :
shinken-arbiter -v -c /usr/local/etc/shinken/shinken.cfg
Il est maintenant possible de démarrer les daemons dans de bonnes conditions :
/usr/local/etc/rc.d/shinken-arbiter start
/usr/local/etc/rc.d/shinken-broker start
/usr/local/etc/rc.d/shinken-poller start
/usr/local/etc/rc.d/shinken-reactionner start
/usr/local/etc/rc.d/shinken-receiver start
/usr/local/etc/rc.d/shinken-scheduler start
Pour vérifier que tout est en ordre, il faut voir si tous les ports nécessaires sont en écoutes :
sockstat -4l | grep shinken
shinken python2.7 58144 9 tcp4 127.0.0.1:7767 *:*
shinken python2.7 58143 4 tcp4 127.0.0.1:26122 *:*
shinken python2.7 58142 4 tcp4 127.0.0.1:7768 *:*
shinken python2.7 58132 4 tcp4 127.0.0.1:26119 *:*
shinken python2.7 58131 4 tcp4 127.0.0.1:7773 *:*
shinken python2.7 58121 4 tcp4 127.0.0.1:26114 *:*
shinken python2.7 58120 4 tcp4 127.0.0.1:7769 *:*
shinken python2.7 58114 4 tcp4 127.0.0.1:26109 *:*
shinken python2.7 58113 4 tcp4 127.0.0.1:7771 *:*
shinken python2.7 58109 4 tcp4 127.0.0.1:26102 *:*
shinken python2.7 58106 4 tcp4 127.0.0.1:7772 *:*
Les ports principaux sont 7767, 7768, 7769, 7770, 7771 et 7772. Sans ceux-là, Shinken ne sera pas pleinement opérationnel.
Pour que l'IHM webui2 soit accessible depuis l'extérieur, j'ai configuré un virtual host nginx avec la configuration suivante (avec un certificat Let's Encrypt) :
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name my.ndd.fr;
location ^~ /.well-known/acme-challenge/ {
#default_type "text/plain";
#allow all;
root /var/www/acme-challenge/;
}
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl ipv6only=on;
server_name my.ndd.fr;
if ($host = 'ndd.fr' ) {
rewrite ^/(.*)$ https://my.ndd.fr/$1 permanent;
}
access_log /var/log/nginx/shinken.access.log;
error_log /var/log/nginx/shinken.error.log;
include /usr/local/etc/nginx/ssl.conf;
ssl_certificate /usr/local/etc/letsencrypt/live/my.ndd.fr/fullchain.pem;
ssl_certificate_key /usr/local/etc/letsencrypt/live/my.ndd.fr/privkey.pem;
location / {
proxy_pass http://127.0.0.1:7767;
}
}
Le compte par défaut d'accès est défini dans /usr/local/etc/shinken/contacts/admin.cfg.
Have a nice day.