Projet

Général

Profil

Gestion logs » Historique » Version 1

Benjamin Bohard, 16/03/2012 18:27

1 1 Benjamin Bohard
h1. Gestion des journaux
2 1 Benjamin Bohard
3 1 Benjamin Bohard
Les objectifs fondamentaux de la journalisation sont les suivants :
4 1 Benjamin Bohard
5 1 Benjamin Bohard
* conserver l'information en vue d'établir des diagnostics de panne,
6 1 Benjamin Bohard
* conserver l'information en vue de statistiques d'utilisation,
7 1 Benjamin Bohard
* conserver l'information par contrainte légale.
8 1 Benjamin Bohard
9 1 Benjamin Bohard
Les écueils à éviter sont les suivants :
10 1 Benjamin Bohard
11 1 Benjamin Bohard
* saturation de la partition stockant les journaux,
12 1 Benjamin Bohard
* compromission des informations des journaux par application de droits d'accès inadaptés.
13 1 Benjamin Bohard
14 1 Benjamin Bohard
Ces objectifs et écueils guident la politique de journalisation à mettre en place. Les contraintes les plus fortes sont l'obligation légale de conserver l'information et le risque de saturation du support de stockage. Les journaux, ou partie de journaux, concernés par l'obligation légale doivent être traités prioritairement. Les autres doivent s'accomoder de la contrainte d'espace de stockage.
15 1 Benjamin Bohard
16 1 Benjamin Bohard
h2. Contextes de journalisation
17 1 Benjamin Bohard
18 1 Benjamin Bohard
La gestion des journaux d'une distribution EOLE est guidée par différents contextes d'utilisation. Un contexte d'utilisation est une topologie réseau particulière de machines, virtuelles ou physiques, à laquelle s'applique une politique de journalisation commune. Les rôles possibles dans un réseau sont :
19 1 Benjamin Bohard
* une machine émettrice : transmission des journaux à une machine réceptrice ;
20 1 Benjamin Bohard
* une machine réceptrice : conservation des journaux locaux, réception des journaux de machines émettrices.
21 1 Benjamin Bohard
22 1 Benjamin Bohard
Les machines émettrices se déclinent en matériel réseau, machines physiques et conteneurs lxc. Cette distinction introduit une distinction entre les machines réceptrices qui ne gèrent que les conteneurs qu'elles hébergent et celles qui centralisent les journaux de matériels physiques distants. Certains modules de la distribution EOLE se prêtent plus à l'exécution d'un rôle particulier. ZéphirLog, notamment a été créé pour assumer le rôle de machine réceptrice vis-à-vis des autres modules. Cependant, la modularité permet à un autre module de jouer ce rôle. L'utilisation du mode conteneur ou non est plus contraignant sur les rôles par contre.
23 1 Benjamin Bohard
24 1 Benjamin Bohard
h3. Solution EOLE en mode non conteneur
25 1 Benjamin Bohard
26 1 Benjamin Bohard
Une machine en mode non conteneur est le cas le plus simple :
27 1 Benjamin Bohard
28 1 Benjamin Bohard
* un seul environnement d'exécution ;
29 1 Benjamin Bohard
* la machine peut jouer les rôles de machine émettrice et transmettre ses journaux et de machine réceptrice et recevoir des journaux.
30 1 Benjamin Bohard
31 1 Benjamin Bohard
h3. Solution EOLE en mode conteneur
32 1 Benjamin Bohard
33 1 Benjamin Bohard
Une machine en mode conteneur amène un autre niveau :
34 1 Benjamin Bohard
35 1 Benjamin Bohard
* une hiérarchie d'environnement d'exécution à deux niveaux :
36 1 Benjamin Bohard
** un maître ;
37 1 Benjamin Bohard
** des conteneurs ;
38 1 Benjamin Bohard
* les conteneurs jouent le rôle de machines émettrices et transmettent leurs journaux ;
39 1 Benjamin Bohard
* les maîtres jouent forcément le rôle de machines réceptrices, au moins vis-à-vis des conteneurs, et peuvent jouer le rôle de machines émettrices et transmettre leurs journaux.
40 1 Benjamin Bohard
41 1 Benjamin Bohard
h3. Autre
42 1 Benjamin Bohard
43 1 Benjamin Bohard
Le reste du matériel participant au réseau (équipement réseau, machines clientes hors solutions EOLE, etc.) jouent le rôle de machines émettrices dans la structure envisagée.
44 1 Benjamin Bohard
45 1 Benjamin Bohard
h2. La problématique de la transmission réseau
46 1 Benjamin Bohard
47 1 Benjamin Bohard
Une machine réceptrice peut potentiellement recevoir de plusieurs sources : 
48 1 Benjamin Bohard
* des conteneurs ;
49 1 Benjamin Bohard
* des machines distantes pouvant utiliser le protocole RELP ;
50 1 Benjamin Bohard
* des machines distantes pouvant utiliser le protocole TCP ;
51 1 Benjamin Bohard
* des machines distantes pouvant utiliser le protocole UDP.
52 1 Benjamin Bohard
53 1 Benjamin Bohard
La transmission devant être fiable, le protocole RELP est à privilégier, ainsi que l'usage des queues, essentiellement pour les journaux à valeur légale. Les protocoles TCP et UDP sont à réserver pour les équipements ne pouvant utiliser le protocole RELP.
54 1 Benjamin Bohard
55 1 Benjamin Bohard
Il doit être possible de trier les journaux par zone émettrice. Différentes granularités sont envisageables pour définir les zones émettrices. La granularité la plus grossière distingue la zone interne (les conteneurs) de la zone externe.
56 1 Benjamin Bohard
57 1 Benjamin Bohard
h2. Les services
58 1 Benjamin Bohard
59 1 Benjamin Bohard
Les services prioritaires sont ceux dont les journaux ont une valeur légale et une durée de rétention prévue par la loi.
60 1 Benjamin Bohard
61 1 Benjamin Bohard
h2. La configuration de rsyslog dans EOLE
62 1 Benjamin Bohard
63 1 Benjamin Bohard
Le service rsyslog est démarré par défaut sur tous les modules EOLE, maître et conteneurs.
64 1 Benjamin Bohard
La configuration minimale est composée d'une partie commune et de fichiers de configuration rattachés aux différents services.
65 1 Benjamin Bohard
La stratégie d'aggrégation des journaux est décidée à l'instanciation.
66 1 Benjamin Bohard
67 1 Benjamin Bohard
h3. La configuration minimale
68 1 Benjamin Bohard
69 1 Benjamin Bohard
Sur le maître, sur un EOLE en mode non conteneur, un ensemble de règles pour dispatcher les journaux locaux.
70 1 Benjamin Bohard
Éventuellement, sur le maître, un ensemble de règles pour dispatcher les journaux des conteneurs (sinon mélangés aux journaux locaux).
71 1 Benjamin Bohard
Sur les conteneurs, des règles avec mise en place de queues pour les journaux sensibles et une règle globale pour le reste.
72 1 Benjamin Bohard
73 1 Benjamin Bohard
h3. L'aggrégation
74 1 Benjamin Bohard
75 1 Benjamin Bohard
L'aggrégation des journaux des conteneurs sur le maître est imposée.
76 1 Benjamin Bohard
77 1 Benjamin Bohard
Le choix du mode d'aggrégation porte sur :
78 1 Benjamin Bohard
* l'activation de l'envoi : spécification de l'adresse de destination, protocole imposé (RELP), port imposé (20515 ?) ;
79 1 Benjamin Bohard
* l'activation de la réception :
80 1 Benjamin Bohard
** réception de clients utilisant RELP : schéma de répartition, liste des adresses des clients, port imposé (20515 ?) ;
81 1 Benjamin Bohard
** réception de clients utilisant TCP : schéma de répartition, liste des adresses des clients, port imposé (10514 ?) ;
82 1 Benjamin Bohard
** réception de clients utilisant UDP : schéma de répartition, liste des adresses des clients, port imposé (514) ;
83 1 Benjamin Bohard
* utilisation du chiffrement : emplacement du certificat.
84 1 Benjamin Bohard
85 1 Benjamin Bohard
h3. L'organisation de la configuration
86 1 Benjamin Bohard
87 1 Benjamin Bohard
La lecture séquentielle de la configuration de rsyslog impose une organisation particulière :
88 1 Benjamin Bohard
* les modules (entrée, sortie) doivent être chargés avant d'être utilisés ;
89 1 Benjamin Bohard
* les ensembles de règles doivent être spécifiés avant d'être associés aux entrées ;
90 1 Benjamin Bohard
* les modèles doivent être spécifiés avant d'être utilisés ;
91 1 Benjamin Bohard
* les messages ne doivent pas être sortis de la chaîne de traitement prématurément.
92 1 Benjamin Bohard
93 1 Benjamin Bohard
h4. rsyslog.conf
94 1 Benjamin Bohard
95 1 Benjamin Bohard
<pre><code>
96 1 Benjamin Bohard
97 1 Benjamin Bohard
</code></pre>
98 1 Benjamin Bohard
99 1 Benjamin Bohard
h4. rsyslog.d/
100 1 Benjamin Bohard
101 1 Benjamin Bohard
00-aggregation.conf
102 1 Benjamin Bohard
<pre><code>
103 1 Benjamin Bohard
$ModLoad omrelp
104 1 Benjamin Bohard
105 1 Benjamin Bohard
$WorkDirectory /var/log/rsyslog/
106 1 Benjamin Bohard
$ActionQueueType LinkedList
107 1 Benjamin Bohard
%if %%is_defined('activate_squid_realtime') and %%activate_squid_realtime == "non"
108 1 Benjamin Bohard
$ActionQueueDequeueTimeBegin %%squid_heure_debut
109 1 Benjamin Bohard
$ActionQueueDequeueTimeEnd %%squid_heure_fin
110 1 Benjamin Bohard
%endif
111 1 Benjamin Bohard
$ActionQueueFileName relpact
112 1 Benjamin Bohard
$ActionQueueSaveOnShutdown on
113 1 Benjamin Bohard
114 1 Benjamin Bohard
:programname, isequal, 'squid' :omrelp:%%adresse_ip_br0:20514
115 1 Benjamin Bohard
& ~
116 1 Benjamin Bohard
117 1 Benjamin Bohard
*.*  :omrelp:%%adresse_ip_serveur_logs:20514
118 1 Benjamin Bohard
</code></pre>
119 1 Benjamin Bohard
120 1 Benjamin Bohard
00-conteneur.conf
121 1 Benjamin Bohard
122 1 Benjamin Bohard
<pre><code>
123 1 Benjamin Bohard
$ModLoad omrelp
124 1 Benjamin Bohard
125 1 Benjamin Bohard
$WorkDirectory /var/log/rsyslog/
126 1 Benjamin Bohard
$ActionQueueType LinkedList
127 1 Benjamin Bohard
%if %%is_defined('activate_squid_realtime') and %%activate_squid_realtime == "non"
128 1 Benjamin Bohard
$ActionQueueDequeueTimeBegin %%squid_heure_debut
129 1 Benjamin Bohard
$ActionQueueDequeueTimeEnd %%squid_heure_fin
130 1 Benjamin Bohard
%endif
131 1 Benjamin Bohard
$ActionQueueFileName relpact
132 1 Benjamin Bohard
$ActionQueueSaveOnShutdown on
133 1 Benjamin Bohard
134 1 Benjamin Bohard
:programname, isequal, 'squid' :omrelp:%%adresse_ip_br0:20514
135 1 Benjamin Bohard
& ~
136 1 Benjamin Bohard
137 1 Benjamin Bohard
*.*  :omrelp:%%adresse_ip_br0:20514
138 1 Benjamin Bohard
& ~
139 1 Benjamin Bohard
</code></pre>
140 1 Benjamin Bohard
141 1 Benjamin Bohard
10-erreurs.conf
142 1 Benjamin Bohard
143 1 Benjamin Bohard
<pre><code>
144 1 Benjamin Bohard
*.err  /var/log/syslog
145 1 Benjamin Bohard
</code></pre>
146 1 Benjamin Bohard
147 1 Benjamin Bohard
20-80….conf : les règles pour filter les services individuellement sur le modèle
148 1 Benjamin Bohard
149 1 Benjamin Bohard
<pre><code>
150 1 Benjamin Bohard
:programname, isequal, "nom_du_programme"  /var/log/nom_du_programme
151 1 Benjamin Bohard
</code></pre>
152 1 Benjamin Bohard
153 1 Benjamin Bohard
ou
154 1 Benjamin Bohard
155 1 Benjamin Bohard
<pre><code>
156 1 Benjamin Bohard
if $programname == 'nom_du_programme' and $syslogseverity-text == 'niveau' then /var/log/nom_du_programme/niveau.log
157 1 Benjamin Bohard
...
158 1 Benjamin Bohard
</code></pre>
159 1 Benjamin Bohard
160 1 Benjamin Bohard
ou
161 1 Benjamin Bohard
162 1 Benjamin Bohard
<pre><code>
163 1 Benjamin Bohard
$template DynProgramme, "/var/log/rsyslog/%programname%/%programname%.%syslogseverity-text%"
164 1 Benjamin Bohard
:programname, isequal, "Programme"  ?DynProgramme
165 1 Benjamin Bohard
</code></pre>
166 1 Benjamin Bohard
167 1 Benjamin Bohard
Actuellement, les services qui disposent de règles spécifiques sont squid, charon, iptables, ufw, smbd, nmbd, named, exim4. Une règle générale peut être ajouter pour traiter les autres cas. Ces règles personnalisées ne sont pas essentielles sauf dans le cas de fork (exemple de rsyslog qui ajoute le numéro de PID au nom de programme de ses différentes instances). Dans ce cas, il faut une règle avec une expression régulière ou startswith (ou utiliser la facility si elle est univoque).
168 1 Benjamin Bohard
169 1 Benjamin Bohard
<pre><code>
170 1 Benjamin Bohard
$template DynRsyslog, "/var/log/rsyslog/rsyslog/rsyslog.%syslogseverity-text%"
171 1 Benjamin Bohard
:programname, startswith, "rsyslog"  ?DynRsyslog
172 1 Benjamin Bohard
</code></pre>
173 1 Benjamin Bohard
174 1 Benjamin Bohard
80-aggregateur.conf
175 1 Benjamin Bohard
176 1 Benjamin Bohard
177 1 Benjamin Bohard
178 1 Benjamin Bohard
h3. Utilisation des ensembles de règles
179 1 Benjamin Bohard
180 1 Benjamin Bohard
Les règles peuvent être regroupées et les groupes exécutées en fonction de la provenance des messages. La dissociation des ports pour les différentes sources permet d'exécuter des jeux de règles différents pour les messages originaires des conteneurs, de machines distantes ou les messages locaux.
181 1 Benjamin Bohard
182 1 Benjamin Bohard
La prise en compte de ces ensembles de règles est inféodée à l'activation de la réception (excepté pour les conteneurs)
183 1 Benjamin Bohard
184 1 Benjamin Bohard
h2. L'arborescence typique
185 1 Benjamin Bohard
186 1 Benjamin Bohard
<pre><code>
187 1 Benjamin Bohard
/var/log/syslog
188 1 Benjamin Bohard
      `--rsyslog/
189 1 Benjamin Bohard
             |---conteneurs/
190 1 Benjamin Bohard
             |        |------mail/
191 1 Benjamin Bohard
             |        |       |---exim4/
192 1 Benjamin Bohard
             |        |       |     |---exim4.err
193 1 Benjamin Bohard
             |        |       |     |---exim4.notice
194 1 Benjamin Bohard
             |        |       |     `---exim4.info
195 1 Benjamin Bohard
             =        =       =
196 1 Benjamin Bohard
             |                |---smbd/
197 1 Benjamin Bohard
             =                =
198 1 Benjamin Bohard
             |---machines distantes
199 1 Benjamin Bohard
             |         |---nom de la machine/       
200 1 Benjamin Bohard
             |                |------exim4/
201 1 Benjamin Bohard
             |                |        |---exim4.err
202 1 Benjamin Bohard
             |                |        |---exim4.notice
203 1 Benjamin Bohard
             |                |        `---exim4.info
204 1 Benjamin Bohard
             |                |------rsyslog/
205 1 Benjamin Bohard
206 1 Benjamin Bohard
</code></pre>