Supervision et Log » Historique » Version 21
Version 20 (Mehdi Abaakouk, 19/12/2014 08:15) → Version 21/43 (Mehdi Abaakouk, 19/12/2014 08:16)
h1. Supervision et Log
{{>toc}}
h2. Présentation
La supervision utilise nagios, pnp4nagios et check_mk sur la machine "nagios.tetaneutral.net":http://nagios.tetaneutral.net
"check_mk":http://mathias-kettner.de/check_mk.html 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:
<pre>
git clone git@git.tetaneutral.net:nagios nagios
</pre>
h2. 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:
<pre>
nomdelavme|vm|ssh-2222|smtp|http
nomdelamahcine|phy|ssh-22|https|imaps
</pre>
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.
h2. Configuration du serveur de log
<pre>
echo '*.* @91.224.149.204' > /etc/rsyslog.d/ttnnlog.conf
/etc/init.d/rsyslog restart
</pre>
h2. Installation de check-mk-agent
Sur la machine cible, il faut installer les xinetd et check-mk-agent_1.1.13i2_all.deb
dans /etc/xinetd.d/check_mk ajouter:
<pre>
only_from = 91.224.149.236
</pre>
Puis on redémarre xinetd
<pre>
etc/init.d/xinetd restart
</pre>
sur nagios:
<pre>
check_mk -II nommachine && check_mk -O
</pre>
h2. Installation rapide de check-mk-agent dans une vm
sur la machine, c'est automatiquement fait avec puppet. h1:
<pre>
cd nagios
./install_in_vm.sh nomvm 2222
</pre>
sur nagios:
<pre>
check_mk -II nommachine && check_mk -O
</pre>
h2. Remonter d'alert a partir des fichiers de log
Sur ttnnlog ou sur la machine elle même (si elle a check-mk-agent-logwatch d'installer)
Dans le fichier /etc/check_mk/logwatch.cfg ajouté des lignes comme:
<pre>
/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
</pre>
Puis sur la machine nagios détecté la nouvelle config de l'agent:
<pre>
cmk -II ttnnlog
cmk -O
</pre>
h2. 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 rapi de ganeti)
Il génère aussi la map automap pour nagvis (/usr/local/nagvis/etc/Automap.cfg
Il est exécute toutes les 20 minutes
h2. Voir le diff entre la conf nagios et la page Architecture du Wiki
<pre>
/etc/check_mk/diff-nagios-wiki.sh
</pre>
Le script contrôle le VLAN admin et le 91.224.149.128/25.
h2. Configuration d'un nuc utilisé pour tunnel ADSL
Sur le nuc:
<pre>
$ 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
</pre>
Sur la machine puppet dans le fichier /etc/puppet/manifests/nodes/adsl-tunnel.pp ajouter:
<pre>
node "flambere.tunnel" {
$puppet_certname="flambere.tunnel"
class{'tsf_nuc':}
}
</pre>
Puis taper:
<pre>
$ 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"
</pre>
Retourner sur le nuc et faire:
<pre>
$ puppet agent --server puppet.tetaneutral.net --certname=flambere.tunnel --pluginsync -vt
</pre>
Sur la machine nagios ajouter le host avec son ip:
<pre>
all_host = [
...
"flambere.tunnel|noipv6|noapt|adsltunnel",
...
]
ipaddresses['flambere.tunnel'] = '10.0.12.2'
</pre>
Puis taper:
<pre>
cmk -II flambere.tunnel && cmk -O
</pre>
h2. Liens vers outils de visualisation des logs
- http://logstash.net/
- http://kibana.org/
{{>toc}}
h2. Présentation
La supervision utilise nagios, pnp4nagios et check_mk sur la machine "nagios.tetaneutral.net":http://nagios.tetaneutral.net
"check_mk":http://mathias-kettner.de/check_mk.html 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:
<pre>
git clone git@git.tetaneutral.net:nagios nagios
</pre>
h2. 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:
<pre>
nomdelavme|vm|ssh-2222|smtp|http
nomdelamahcine|phy|ssh-22|https|imaps
</pre>
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.
h2. Configuration du serveur de log
<pre>
echo '*.* @91.224.149.204' > /etc/rsyslog.d/ttnnlog.conf
/etc/init.d/rsyslog restart
</pre>
h2. Installation de check-mk-agent
Sur la machine cible, il faut installer les xinetd et check-mk-agent_1.1.13i2_all.deb
dans /etc/xinetd.d/check_mk ajouter:
<pre>
only_from = 91.224.149.236
</pre>
Puis on redémarre xinetd
<pre>
etc/init.d/xinetd restart
</pre>
sur nagios:
<pre>
check_mk -II nommachine && check_mk -O
</pre>
h2. Installation rapide de check-mk-agent dans une vm
sur la machine, c'est automatiquement fait avec puppet. h1:
<pre>
cd nagios
./install_in_vm.sh nomvm 2222
</pre>
sur nagios:
<pre>
check_mk -II nommachine && check_mk -O
</pre>
h2. Remonter d'alert a partir des fichiers de log
Sur ttnnlog ou sur la machine elle même (si elle a check-mk-agent-logwatch d'installer)
Dans le fichier /etc/check_mk/logwatch.cfg ajouté des lignes comme:
<pre>
/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
</pre>
Puis sur la machine nagios détecté la nouvelle config de l'agent:
<pre>
cmk -II ttnnlog
cmk -O
</pre>
h2. 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 rapi de ganeti)
Il génère aussi la map automap pour nagvis (/usr/local/nagvis/etc/Automap.cfg
Il est exécute toutes les 20 minutes
h2. Voir le diff entre la conf nagios et la page Architecture du Wiki
<pre>
/etc/check_mk/diff-nagios-wiki.sh
</pre>
Le script contrôle le VLAN admin et le 91.224.149.128/25.
h2. Configuration d'un nuc utilisé pour tunnel ADSL
Sur le nuc:
<pre>
$ 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
</pre>
Sur la machine puppet dans le fichier /etc/puppet/manifests/nodes/adsl-tunnel.pp ajouter:
<pre>
node "flambere.tunnel" {
$puppet_certname="flambere.tunnel"
class{'tsf_nuc':}
}
</pre>
Puis taper:
<pre>
$ 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"
</pre>
Retourner sur le nuc et faire:
<pre>
$ puppet agent --server puppet.tetaneutral.net --certname=flambere.tunnel --pluginsync -vt
</pre>
Sur la machine nagios ajouter le host avec son ip:
<pre>
all_host = [
...
"flambere.tunnel|noipv6|noapt|adsltunnel",
...
]
ipaddresses['flambere.tunnel'] = '10.0.12.2'
</pre>
Puis taper:
<pre>
cmk -II flambere.tunnel && cmk -O
</pre>
h2. Liens vers outils de visualisation des logs
- http://logstash.net/
- http://kibana.org/