Projet

Général

Profil

Supervision et Log

Présentation

La supervision utilise nagios, pnp4nagios et check_mk sur la machine nagios.tetaneutral.net
check_mk est à la fois:
  • un outils qui génère la configuration de nagios
  • une "commande" au sens nagios.
  • une interface Web 2.0
    pnp4nagios est un grapher des perfdatas de nagios, et il est intégré parfaitement à l'interface de check_mk
    La gestion des logs s'effectue avec rsyslog sur la machine ttnnlog

La configuration et les scripts nagios sont versionnés ici:

git clone git@git.tetaneutral.net:nagios nagios

Ajouter un machine à la supervision

Dans le fichier /etc/check_mk/main.mk ajouter dans le tableau "all_hosts" le nom de la vm suivie de tags comme ceci:

nomdelavme|vm|ssh-2222|smtp|http
nomdelamahcine|phy|ssh-22|https|imaps

Les fameux tag permet d'associé la machine à des check de services, des hostgroups et des servicesgroups
Par défaut seul le ping est effectué.
On peut ensuite étendre rapidement les checks avec les contrôles système.
Pour ceci il faut installé un agent sur la machine superviser, soit check-mk-agent, soit net-snmp.

Installation rapide de check-mk-agent:

sur la machine, c'est automatiquement fait avec puppet.

sur nagios:

check_mk -II nommachine && check_mk -O

Remonter d'alert a partir des fichiers de log

Sur puppet on peut modifier le fichier https://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/puppetmaster/revisions/master/entry/manifests/files/check-mk-agent-logwatch.cfg.erb
comme ceci:

