Projet

Général

Profil

Supervision et Log » Historique » Version 39

Mehdi Abaakouk, 08/09/2015 14:16

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 38 Laurent GUERBY
Attention la ligne  only_from de /etc/xinetd.d/check_mk est a mettre a jour manuelle si changement d'ip nagios
164 38 Laurent GUERBY
165 31 Mehdi Abaakouk
Sur le router
166 31 Mehdi Abaakouk
167 31 Mehdi Abaakouk
<pre>
168 29 Mehdi Abaakouk
/etc/init.d/xinetd restart
169 29 Mehdi Abaakouk
</pre>
170 29 Mehdi Abaakouk
171 31 Mehdi Abaakouk
De nouveau sur la machine nagios ajouter le router dans main.mk:
172 29 Mehdi Abaakouk
173 29 Mehdi Abaakouk
<pre>
174 29 Mehdi Abaakouk
all_host = [
175 29 Mehdi Abaakouk
...
176 32 Mehdi Abaakouk
        "banyuls.tunnel|noipv6|adsltunnel",
177 29 Mehdi Abaakouk
...
178 1 Mehdi Abaakouk
]
179 32 Mehdi Abaakouk
180 32 Mehdi Abaakouk
ipaddresses['banyuls.tunnel'] = '10.0.50.2'
181 32 Mehdi Abaakouk
182 29 Mehdi Abaakouk
</pre>
183 29 Mehdi Abaakouk
184 29 Mehdi Abaakouk
Et taper:
185 29 Mehdi Abaakouk
186 29 Mehdi Abaakouk
<pre>
187 29 Mehdi Abaakouk
cmk -II router_openwrt && cmk -O
188 29 Mehdi Abaakouk
</pre>
189 29 Mehdi Abaakouk
190 33 Mehdi Abaakouk
h2. Installation de nucnagios:
191 33 Mehdi Abaakouk
192 39 Mehdi Abaakouk
Faire la préparation puppet (à partir la conf de l'ancien nagios)
193 1 Mehdi Abaakouk
194 39 Mehdi Abaakouk
<pre>
195 39 Mehdi Abaakouk
nucnagios $ puppet agent -vt --certname nucnagios.tetaneutral.net --pluginsync  --server puppet.tetaneutral.net
196 39 Mehdi Abaakouk
puppet $ puppet ca sign nucnagios.tetaneutral.net
197 39 Mehdi Abaakouk
nuxnagios $ puppet agent -vt --certname nucnagios.tetaneutral.net --pluginsync  --server puppet.tetaneutral.net
198 39 Mehdi Abaakouk
</pre>
199 33 Mehdi Abaakouk
200 34 Mehdi Abaakouk
*PNP4NAGIOS n'est temporairement pas dans jessie, d'ou le backport du package de jessie*
201 33 Mehdi Abaakouk
<pre>
202 33 Mehdi Abaakouk
root@nucnagios:~# mkdir pnp4nagios
203 33 Mehdi Abaakouk
root@nucnagios:~# cd pnp4nagios/
204 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios# dget http://http.debian.net/debian/pool/main/p/pnp4nagios/pnp4nagios_0.6.24+dfsg1-4.dsc
205 33 Mehdi Abaakouk
dget: retrieving http://http.debian.net/debian/pool/main/p/pnp4nagios/pnp4nagios_0.6.24+dfsg1-4.dsc
206 33 Mehdi Abaakouk
...
207 33 Mehdi Abaakouk
dpkg-source: info: applying adjust-template-path
208 33 Mehdi Abaakouk
dpkg-source: info: applying privacy-warning
209 33 Mehdi Abaakouk
dpkg-source: info: applying config_instances
210 33 Mehdi Abaakouk
dpkg-source: info: applying install_opts
211 33 Mehdi Abaakouk
dpkg-source: info: applying hardening
212 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios# cd pnp4nagios-0.6.24+dfsg1/
213 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# dpkg-checkbuilddeps
214 33 Mehdi Abaakouk
dpkg-checkbuilddeps: Unmet build dependencies: autotools-dev dh-autoreconf quilt rrdtool python-jsmin
215 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# apt-get install autotools-dev dh-autoreconf quilt rrdtool python-jsmin
216 33 Mehdi Abaakouk
...
217 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# dch --local ~ttnn1+ --distribution jessie-backports "jessie-backports"
218 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# dpkg-buildpackage -us -uc
219 33 Mehdi Abaakouk
dpkg-buildpackage: source package pnp4nagios
220 33 Mehdi Abaakouk
dpkg-buildpackage: source version 0.6.24+dfsg1-4~ttnn1+1
221 33 Mehdi Abaakouk
dpkg-buildpackage: source distribution jessie-backports
222 33 Mehdi Abaakouk
dpkg-buildpackage: source changed by root <root@nucnagios.tetaneutral.net>
223 33 Mehdi Abaakouk
dpkg-buildpackage: host architecture amd64
224 33 Mehdi Abaakouk
 dpkg-source --before-build pnp4nagios-0.6.24+dfsg1
225 33 Mehdi Abaakouk
...
226 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios/pnp4nagios-0.6.24+dfsg1# cd ..
227 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
228 33 Mehdi Abaakouk
# ignorer les erreurs
229 33 Mehdi Abaakouk
root@nucnagios:~/pnp4nagios# apt-get install -f
230 33 Mehdi Abaakouk
</pre>
231 34 Mehdi Abaakouk
*FIN PNP4NAGIOS*
232 33 Mehdi Abaakouk
233 33 Mehdi Abaakouk
Préparation et installtion de la conf de checkmk
234 33 Mehdi Abaakouk
235 33 Mehdi Abaakouk
<pre>
236 36 Mehdi Abaakouk
$ rm -rf /etc/check_mk/
237 36 Mehdi Abaakouk
$ rm -f /etc/nagios3/conf.d/*nagios2*
238 33 Mehdi Abaakouk
$ git clone git@git.tetaneutral.net:nagios /etc/check_mk
239 33 Mehdi Abaakouk
240 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)
241 33 Mehdi Abaakouk
242 33 Mehdi Abaakouk
$ wget http://mathias-kettner.com/download/check_mk-1.2.6p10.tar.gz
243 33 Mehdi Abaakouk
$ ln -sf /etc/check_mk/root_DOTcheck_mk_setup.conf /root/.check_mk_setup.conf       # Copie de la configuration de checkmk
244 33 Mehdi Abaakouk
$ tar -xf check_mk-1.2.6p10.tar.gz
245 33 Mehdi Abaakouk
$ cd check_mk-1.2.6p10
246 33 Mehdi Abaakouk
$ ./setup.sh --yes
247 33 Mehdi Abaakouk
# Si rien apparait c'est bon.
248 35 Mehdi Abaakouk
$ cd /etc/check_mk
249 35 Mehdi Abaakouk
$ ./createlinks.sh 
250 35 Mehdi Abaakouk
Stopping nagios3 (via systemctl): nagios3.service.
251 35 Mehdi Abaakouk
Stopping smokeping (via systemctl): smokeping.service.
252 35 Mehdi Abaakouk
$ cd clients-plugins
253 35 Mehdi Abaakouk
$ ./install_plugins.sh
254 33 Mehdi Abaakouk
</pre>
255 35 Mehdi Abaakouk
256 37 Mehdi Abaakouk
A partir de l'ancien nagios, copies des anciennes données
257 35 Mehdi Abaakouk
258 35 Mehdi Abaakouk
<pre>
259 35 Mehdi Abaakouk
/etc/init.d/nagios3 stop
260 35 Mehdi Abaakouk
/etc/init.d/somkeping stop
261 35 Mehdi Abaakouk
/etc/init.d/apache2 stop
262 35 Mehdi Abaakouk
cd /nagiosdata/
263 35 Mehdi Abaakouk
for i in var_*; do rsync --progress --delete -a -e 'ssh -p2222' $i/ nucnagios:/nagiosdata/$i/ ; done
264 35 Mehdi Abaakouk
</pre>
265 1 Mehdi Abaakouk
266 37 Mehdi Abaakouk
Sur le nouveau nagios, démarrage de nagios/apache/checkmk
267 37 Mehdi Abaakouk
268 36 Mehdi Abaakouk
<pre>
269 36 Mehdi Abaakouk
usermod -a -G nagios www-data 
270 36 Mehdi Abaakouk
/etc/init.d/apache2 restart
271 37 Mehdi Abaakouk
cmk -R
272 37 Mehdi Abaakouk
</pre>
273 37 Mehdi Abaakouk
274 37 Mehdi Abaakouk
Ensuite sur la machine puppet changer les IPs autorisé à faire du checkmk
275 37 Mehdi Abaakouk
276 37 Mehdi Abaakouk
Puis sur le DNS faire pointer nagios sur les ips de nuc nagios.
277 33 Mehdi Abaakouk
278 6 Mehdi Abaakouk
h2. Liens vers outils de visualisation des logs
279 28 Mehdi Abaakouk
280 6 Mehdi Abaakouk
- http://logstash.net/
281 6 Mehdi Abaakouk
- http://kibana.org/