Projet

Général

Profil

Supervision et Log » Historique » Version 36

Mehdi Abaakouk, 07/09/2015 15:39

1 1 Mehdi Abaakouk
h1. Supervision et Log
2 1 Mehdi Abaakouk
3 3 Mehdi Abaakouk
{{>toc}}
4 3 Mehdi Abaakouk
5 16 Mehdi Abaakouk
h2. Présentation
6 1 Mehdi Abaakouk
7 2 Mehdi Abaakouk
La supervision utilise nagios, pnp4nagios et check_mk sur la machine "nagios.tetaneutral.net":http://nagios.tetaneutral.net
8 16 Mehdi Abaakouk
"check_mk":http://mathias-kettner.de/check_mk.html est à la fois:
9 16 Mehdi Abaakouk
* un outils qui génère la configuration de nagios
10 1 Mehdi Abaakouk
* une "commande" au sens nagios.
11 1 Mehdi Abaakouk
* une interface Web 2.0
12 16 Mehdi Abaakouk
pnp4nagios est un grapher des perfdatas de nagios, et il est intégré parfaitement à l'interface de check_mk
13 1 Mehdi Abaakouk
La gestion des logs s'effectue avec rsyslog sur la machine ttnnlog
14 1 Mehdi Abaakouk
15 16 Mehdi Abaakouk
La configuration et les scripts nagios sont versionnés ici:
16 4 Mehdi Abaakouk
<pre>
17 4 Mehdi Abaakouk
git clone git@git.tetaneutral.net:nagios nagios
18 4 Mehdi Abaakouk
</pre>
19 4 Mehdi Abaakouk
20 4 Mehdi Abaakouk
21 16 Mehdi Abaakouk
h2. Ajouter un machine à la supervision
22 1 Mehdi Abaakouk
23 1 Mehdi Abaakouk
Dans le fichier /etc/check_mk/main.mk ajouter dans le tableau "all_hosts" le nom de la vm suivie de tags comme ceci:
24 1 Mehdi Abaakouk
25 1 Mehdi Abaakouk
<pre>
26 1 Mehdi Abaakouk
nomdelavme|vm|ssh-2222|smtp|http
27 1 Mehdi Abaakouk
nomdelamahcine|phy|ssh-22|https|imaps
28 1 Mehdi Abaakouk
</pre>
29 1 Mehdi Abaakouk
30 16 Mehdi Abaakouk
Les fameux tag permet d'associé la machine à des check de services, des hostgroups et des servicesgroups
31 16 Mehdi Abaakouk
Par défaut seul le ping est effectué.
32 16 Mehdi Abaakouk
On peut ensuite étendre rapidement les checks avec les contrôles système.
33 16 Mehdi Abaakouk
Pour ceci il faut installé un agent sur la machine superviser, soit check-mk-agent, soit net-snmp.
34 1 Mehdi Abaakouk
35 24 Mehdi Abaakouk
h2. Installation rapide de check-mk-agent:
36 1 Mehdi Abaakouk
37 21 Mehdi Abaakouk
sur la machine, c'est automatiquement fait avec puppet.
38 1 Mehdi Abaakouk
39 1 Mehdi Abaakouk
sur nagios:
40 1 Mehdi Abaakouk
41 1 Mehdi Abaakouk
<pre>
42 1 Mehdi Abaakouk
check_mk -II nommachine && check_mk -O
43 1 Mehdi Abaakouk
</pre>
44 1 Mehdi Abaakouk
45 1 Mehdi Abaakouk
h2. Remonter d'alert a partir des fichiers de log
46 1 Mehdi Abaakouk
47 25 Mehdi Abaakouk
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
48 25 Mehdi Abaakouk
comme ceci:
49 1 Mehdi Abaakouk
50 1 Mehdi Abaakouk
<pre>
51 1 Mehdi Abaakouk
/var/log/messages
52 1 Mehdi Abaakouk
# Patterns are indented with one space are prefixed with:
53 1 Mehdi Abaakouk
# C: Critical messages
54 1 Mehdi Abaakouk
# W: Warning messages
55 1 Mehdi Abaakouk
# I: ignore these lines (OK)
56 1 Mehdi Abaakouk
# The first match decided. Lines that do not match any pattern
57 1 Mehdi Abaakouk
# are ignored
58 1 Mehdi Abaakouk
C Fail event detected on md device
59 1 Mehdi Abaakouk
I mdadm.*: Rebuild.*event detected
60 1 Mehdi Abaakouk
W mdadm\[
61 1 Mehdi Abaakouk
/data/www/*/*/syslog /data/www/*/*/kern.log
62 1 Mehdi Abaakouk
C Panic
63 1 Mehdi Abaakouk
C Oops
64 1 Mehdi Abaakouk
</pre>
65 1 Mehdi Abaakouk
66 25 Mehdi Abaakouk
Puis sur la machine nagios, dans le cas ou un nouveau fichier est ajouté:
67 1 Mehdi Abaakouk
68 1 Mehdi Abaakouk
<pre>
69 25 Mehdi Abaakouk
cmk -II mon machine
70 1 Mehdi Abaakouk
cmk -O
71 1 Mehdi Abaakouk
</pre>
72 1 Mehdi Abaakouk
73 1 Mehdi Abaakouk
h2. Fichier de configuration de check_mk
74 1 Mehdi Abaakouk
75 1 Mehdi Abaakouk
Les fichiers de configuration sont dans /etc/check_mk/
76 1 Mehdi Abaakouk
Le fichier principal est main.mk, la liste des contacts se trouve dans conf.d/contacts.mk
77 16 Mehdi Abaakouk
Les fichiers conf.d/autogen_*.mk sont générer par le script update_vm_parents_and_update_automap.sh
78 26 Mehdi Abaakouk
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
79 16 Mehdi Abaakouk
Il génère aussi la map automap pour nagvis (/usr/local/nagvis/etc/Automap.cfg
80 16 Mehdi Abaakouk
Il est exécute toutes les 20 minutes
81 1 Mehdi Abaakouk
82 1 Mehdi Abaakouk
h2. Voir le diff entre la conf nagios et la page Architecture du Wiki
83 1 Mehdi Abaakouk
84 1 Mehdi Abaakouk
85 1 Mehdi Abaakouk
<pre>
86 1 Mehdi Abaakouk
/etc/check_mk/diff-nagios-wiki.sh
87 1 Mehdi Abaakouk
</pre>
88 16 Mehdi Abaakouk
Le script contrôle le VLAN admin et le 91.224.149.128/25.
89 16 Mehdi Abaakouk
90 27 Mehdi Abaakouk
h2. Configuration d'un nuc (ou autre linux) utilisé pour tunnel ADSL
91 16 Mehdi Abaakouk
92 16 Mehdi Abaakouk
Sur le nuc:
93 16 Mehdi Abaakouk
94 16 Mehdi Abaakouk
95 16 Mehdi Abaakouk
<pre>
96 16 Mehdi Abaakouk
$ apt-get install puppet
97 16 Mehdi Abaakouk
$ puppet agent --enable
98 16 Mehdi Abaakouk
$ puppet agent --server puppet.tetaneutral.net --certname=flambere.tunnel --pluginsync -vt
99 16 Mehdi Abaakouk
info: Creating a new SSL certificate request for flambere.tunnel
100 16 Mehdi Abaakouk
info: Certificate Request fingerprint (md5): 3F:E2:E2:14:B3:24:52:51:9D:DE:87:33:E8:2A:BB:7B
101 16 Mehdi Abaakouk
Exiting; no certificate found and waitforcert is disabled
102 16 Mehdi Abaakouk
103 16 Mehdi Abaakouk
</pre>
104 16 Mehdi Abaakouk
105 17 Mehdi Abaakouk
Sur la machine puppet dans le fichier /etc/puppet/manifests/nodes/adsl-tunnel.pp ajouter:
106 16 Mehdi Abaakouk
107 16 Mehdi Abaakouk
<pre>
108 16 Mehdi Abaakouk
node "flambere.tunnel" {
109 16 Mehdi Abaakouk
        $puppet_certname="flambere.tunnel"
110 16 Mehdi Abaakouk
        class{'tsf_nuc':}
111 16 Mehdi Abaakouk
}
112 16 Mehdi Abaakouk
</pre>
113 16 Mehdi Abaakouk
114 16 Mehdi Abaakouk
Puis taper:
115 16 Mehdi Abaakouk
<pre>
116 16 Mehdi Abaakouk
$ puppet ca sign flambere.tunnel
117 16 Mehdi Abaakouk
Notice: Signed certificate request for flambere.tunnel
118 16 Mehdi Abaakouk
Notice: Removing file Puppet::SSL::CertificateRequest flambere.tunnel at '/var/lib/puppet/ssl/ca/requests/flambere.tunnel.pem'
119 16 Mehdi Abaakouk
"-----BEGIN CERTIFICATE-----XXXXXXXXXXXXXXXXX\n-----END CERTIFICATE-----\n"
120 16 Mehdi Abaakouk
</pre>
121 16 Mehdi Abaakouk
122 16 Mehdi Abaakouk
Retourner sur le nuc et faire:
123 16 Mehdi Abaakouk
124 16 Mehdi Abaakouk
<pre>
125 16 Mehdi Abaakouk
$ puppet agent --server puppet.tetaneutral.net --certname=flambere.tunnel --pluginsync -vt
126 16 Mehdi Abaakouk
</pre>
127 16 Mehdi Abaakouk
128 16 Mehdi Abaakouk
129 16 Mehdi Abaakouk
Sur la machine nagios ajouter le host avec son ip:
130 1 Mehdi Abaakouk
131 19 Mehdi Abaakouk
<pre>
132 16 Mehdi Abaakouk
all_host = [
133 16 Mehdi Abaakouk
...
134 16 Mehdi Abaakouk
        "flambere.tunnel|noipv6|noapt|adsltunnel",
135 16 Mehdi Abaakouk
...
136 16 Mehdi Abaakouk
]
137 16 Mehdi Abaakouk
138 1 Mehdi Abaakouk
ipaddresses['flambere.tunnel'] = '10.0.12.2'
139 19 Mehdi Abaakouk
</pre>
140 19 Mehdi Abaakouk
141 19 Mehdi Abaakouk
Puis taper:
142 19 Mehdi Abaakouk
143 19 Mehdi Abaakouk
<pre>
144 19 Mehdi Abaakouk
cmk -II flambere.tunnel && cmk -O
145 19 Mehdi Abaakouk
</pre>
146 6 Mehdi Abaakouk
147 30 Mehdi Abaakouk
h2. Configuration checkmk sur openwrt
148 1 Mehdi Abaakouk
149 31 Mehdi Abaakouk
Installer et configurer xinetd/check_mk_agent sur le router
150 29 Mehdi Abaakouk
151 1 Mehdi Abaakouk
<pre>
152 31 Mehdi Abaakouk
opkg update
153 1 Mehdi Abaakouk
opkg install xinetd
154 31 Mehdi Abaakouk
</pre>
155 31 Mehdi Abaakouk
156 31 Mehdi Abaakouk
Puis sur la machine nagios:
157 31 Mehdi Abaakouk
158 31 Mehdi Abaakouk
<pre>
159 31 Mehdi Abaakouk
scp /etc/check_mk/client-plugins/openwrt/check_mk_agent 10.0.50.2:/usr/bin/check_mk_agent 
160 31 Mehdi Abaakouk
scp /etc/check_mk/client-plugins/openwrt/xinetd.d_check_mk 10.0.50.2:/etc/xinetd.d/check_mk
161 31 Mehdi Abaakouk
</pre>
162 31 Mehdi Abaakouk
163 31 Mehdi Abaakouk
Sur le router
164 31 Mehdi Abaakouk
165 31 Mehdi Abaakouk
<pre>
166 29 Mehdi Abaakouk
/etc/init.d/xinetd restart
167 29 Mehdi Abaakouk
</pre>
168 29 Mehdi Abaakouk
169 31 Mehdi Abaakouk
De nouveau sur la machine nagios ajouter le router dans main.mk:
170 29 Mehdi Abaakouk
171 29 Mehdi Abaakouk
<pre>
172 29 Mehdi Abaakouk
all_host = [
173 29 Mehdi Abaakouk
...
174 32 Mehdi Abaakouk
        "banyuls.tunnel|noipv6|adsltunnel",
175 29 Mehdi Abaakouk
...
176 1 Mehdi Abaakouk
]
177 32 Mehdi Abaakouk
178 32 Mehdi Abaakouk
ipaddresses['banyuls.tunnel'] = '10.0.50.2'
179 32 Mehdi Abaakouk
180 29 Mehdi Abaakouk
</pre>
181 29 Mehdi Abaakouk
182 29 Mehdi Abaakouk
Et taper:
183 29 Mehdi Abaakouk
184 29 Mehdi Abaakouk
<pre>
185 29 Mehdi Abaakouk
cmk -II router_openwrt && cmk -O
186 29 Mehdi Abaakouk
</pre>
187 29 Mehdi Abaakouk
188 33 Mehdi Abaakouk
h2. Installation de nucnagios:
189 33 Mehdi Abaakouk
190 33 Mehdi Abaakouk
Faire la préparation puppet (copier la conf de nagios.tetaneutral.net)
191 33 Mehdi Abaakouk
192 33 Mehdi Abaakouk
$ puppet agent -vt --certname nucnagios.tetaneutral.net --pluginsync  --server puppet.tetaneutral.net
193 33 Mehdi Abaakouk
194 34 Mehdi Abaakouk
*PNP4NAGIOS n'est temporairement pas dans jessie, d'ou le backport du package de jessie*
195 33 Mehdi Abaakouk
<pre>
196 33 Mehdi Abaakouk
root@nucnagios:~# mkdir pnp4nagios
197 33 Mehdi Abaakouk
root@nucnagios:~# cd pnp4nagios/
198 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios# dget http://http.debian.net/debian/pool/main/p/pnp4nagios/pnp4nagios_0.6.24+dfsg1-4.dsc
199 33 Mehdi Abaakouk
dget: retrieving http://http.debian.net/debian/pool/main/p/pnp4nagios/pnp4nagios_0.6.24+dfsg1-4.dsc
200 33 Mehdi Abaakouk
...
201 33 Mehdi Abaakouk
dpkg-source: info: applying adjust-template-path
202 33 Mehdi Abaakouk
dpkg-source: info: applying privacy-warning
203 33 Mehdi Abaakouk
dpkg-source: info: applying config_instances
204 33 Mehdi Abaakouk
dpkg-source: info: applying install_opts
205 33 Mehdi Abaakouk
dpkg-source: info: applying hardening
206 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios# cd pnp4nagios-0.6.24+dfsg1/
207 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# dpkg-checkbuilddeps
208 33 Mehdi Abaakouk
dpkg-checkbuilddeps: Unmet build dependencies: autotools-dev dh-autoreconf quilt rrdtool python-jsmin
209 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# apt-get install autotools-dev dh-autoreconf quilt rrdtool python-jsmin
210 33 Mehdi Abaakouk
...
211 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# dch --local ~ttnn1+ --distribution jessie-backports "jessie-backports"
212 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# dpkg-buildpackage -us -uc
213 33 Mehdi Abaakouk
dpkg-buildpackage: source package pnp4nagios
214 33 Mehdi Abaakouk
dpkg-buildpackage: source version 0.6.24+dfsg1-4~ttnn1+1
215 33 Mehdi Abaakouk
dpkg-buildpackage: source distribution jessie-backports
216 33 Mehdi Abaakouk
dpkg-buildpackage: source changed by root <root@nucnagios.tetaneutral.net>
217 33 Mehdi Abaakouk
dpkg-buildpackage: host architecture amd64
218 33 Mehdi Abaakouk
 dpkg-source --before-build pnp4nagios-0.6.24+dfsg1
219 33 Mehdi Abaakouk
...
220 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# cd ..
221 33 Mehdi Abaakouk
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
222 33 Mehdi Abaakouk
# ignorer les erreurs
223 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios# apt-get install -f
224 33 Mehdi Abaakouk
</pre>
225 34 Mehdi Abaakouk
*FIN PNP4NAGIOS*
226 33 Mehdi Abaakouk
227 33 Mehdi Abaakouk
Préparation et installtion de la conf de checkmk
228 33 Mehdi Abaakouk
229 33 Mehdi Abaakouk
<pre>
230 36 Mehdi Abaakouk
$ rm -rf /etc/check_mk/
231 36 Mehdi Abaakouk
$ rm -f /etc/nagios3/conf.d/*nagios2*
232 33 Mehdi Abaakouk
$ git clone git@git.tetaneutral.net:nagios /etc/check_mk
233 33 Mehdi Abaakouk
234 33 Mehdi Abaakouk
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)
235 33 Mehdi Abaakouk
236 33 Mehdi Abaakouk
$ wget http://mathias-kettner.com/download/check_mk-1.2.6p10.tar.gz
237 33 Mehdi Abaakouk
$ ln -sf /etc/check_mk/root_DOTcheck_mk_setup.conf /root/.check_mk_setup.conf       # Copie de la configuration de checkmk
238 33 Mehdi Abaakouk
$ tar -xf check_mk-1.2.6p10.tar.gz
239 33 Mehdi Abaakouk
$ cd check_mk-1.2.6p10
240 33 Mehdi Abaakouk
$ ./setup.sh --yes
241 33 Mehdi Abaakouk
# Si rien apparait c'est bon.
242 35 Mehdi Abaakouk
$ cd /etc/check_mk
243 35 Mehdi Abaakouk
$ ./createlinks.sh 
244 35 Mehdi Abaakouk
Stopping nagios3 (via systemctl): nagios3.service.
245 35 Mehdi Abaakouk
Stopping smokeping (via systemctl): smokeping.service.
246 35 Mehdi Abaakouk
$ cd clients-plugins
247 35 Mehdi Abaakouk
$ ./install_plugins.sh
248 33 Mehdi Abaakouk
</pre>
249 35 Mehdi Abaakouk
250 35 Mehdi Abaakouk
Copies des données de l'ancien nagios
251 35 Mehdi Abaakouk
252 35 Mehdi Abaakouk
<pre>
253 35 Mehdi Abaakouk
/etc/init.d/nagios3 stop
254 35 Mehdi Abaakouk
/etc/init.d/somkeping stop
255 35 Mehdi Abaakouk
/etc/init.d/apache2 stop
256 35 Mehdi Abaakouk
cd /nagiosdata/
257 35 Mehdi Abaakouk
for i in var_*; do rsync --progress --delete -a -e 'ssh -p2222' $i/ nucnagios:/nagiosdata/$i/ ; done
258 35 Mehdi Abaakouk
</pre>
259 1 Mehdi Abaakouk
260 36 Mehdi Abaakouk
Démarrage de nagios
261 36 Mehdi Abaakouk
<pre>
262 36 Mehdi Abaakouk
usermod -a -G nagios www-data 
263 36 Mehdi Abaakouk
/etc/init.d/apache2 restart
264 36 Mehdi Abaakouk
cmk -R
265 36 Mehdi Abaakouk
</pre>
266 33 Mehdi Abaakouk
267 6 Mehdi Abaakouk
h2. Liens vers outils de visualisation des logs
268 28 Mehdi Abaakouk
269 6 Mehdi Abaakouk
- http://logstash.net/
270 6 Mehdi Abaakouk
- http://kibana.org/