/var/log/messages
# Patterns are indented with one space are prefixed with:
# C: Critical messages
# W: Warning messages
# I: ignore these lines (OK)
# The first match decided. Lines that do not match any pattern
# are ignored
C Fail event detected on md device
I mdadm.*: Rebuild.*event detected
W mdadm\[
/data/www/*/*/syslog /data/www/*/*/kern.log
C Panic
C Oops

Puis sur la machine nagios, dans le cas ou un nouveau fichier est ajouté:

cmk -II mon machine
cmk -O

Fichier de configuration de check_mk

Les fichiers de configuration sont dans /etc/check_mk/
Le fichier principal est main.mk, la liste des contacts se trouve dans conf.d/contacts.mk
Les fichiers conf.d/autogen_*.mk sont générer par le script update_vm_parents_and_update_automap.sh
Il génère la liste des vm qui ne sont pas pressente dans main.mk avec les dépendances avec leurs nodes du cluster avec l'api d'openstack
Il génère aussi la map automap pour nagvis (/usr/local/nagvis/etc/Automap.cfg
Il est exécute toutes les 20 minutes

Voir le diff entre la conf nagios et la page Architecture du Wiki

/etc/check_mk/diff-nagios-wiki.sh

Le script contrôle le VLAN admin et le 91.224.149.128/25.

Configuration d'un nuc (ou autre linux) utilisé pour tunnel ADSL

Sur le nuc:

$ apt-get install puppet
$ puppet agent --enable
$ puppet agent --server puppet.tetaneutral.net --certname=flambere.tunnel --pluginsync -vt
info: Creating a new SSL certificate request for flambere.tunnel
info: Certificate Request fingerprint (md5): 3F:E2:E2:14:B3:24:52:51:9D:DE:87:33:E8:2A:BB:7B
Exiting; no certificate found and waitforcert is disabled

Sur la machine puppet dans le fichier /etc/puppet/manifests/nodes/adsl-tunnel.pp ajouter:

node "flambere.tunnel" {
        $puppet_certname="flambere.tunnel" 
        class{'tsf_nuc':}
}

Puis taper:

$ puppet ca sign flambere.tunnel
Notice: Signed certificate request for flambere.tunnel
Notice: Removing file Puppet::SSL::CertificateRequest flambere.tunnel at '/var/lib/puppet/ssl/ca/requests/flambere.tunnel.pem'
"-----BEGIN CERTIFICATE-----XXXXXXXXXXXXXXXXX\n-----END CERTIFICATE-----\n" 

Retourner sur le nuc et faire:

$ puppet agent --server puppet.tetaneutral.net --certname=flambere.tunnel --pluginsync -vt

Sur la machine nagios ajouter le host avec son ip:

all_host = [
...
        "flambere.tunnel|noipv6|noapt|adsltunnel",
...
]

ipaddresses['flambere.tunnel'] = '10.0.12.2'

Puis taper:

cmk -II flambere.tunnel && cmk -O

Configuration checkmk sur openwrt

Installer et configurer xinetd/check_mk_agent sur le router

opkg update
opkg install xinetd
mkdir -p /usr/lib/check_mk_agent/plugins/

Puis sur la machine nagios:

scp /etc/check_mk/client-plugins/openwrt/check_mk_agent 10.0.50.2:/usr/bin/check_mk_agent 
scp /etc/check_mk/client-plugins/openwrt/xinetd.d_check_mk 10.0.50.2:/etc/xinetd.d/check_mk
scp /etc/check_mk/client-plugins/cmk_plugins/agents/nut 10.20.0.12:/usr/lib/check_mk_agent/plugins/

Attention la ligne only_from de /etc/xinetd.d/check_mk est a mettre a jour manuelle si changement d'ip nagios

Sur le router

/etc/init.d/xinetd restart

De nouveau sur la machine nagios ajouter le router dans main.mk:

all_host = [
...
        "banyuls.tunnel|noipv6|adsltunnel",
...
]

ipaddresses['banyuls.tunnel'] = '10.0.50.2'

Et taper:

cmk -II router_openwrt && cmk -O

Note: diff check_mk openwrt :

--- /usr/bin/check_mk_agent     2015-09-23 23:06:41.436158333 +0200
+++ check_mk_agent      2015-09-23 23:14:18.571276383 +0200
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 # +------------------------------------------------------------------+
 # |             ____ _               _        __  __ _  __           |
 # |            / ___| |__   ___  ___| | __   |  \/  | |/ /           |
@@ -65,7 +65,8 @@
 fi

 # Runs a command asynchronous by use of a cache file
-function run_cached () {
+# OPENWRT: function run_cached () {
+run_cached () {
     local section=
     if [ "$1" = -s ] ; then local section="echo '<<<$2>>>' ; " ; shift ; fi
     local NAME=$1
@@ -107,7 +108,7 @@
 }

 # Make run_cached available for subshells (plugins, local checks, etc.)
-export -f run_cached
+# OPENWRT: export -f run_cached

 echo '<<<check_mk>>>'
 echo Version: 1.2.6p10
@@ -382,7 +383,7 @@
 echo '<<<vbox_guest>>>'
 if type VBoxControl >/dev/null 2>&1 ; then
     VBoxControl -nologo guestproperty enumerate | cut -d, -f1,2
-    [ ${PIPESTATUS[0]} = 0 ] || echo "ERROR" 
+# OPENWRT:    [ ${PIPESTATUS[0]} = 0 ] || echo "ERROR" 
 fi

 # OpenVPN Clients. Currently we assume that the configuration # is in
@@ -422,7 +423,8 @@
 if type lpstat > /dev/null 2>&1; then
     if pgrep cups > /dev/null 2>&1; then
         # first define a function to check cups
-        function cups_queues () {
+# OPENWRT: function cups_queues () {
+        cups_queues () {
             CPRINTCONF=/etc/cups/printers.conf
             if [ -r "$CPRINTCONF" ] ; then
                 LOCAL_PRINTERS=$(grep -E "<(Default)?Printer .*>" $CPRINTCONF | awk '{print $2}' | sed -e 's/>//')

Installation de nucnagios:

Faire la préparation puppet (à partir la conf de l'ancien nagios)

nucnagios $ puppet agent -vt --certname nucnagios.tetaneutral.net --pluginsync  --server puppet.tetaneutral.net
puppet $ puppet ca sign nucnagios.tetaneutral.net
nuxnagios $ puppet agent -vt --certname nucnagios.tetaneutral.net --pluginsync  --server puppet.tetaneutral.net

PNP4NAGIOS n'est temporairement pas dans jessie, d'ou le backport du package de jessie

root@nucnagios:~# mkdir pnp4nagios
root@nucnagios:~# cd pnp4nagios/
root@nucnagios:~/pnp4nagios# dget http://http.debian.net/debian/pool/main/p/pnp4nagios/pnp4nagios_0.6.24+dfsg1-4.dsc
dget: retrieving http://http.debian.net/debian/pool/main/p/pnp4nagios/pnp4nagios_0.6.24+dfsg1-4.dsc
...
dpkg-source: info: applying adjust-template-path
dpkg-source: info: applying privacy-warning
dpkg-source: info: applying config_instances
dpkg-source: info: applying install_opts
dpkg-source: info: applying hardening
root@nucnagios:~/pnp4nagios# cd pnp4nagios-0.6.24+dfsg1/
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# dpkg-checkbuilddeps
dpkg-checkbuilddeps: Unmet build dependencies: autotools-dev dh-autoreconf quilt rrdtool python-jsmin
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# apt-get install autotools-dev dh-autoreconf quilt rrdtool python-jsmin
...
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# dch --local ~ttnn1+ --distribution jessie-backports "jessie-backports" 
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# dpkg-buildpackage -us -uc
dpkg-buildpackage: source package pnp4nagios
dpkg-buildpackage: source version 0.6.24+dfsg1-4~ttnn1+1
dpkg-buildpackage: source distribution jessie-backports
dpkg-buildpackage: source changed by root <root@nucnagios.tetaneutral.net>
dpkg-buildpackage: host architecture amd64
 dpkg-source --before-build pnp4nagios-0.6.24+dfsg1
...
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# cd ..
root@nucnagios:~/pnp4nagios# dpkg -i pnp4nagios-bin_0.6.24+dfsg1-4~ttnn1+1_amd64.deb pnp4nagios_0.6.24+dfsg1-4~ttnn1+1_all.deb  pnp4nagios-web_0.6.24+dfsg1-4~ttnn1+1_all.deb pnp4nagios-web-config-nagios3_0.6.24+dfsg1-4~ttnn1+1_all.deb
# ignorer les erreurs
root@nucnagios:~/pnp4nagios# apt-get install -f

FIN PNP4NAGIOS

Préparation et installtion de la conf de checkmk

$ rm -rf /etc/check_mk/
$ rm -f /etc/nagios3/conf.d/*nagios2*
$ git clone git@git.tetaneutral.net:nagios /etc/check_mk

Les sources de check mk doivent être télécharger ici: http://mathias-kettner.com/check_mk_download_source.html (Ne surtout pas prendre "The Check_MK Editions" Or "Cee" qui se trouve ailleurs sur le site)

$ wget http://mathias-kettner.com/download/check_mk-1.2.6p10.tar.gz
$ ln -sf /etc/check_mk/root_DOTcheck_mk_setup.conf /root/.check_mk_setup.conf       # Copie de la configuration de checkmk
$ tar -xf check_mk-1.2.6p10.tar.gz
$ cd check_mk-1.2.6p10
$ ./setup.sh --yes
# Si rien apparait c'est bon.
$ cd /etc/check_mk
$ ./createlinks.sh 
Stopping nagios3 (via systemctl): nagios3.service.
Stopping smokeping (via systemctl): smokeping.service.
$ cd clients-plugins
$ ./install_plugins.sh

A partir de l'ancien nagios, copies des anciennes données

/etc/init.d/nagios3 stop
/etc/init.d/somkeping stop
/etc/init.d/apache2 stop
cd /nagiosdata/
for i in var_*; do rsync --progress --delete -a -e 'ssh -p2222' $i/ nucnagios:/nagiosdata/$i/ ; done

Sur le nouveau nagios, démarrage de nagios/apache/checkmk

usermod -a -G nagios www-data 
/etc/init.d/apache2 restart
cmk -R

Ensuite sur la machine puppet changer les IPs autorisé à faire du checkmk

Puis sur le DNS faire pointer nagios sur les ips de nuc nagios.

pingall

Liste validee au bout de 7 jours, pour forcer :
cmk -II pingall ; cmk -O

/etc/check_mk/pingall.cache
/etc/check_mk/client-plugins/cmk_plugins/pnp-templates/check_mk-pingall.php
/etc/check_mk/client-plugins/cmk_plugins/agents/pingall
/etc/check_mk/client-plugins/cmk_plugins/checks/pingall
/etc/check_mk/pingall.conf

Liens vers outils de visualisation des logs

- http://logstash.net/
- http://kibana.org/