root/traduc/trunk/slony/monitoring.xml

Revision 1044, 11.1 kB (checked in by daamien, 6 months ago)

1ere tarduction, à relire

Line 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- DerniÚre modification
3      le       $Date$
4      par      $Author$
5      révision $Revision$ -->
6
7 <sect1 id="monitoring">
8 <title>Surveillance</title>
9
10 <indexterm><primary>Surveiller &slony1;</primary></indexterm>
11
12 <sect2> <title> Tester la replication avec &nagios; </title>
13
14 <indexterm><primary>&nagios; pour surveiller la réplication</primary></indexterm>
15
16 <para> Le script <command> psql_replication_check.pl </command>  qui se trouve
17   dans le répertoire <filename>tools</filename> regroupe les meilleures
18   tentatives de construire de création de tests utilisables par le systÚme
19   de surveillance <ulink url="http://www.nagios.org/"> &nagios;</ulink>.</para>
20
21 <para> Un script antérieur, nommé <filename>
22 test_slony_replication.pl</filename>, utilisait une approche <quote>intelligente</quote>
23 : un <quote>script de test</quote> est exécuté périodiquement et se déploie à travers les configurations
24 &slony1; pour trouver l'origine et les abonnés, injecte un changement et observe sa propagation
25 à travers le systÚme. Il présentait deux problÚmes :</para>
26 <itemizedlist>
27
28 <listitem><para> En cas de problÚme de connectique impactant le noeud qui jouait ce test
29     c'est l'ensemble de réplication qui semblait détruite. De plus, cette stratégie de
30     surveillance est trÚs fragile et dépend de nombreuses conditions d'erreurs.</para>
31 </listitem>
32
33 <listitem><para> &nagios; n'a pas la possibilité de profiter de
34 <quote>l'intelligence</quote> d'une exploration automatique d'un ensemble de noeuds.
35 Vous devez mettre en place des rÚgles de surveillance &nagios; pour chaque noeud.
36 </para> </listitem>
37 </itemizedlist>
38
39 <para> Le nouveau script, <command>psql_replication_check.pl</command>,
40 utilise une approche minimaliste qui suppose que le systÚme est une
41 systÚme en ligne recevant un <quote>trafic</quote> régulier, et vous
42 permet de définir une vue spécifique pour le test de replication appelée
43 <envar>replication_status</envar> qui doit contenir des mises à jour
44 réguliÚres. Cette vue regarde simplement la derniÚre
45 <quote>transaction</quote> sur le noeud, et liste son timestamp, son âge,
46 ainsi que quelques informations sur l'application qui peuvent être utiles.
47 </para>
48
49 <itemizedlist>
50
51 <listitem><para>Pour un systÚme d'inventaire, cela pourrait être
52     le numéro de l'ordre effectué le plus récemment. </para> </listitem>
53
54 <listitem><para>Pour un serveur de nom de domaines, cela peut être le nom
55     du dernier domaine crée.</para> </listitem>
56
57 </itemizedlist>
58
59 <para> Une instance du script doit être lancée sur chaque noeud surveillé;
60   c'est ainsi que &nagios; fonctionne.</para>
61
62 </sect2>
63
64 <sect2 id="slonymrtg"> <title> Surveiller &slony1; avec MRTG </title>
65
66 <indexterm><primary>Utiliser MRTG pour surveiller la réplication</primary></indexterm>
67
68 <para> Un utilisateur a expliqué sur la liste de discussion de &slony1; comment
69   configurer <ulink url="http://people.ee.ethz.ch/~oetiker/webtools/mrtg/">
70 <application> mrtg ( Multi Router Traffic Grapher )</application>
71 </ulink> pour surveiller une réplication &slony1;.</para>
72
73 <para> ... Puisque j'utilise <application>mrtg</application> pour visualiser
74   les données depuis plusieurs serveurs, j'utilise SNMP
75   (<application>net-snmp</application> pour être exact).*
76   Pour un serveur de base de données, j'ai ajouté la ligne suivante à la configuration
77  <application>snmpd</application> :</para>
78
79 <programlisting>
80 exec replicationLagTime  /cvs/scripts/snmpReplicationLagTime.sh 2
81 avec <filename> /cvs/scripts/snmpReplicationLagTime.sh</filename> contenant ceci :
82 </programlisting>
83
84
85 <programlisting>
86 #!/bin/bash
87 /home/pgdba/work/bin/psql -U pgdba -h 127.0.0.1 -p 5800 -d _DBNAME_ -qAt -c
88 "select cast(extract(epoch from st_lag_time) as int8) FROM _irr.sl_status
89 WHERE st_received = $1"
90 </programlisting>
91
92 <para> Ensuite, dans la configuration de mrtg, ajouter la cible suivante :</para>
93 <programlisting>
94 Target[db_replication_lagtime]:extOutput.3&amp;extOutput.3:public at db::30:::
95 MaxBytes[db_replication_lagtime]: 400000000
96 Title[db_replication_lagtime]: db: replication lag time
97 PageTop[db_replication_lagtime]: &lt;H1&gt;db: replication lag time&lt;/H1&gt;
98 Options[db_replication_lagtime]: gauge,nopercent,growright
99 </programlisting>
100
101
102 <para> De son coté, Ismail Yenigul propose une méthode pour surveiller
103   &slony1; en utilisant <application>MRTG</application> sans installer
104 <application>SNMPD</application>.</para>
105
106 <para>Voici sa configuration MRTG :</para>
107
108 <programlisting>
109 Target[db_replication_lagtime]:`/bin/snmpReplicationLagTime.sh 2`
110 MaxBytes[db_replication_lagtime]: 400000000
111 Title[db_replication_lagtime]: db: replication lag time
112 PageTop[db_replication_lagtime]: &lt;H1&gt;db: replication lag time&lt;/H1&gt;
113 Options[db_replication_lagtime]: gauge,nopercent,growright
114 </programlisting>
115
116 <para> et voici sa version modifiée du script :</para>
117
118 <programlisting>
119 # cat /bin/snmpReplicationLagTime.sh
120 #!/bin/bash
121
122 output=`/usr/bin/psql -U slony -h 192.168.1.1 -d endersysecm -qAt -c
123 "select cast(extract(epoch from st_lag_time) as int8) FROM _mycluster.sl_status WHERE st_received = $1"`
124 echo $output
125 echo $output
126 echo
127 echo
128 # end of script#
129 </programlisting>
130
131
132 <note><para> MRTG attend quatre lignes en provenance du script. Puisque le script n'en fournit
133     que deux, la sortie doit être prolongée de deux lignes.
134  </para> </note>
135
136 </sect2>
137
138 <sect2 id="testslonystate"> <title> test_slony_state</title>
139
140 <indexterm><primary>script test_slony_state pour tester l'état de la réplication</primary></indexterm>
141
142 <para> Ce script effectue différents analyses sur l'état d'un cluster
143 &slony1;.</para>
144
145 <para>Vous devez spécifier les arguments tels que <option>la base de données</option>,
146 <option>l'hÃŽte</option>, <option>l'utilisateur</option>,
147 <option>le cluster</option>, <option>le mot de passe</option>, et
148 <option>le port</option> afin de se connecter à n'importe quel
149 noeud du cluster. Vous devez également préciser une commande
150  <option>mailprog</option> ( qui doit être un commande équivalente
151 à la commande <productname>Unix</productname>
152 <application>mailx</application>) et une destination pour le courrier. </para>
153
154 <para> Par ailleurs vous spécifier les paramÚtres de connexion aux bases de données
155   via les variables d'environnement utilisées par
156 <application>libpq</application>, <emphasis>par exemple :</emphasis> - utiliser
157 <envar>PGPORT</envar>, <envar>PGDATABASE</envar>,
158 <envar>PGUSER</envar>, <envar>PGSERVICE</envar>, et ainsi de suite.</para>
159
160 <para>Le script se promÚne à travers <xref linkend="table.sl-path"/>
161 pour trouver tous les noeuds du cluster, et dans les DSNs qui lui
162 permettront de se connecter à chaque noeud.</para>
163
164 <para> Pour chaque noeud, le script examine l'état des données suivantes :
165
166 <itemizedlist>
167 <listitem><para> Vérification de <xref linkend="table.sl-listen"/>
168     à la recherche de problÚmes
169 <quote>déterminés analytiquement</quote>. Cela liste les voies de communication
170 qui ne sont pas couvertes.</para></listitem>
171
172 <listitem><para> Effectuer un résumé des événements sur le noeud d'origine</para>
173
174 <para> Si un noeud n'a pas soumis un événement depuis longtemps, il y a certainement
175   un problÚme.</para></listitem>
176
177 <listitem><para> Vérification de <quote>l'âge</quote> de la table <xref
178 linkend="table.sl-confirm"/> </para>
179
180 <para> Si un ou plusieurs noeuds du cluster n'ont pas envoyé de rapport récemment
181   alors cela peut conduire à l'absence de nettoyage dans certaines tables comme
182   <xref linkend="table.sl-log-1"/> et <xref linkend="table.sl-seqlog"/></para></listitem>
183
184 <listitem><para> Vérifications des transactions longues</para>
185
186 <para> Ceci ne fonctionne correctement que si le collecteur de statistique
187   est configuré pour collecter les requêtes, c'est à dire l'option   
188  <option> stats_command_string = true</option> est présente dans <filename>
189 postgresql.conf </filename>.</para>
190
191 <para> Si des bugs applicatifs conservent des connexions ouvertes, ce script devrait les trouver
192 .</para>
193
194 <para> Si des bugs applicatifs conservent des connexions ouvertes,
195   plusieurs effets négatifs sont à prévoir 
196   tels que <link
197 linkend="longtxnsareevil">ceux décrits dans la FAQ
198 </link>.</para></listitem>
199
200 </itemizedlist></para>
201
202 <para> Ce script fait des diagnostiques basé sur des paramÚtres défini dans le script
203   ; si vous n'aimez pas les valeurs par défaut, modifiez-les !</para>
204
205 </sect2>
206
207 <sect2 id="search-logs"> <title> <command>search-logs.sh</command> </title>
208
209 <indexterm><primary> Chercher les logs  &slony1; avec search-logs.sh </primary></indexterm>
210
211 <para> Ce script est construit pour chercher les fichiers de trace &slony1;
212   dans un emplacement donné (<envar>LOGHOME</envar>), en se basant à la fois
213   sur les conventions de nommage utilisées par les systÚmes
214   <xref linkend="launchclusters"/> et <xref linkend="slonwatchdog"/> lors du démarrage
215   des processus &lslon;.</para>
216
217 <para> Si des erreurs sont trouvées, elles sont listées pour chaque fichiers
218   et transmises par courriel à un utilisateur spécifié  (<envar>LOGRECIPIENT</envar>);
219   si aucune adresse courriel n'est spécifiée, le résultat est affiché sur la sortie standard
220   . </para>
221
222 <para> <envar>LOGTIMESTAMP</envar> permet de surcharger quelle heure doit être évaluée
223   (plutÃŽt que la derniÚre heure). </para>
224
225 <para> Un administrateur peut exécuter ce script une fois par heure
226   pour surveiller les problÚmes de réplication.
227 </para>
228 </sect2>
229
230 <sect2 id="wikigen"> <title>Produire un rapport de surveillance au format MediaWiki</title>
231
232 <indexterm><primary> générer la documentation Wiki d'un cluster </primary></indexterm>
233
234 <para>Le script <filename>mkmediawiki.pl </filename>, situé dans
235   <filename>tools</filename>, peut être utilisé pour générer un rapport de
236   surveillance du cluster compatible avec le logiciel populaire
237   <ulink url="http://www.mediawiki.org/">MediaWiki </ulink>.
238   Notons que l'option <option>--categories</option> permet à l'utilisateur
239   de préciser un ensemble de catégories (séparées par une virgule) qui seront
240   associées aux résultats. Si vous avez une série de clusters &slony1;
241   passer l'option <option>--categories=slony1</option> entraînera la création
242   d'une page catégorie répertoriant l'ensemble des clusters &slony1;. </para>
243
244 <para>On pourra utiliser le commande ainsi: </para>
245
246 <screen>
247 ~/logtail.en>         mvs login -d mywiki.example.info -u "Chris Browne" -p `cat ~/.wikipass` -w wiki/index.php                     
248 Doing login with host: logtail and lang: en
249 ~/logtail.en> perl $SLONYHOME/tools/mkmediawiki.pl --host localhost --database slonyregress1 --cluster slony_regress1 --categories=Slony-I  > Slony_replication.wiki
250 ~/logtail.en> mvs commit -m "More sophisticated generated Slony-I cluster docs" Slony_replication.wiki
251 Doing commit Slony_replication.wiki with host: logtail and lang: en
252 </screen>
253
254 <para> Notons que <command>mvs</command> est un client Mediawiki écrit en Perl;
255 sur <ulink url="http://www.debian.org/"> Debian GNU/Linux</ulink>, le paquet
256 associé est nommé
257 <application>libwww-mediawiki-client-perl</application>; d'autres systÚmes
258 dispose probablement d'une version packagée sous un nom similaire. </para>
259
260 </sect2>
261 </sect1>
Note: See TracBrowser for help on using the browser.