Checkmk
to checkmk.com
Important

This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved.

1. Introduction

1.1. Les événements ne sont pas des états

La tâche principale de Checkmk consiste à surveiller activement les états. À tout moment, chaque service surveillé se trouve dans l’un des états suivants : « OK », « WARN », « CRIT » ou « UNKNOWN ». Grâce à des interrogations régulières, la supervision actualise en permanence sa vision de la situation actuelle.

La supervision des événements constitue un type de supervision totalement différent. Un événement peut par exemple être une exception survenant dans une application. L'application peut rester dans l'état « OK » et continuer à fonctionner correctement ― mais un incident s'est produit.

1.2. La Event Console

Avec l’Event Console (EC en abrégé), Checkmk fournit un système entièrement intégré pour la supervision des événements provenant de sources telles que syslog, les traps SNMP, les journaux d’événements Windows, les fichiers journaux et ses propres applications. Les événements ne sont pas simplement définis comme des états, mais ils forment une catégorie à part entière et sont en fait affichés comme des informations distinctes par Checkmk dans l’Overview de la barre latérale.

The Overview snap-in with the display of events.

En interne, les événements ne sont pas traités par le noyau de supervision, mais par un service distinct : le daemon des événements (mkeventd).

La Event Console dispose également d’une archive dans laquelle vous pouvez rechercher des événements passés. Il convient toutefois de préciser d’emblée que cela ne remplace pas une véritable archive de journaux. La Event Console a pour mission de filtrer intelligemment un petit nombre de messages pertinents à partir d’un flux important. Elle est optimisée pour la simplicité, la robustesse et le débit — et non pour le stockage de grands volumes de données.

Bref aperçu des fonctionnalités de la console d'événements :

  • Elle peut recevoir des messages directement via syslog ou des traps SNMP. Il n’est donc pas nécessaire de configurer les services système Linux correspondants.

  • Elle peut également analyser des fichiers journaux textuels et les journaux des événements Windows à l'aide des agents Checkmk.

  • Elle classe les messages en fonction de chaînes de règles définies par l’utilisateur.

  • Il peut corréler, résumer, compter, annoter et réécrire les messages, ainsi que prendre en compte leurs relations temporelles.

  • Il peut effectuer des actions automatisées et envoyer des notifications via Checkmk.

  • Il est entièrement intégré à l'interface utilisateur de Checkmk.

  • Il est inclus et prêt à l'emploi dans toute version actuelle du système Checkmk.

1.3. Terminologie

La Event Console reçoit des messages (principalement sous forme de messages de journal). Un message est une ligne de texte pouvant comporter plusieurs attributs supplémentaires, par exemple un horodatage, un nom de domaine, etc. Si le message est pertinent, il peut être converti directement en événement avec les mêmes attributs, mais :

  • Un message ne sera transformé en événement que si une règle s’applique.

  • Les règles peuvent modifier le texte et d'autres attributs des messages.

  • Plusieurs messages peuvent être combinés en un seul événement.

  • Les messages peuvent également annuler les événements en cours.

  • Des événements artificiels peuvent être générés si certains messages ne s'affichent pas.

Un événement peut passer par plusieurs phases :

Ouvert

L'état « normal » : un événement s'est produit ; l'opérateur doit y prêter attention.

Confirmation de réception

Le problème a été pris en compte — cela s'apparente aux problèmes d'ordinateur hôte et de service dans le cadre de la supervision basée sur l'état.

En cours de comptage

Le nombre requis de messages spécifiés n'est pas encore parvenu : la situation n'est pas encore problématique. L'événement n'est donc pas encore affiché à l'opérateur.

Retard

Un message d'erreur a été reçu, mais l'Event Console attend toujours de savoir si le message d'OKation approprié sera reçu dans un délai configuré. Ce n'est qu'alors que l'événement sera affiché à l'opérateur.

Clôturé

L'événement a été clôturé par l'opérateur ou automatiquement par le système et ne se trouve plus que dans les archives.

Un événement possède également un état. À proprement parler, cependant, ce n’est pas l’état de l’événement lui-même qui est visé ici, mais plutôt l’état du service ou du dispositif qui a envoyé l’événement. Pour faire une analogie avec le statut de la supervision, un événement peut également être marqué comme « OK », « WARN », « CRIT » ou « UNKNOWN ».

2. Configuration de l'Event Console

La configuration de l'Event Console est très simple, car celle-ci fait partie intégrante de Checkmk et s'active automatiquement.

Toutefois, si vous souhaitez recevoir des messages syslog ou des traps SNMP via le réseau, vous devez activer cette fonctionnalité séparément. En effet, ces deux services doivent ouvrir un port UDP avec un numéro de port spécifique. Et comme une seule instance Checkmk par système peut le faire, la réception via le réseau est désactivée par défaut.

Les numéros de port sont les suivants :

Protocole Port Service

UDP

162

Traps SNMP

UDP

514

Syslog

TCP

514

Syslog via TCP

Syslog via TCP est rarement utilisé, mais il présente l'avantage d'assurer la sécurité de la transmission des messages. Avec UDP, il n'est jamais possible de garantir que les paquets arriveront effectivement à destination. De plus, ni syslog ni les traps SNMP n'offrent de confirmations ou de protection similaire contre la perte de messages. Pour pouvoir utiliser syslog via TCP, le système émetteur doit bien sûr être capable d'envoyer des messages via ce port.

Dans l'appliance Checkmk, vous pouvez activer la réception des messages Syslog/trap SNMP dans la configuration de l'instance. Sinon, utilisez simplement omd config. Vous trouverez le paramètre requis sous Addons :

ec omd config

À l'adresse omd start, vous pouvez voir, dans la ligne contenant mkeventd, quelles interfaces externes votre EC a ouvertes :

OMD[mysite]:~$ omd start
Creating temporary filesystem /omd/sites/mysite/tmp...OK
Starting mkeventd (builtin: syslog-udp,snmptrap)...OK
Starting liveproxyd...OK
Starting mknotifyd...OK
Starting rrdcached...OK
Starting cmc...OK
Starting apache...OK
Starting dcd...OK
Starting redis...OK
Initializing Crontab...OK
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

3. Premiers pas avec l'Event Console

3.1. Des règles, encore des règles

Nous avons mentionné au début que la console d'événements sert à extraire et à afficher les messages pertinents. Malheureusement, la plupart des messages — qu'ils proviennent de fichiers texte, du journal des événements Windows ou du syslog — sont plutôt sans importance. Le fait que les messages aient déjà été préclassés par leur auteur n'arrange pas les choses.

Par exemple, dans syslog et dans le journal des événements Windows, les messages sont classés en catégories telles que OK, WARN et CRIT. Mais la signification réelle de WARN et CRIT peut être définie de manière subjective par leur programmeur. Et on ne peut même pas affirmer avec certitude que l’application à l’origine du message soit importante sur cet ordinateur. En bref : vous ne pouvez pas éviter de configurer quels messages vous semblent constituer un véritable problème et lesquels peuvent simplement être ignorés.

Comme partout dans Checkmk, la configuration s’effectue via des règles, qui sont traitées par l’EC pour chaque message entrant selon le principe de la « première correspondance ». La première règle appliquée à un message entrant détermine son sort. Si aucune règle n’est appliquée, le message sera simplement ignoré sans notification.

Comme, au fil du temps, on accumule généralement un très grand nombre de règles pour l’EC, celles-ci sont organisées en paquets. Le traitement des règles s’effectue paquet par paquet et, au sein d’un paquet, de haut en bas — l’ordre de traitement de ces paquets est donc important.

3.2. Création d’une règle simple

Sans surprise, l’interface de configuration de l’EC se trouve dans le menu « Setup » sous « Events > Event Console ». Prêt à l’emploi, vous ne trouverez que le module « Default rule pack », qui ne contient en réalité aucune règle. Les messages entrants sont donc, comme déjà mentionné, rejetés et ne sont pas non plus consignés. Le module lui-même se présente comme suit :

ec wato module

Commencez par créer un nouveau paquet de règles avec icon new Add rule pack :

ec new rule pack

Comme toujours, l'ID est une référence interne et ne peut pas être modifié ultérieurement. Après avoir enregistré, vous trouverez la nouvelle entrée dans la liste de vos paquets de règles :

ec rule pack list

Vous pouvez désormais accéder au paquet de règles encore vide à l'aide de l'icon ec rules et créer une nouvelle règle avec l'icon new Add rule. Ne remplissez ici que la première case avec l'en-tête Rule Properties :

ec first rule

La seule chose nécessaire est un identifiant unique (Rule ID). Cet identifiant sera retrouvé ultérieurement dans les fichiers journaux et sera enregistré avec les événements générés. Il est donc judicieux d’attribuer aux identifiants des noms significatifs de manière systématique. Tous les autres champs sont facultatifs. Cela vaut tout particulièrement pour les conditions.

Important : cette nouvelle règle n'est qu'un exemple à des fins de test et s'appliquera à chaque événement. Il est donc également important que vous la supprimiez par la suite ou, au moins, que vous la désactiviez, sinon votre Event Console sera inondée de tous les messages inutiles imaginables et deviendra pratiquement inutilisable !

Activation des modifications

Comme toujours dans Checkmk, vous devez d'abord activer les modifications pour qu'elles prennent effet. Ce n'est pas un inconvénient, car de cette manière, pour les modifications qui affectent plusieurs règles liées, vous pouvez spécifier exactement quand les règles doivent entrer en vigueur. Et au préalable, vous pouvez utiliser l'Event Simulatore pour vérifier si tout fonctionne comme prévu.

Commencez par cliquer sur le nombre de modifications accumulées en haut à droite de la page.

ec activate changes

Cliquez ensuite sur « Activate on selected sites » pour activer la modification. La Event Console est conçue de manière à ce que cette action s'exécute sans interruption. La réception des messages entrants est assurée à tout moment, de sorte qu'aucun message ne puisse être perdu au cours du processus.

Seuls les administrateurs sont autorisés à activer les modifications dans la console d'événements. Ceci est contrôlé via l'autorisation « Activate changes for event console ».

Test de la nouvelle règle

Pour effectuer un test, vous pouvez bien sûr envoyer des messages via syslog ou SNMP. Vous devriez également le faire ultérieurement. Mais pour un premier test, la fonction de test intégrée à la console d'événements est plus pratique :

ec simulator

Vous disposez ici de deux options : l’ Try outévalue, sur la base du message simulé, laquelle des règles saisirait le message. Si vous vous trouvez au niveau supérieur de l’interface graphique de la Configuration de l’EC, les ensembles de règles seront mis en évidence. Si vous vous trouvez à l’intérieur d’un ensemble de règles, les règles individuelles sont mises en évidence. Chaque ensemble ou règle est marqué par l’un des trois symboles suivants :

icon rulematch

Cette règle est la première à s'appliquer au message et détermine donc son sort.

icon rulepmatch

Cette règle s'appliquerait, mais le message a déjà été traité par une règle antérieure.

icon rulenmatch

Cette règle ne s'applique pas. Très pratique : si vous passez la souris sur la boule grise, vous obtenez une explication sur la raison pour laquelle la règle ne s'applique pas.

Cliquer sur «Generate event» (Générer l'événement) a presque le même effet que «Try out» (Simuler l'événement), sauf que le message est cette fois-ci réellement généré. Toutes les actions définies sont effectivement exécutées. L'événement apparaîtra alors également dans la liste des événements ouverts de la supervision. Vous pouvez voir le code source du message généré dans la confirmation :

ec event generated

L'événement généré apparaît dans le menu « Monitor » sous « Event Console > Events » :

ec one open event

Génération manuelle de messages à des fins de test

Pour un premier test concret sur le réseau, vous pouvez facilement envoyer manuellement un message syslog depuis un autre ordinateur Linux. Le protocole étant très simple, vous n’avez même pas besoin d’un programme spécial ; il vous suffit d’envoyer les données via netcat ou nc en utilisant le protocole UDP. Le contenu du paquet UDP se compose d’une seule ligne de texte. Si celle-ci respecte une structure spécifique, l’Event Console décompose clairement les composants :

user@host:~$ echo '<78>Dec 18 10:40:00 myserver123 MyApplication: It happened again.' | nc -w 0 -u 10.1.1.94 514
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Mais vous pouvez également envoyer n'importe quoi. La console d'événements l'acceptera quand même et l'évaluera simplement comme un texte de message. Les informations supplémentaires telles que l'application, la priorité, etc. seront bien sûr manquantes. Pour des raisons de sécurité, l'CRITt de statut sera supposée :

user@host:~$ echo 'This is no syslog message' | nc -w 0 -u 10.1.1.94 514
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Au sein de l'instance Checkmk exécutant l'EC, il existe un canal nommé dans lequel vous pouvez écrire localement des messages texte via echo. Il s'agit d'une méthode très simple pour établir une connexion avec une application locale et également d'un moyen de tester le traitement des messages :

OMD[mysite]:~$ echo 'Local application says hello' > tmp/run/mkeventd/events
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

À ce propos, il est également possible d'envoyer des messages au format syslog ici, afin que tous les champs des données liées à l'événement soient correctement renseignés.

3.3. Paramètres de la Event Console

La Event Console dispose de ses propres paramètres généraux, qui ne se trouvent pas parmi ceux des autres modules, mais sous « Setup > Events > Event Console » (Configuration > Paramètres généraux) via le bouton « Settings » (Configurer).

ec settings

Comme toujours, vous trouverez des explications sur les différents paramètres dans l'aide en ligne et aux endroits appropriés de cet article.

L'accès aux paramètres est possible via l'autorisation « Configuration of Event Console », qui n'est disponible par défaut que dans le rôle « admin ».

3.4. Autorisations

La Event Console dispose également de sa propre section dédiée aux rôles et aux autorisations :

ec permissions

Nous aborderons certaines de ces autorisations plus en détail aux endroits appropriés de cet article.

3.5. Affectation des ordinateurs hôtes dans la Event Console

Une particularité de l'Event Console réside dans le fait que, contrairement à la supervision basée sur l'état, les ordinateurs hôtes ne sont pas au centre de l'attention. Les événements peuvent se produire sans attribution explicite d'ordinateur hôte, ce qui est d'ailleurs souvent souhaitable. Toutefois, une attribution doit être possible pour les ordinateurs hôtes déjà sous supervision active, afin de pouvoir accéder rapidement à l'aperçu de l'état lorsqu'un événement se produit. Ou, au plus tard, si les événements doivent être convertis en états, une attribution correcte est indispensable.

La règle fondamentale pour les messages reçus via syslog est que le nom de domaine dans le message doit correspondre au nom de domaine dans la supervision. Ceci est obtenu en utilisant le nom de domaine complet (FQDN) / nom de domaine complet (FQHN), tant dans votre configuration syslog que dans la dénomination des ordinateurs hôtes dans Checkmk. Dans Rsyslog, vous pouvez y parvenir en utilisant la directive globale $PreserveFQDN on.

Checkmk tente de saisir automatiquement, du mieux possible, les noms de domaine des événements de supervision à ceux de la supervision active. Outre le nom de domaine, l'alias de l'ordinateur hôte est également pris en compte. Si le nom court est transmis via syslog, l'affectation sera correcte.

Une résolution inverse de l'adresse IP n'aurait pas beaucoup de sens ici, car des serveurs de journaux intermédiaires sont souvent utilisés. Si la conversion des noms de domaine en FQDN/FQHN ou la saisie de nombreux alias prend trop de temps, vous pouvez utiliser le paramètre de l'Event Console « Hostname translation for incoming messages » pour traduire les noms de domaine directement lors de la réception des messages. Vous disposez ainsi de nombreuses possibilités :

ec hostname translation

La méthode la plus flexible consiste à utiliser des expressions régulières, qui permettent une recherche et un remplacement intelligents au sein des noms de domaine. En particulier, si les noms de domaine sont explicites, mais que seule la partie domaine utilisée dans Checkmk manque, une règle simple permet de résoudre le problème : (.*) devient \1.mydomain.test. Dans les cas où tout cela ne suffit pas, vous pouvez toujours utiliser Explicit hostname mapping pour spécifier un tableau de noms individuels et leurs traductions respectives.

Important : une conversion de nom est effectuée avant la vérification des conditions de la règle et donc bien avant une éventuelle réécriture du nom de domaine par l'action de règle Rewrite hostname dans la réécriture automatique de texte.

L'affectation est un peu plus simple avec SNMP. Ici, l'adresse IP de l'expéditeur est comparée aux adresses IP mises en cache des ordinateurs hôtes dans la supervision — c'est-à-dire que dès que des vérifications actives régulières sont disponibles, telles que la vérification de l'accessibilité du port Telnet ou SSH sur un commutateur, les messages d'état de cet appareil envoyés via SNMP seront affectés à l'ordinateur hôte correct.

4. La Event Console dans la supervision

4.1. Vues des événements

Les événements générés par la Event Console s'affichent de la même manière que les ordinateurs hôtes et les services dans l'environnement de supervision. Vous trouverez le point d'accès correspondant dans le menu « Monitor » sous « Event Console > Events: »

ec open events hilites

Vous pouvez personnaliser la vue « Events » affichée comme n’importe quelle autre. Vous pouvez filtrer les événements affichés, exécuter des instructions, etc. Pour plus de détails, consultez l’article sur les vues. Lorsque vous créez de nouvelles vues d’événements, les événements et l’historique des événements sont disponibles en tant que sources de données.

Un clic sur l'ID de l'événement (ici, par exemple, 27) vous permettra d'afficher ses détails :

ec event details

Comme vous pouvez le constater, un événement comporte plusieurs champs de données, dont nous expliquerons la signification au fur et à mesure dans cet article. Les champs les plus importants méritent néanmoins d'être brièvement mentionnés ici :

Champ Signification

State (severity) of event

Comme mentionné dans l'introduction, chaque événement est classé comme « OK », « WARN », « CRIT » ou « UNKNOWN ». Les événements de statut « OK » sont plutôt rares. En effet, l'EC est précisément conçu pour ne filtrer que les problèmes. Il existe toutefois des situations où un événement « OK » peut s'avérer pertinent.

Text/Message of the event

Contenu réel de l'événement : un message texte.

Hostname

Le nom de l'ordinateur hôte qui a envoyé le message. Il ne s'agit pas nécessairement d'un ordinateur hôte activement supervisé par Checkmk. Toutefois, si un ordinateur hôte portant ce nom existe dans la supervision, l'EC créera automatiquement un lien. Dans ce cas, les champs Host alias, Host contacts et Host icons seront également remplis et l'ordinateur hôte apparaîtra sous la même notation que dans la supervision active.

Rule-ID

L'ID de la règle qui a généré cet événement. En cliquant sur cet ID, vous accédez directement aux détails de la règle. À noter que l'ID est conservé même si la règle n'existe plus entre-temps.

Comme mentionné au début, les événements s’affichent directement dans l’Overviewe de la barre latérale :

The Overview snap-in with the display of events.

Vous y verrez trois chiffres :

  • Events — tous les événements ouverts et confirmés (correspond à la vue « Event Console > Events »)

  • Problems — parmi lesquels uniquement ceux dont l'état est « WARN » / « CRIT » / « UNKNOWN »

  • Unhandled — parmi ceux-ci, uniquement ceux qui n’ont pas encore fait l’objet d’une confirmation (nous y reviendrons dans un instant)

4.2. Instructions et flux de travail des événements

À l’instar des hôtes et des services, un flux de travail simple est également affecté aux événements. Comme d’habitude, cela s’effectue via des instructions, accessibles dans le menu Commands. En affichant et en cochant les cases à cocher, vous pouvez exécuter une instruction sur plusieurs événements simultanément. Une fonctionnalité particulière permet d’archiver fréquemment un événement unique directement via l’icône icon archive event.

Pour chacune des instructions, il existe une autorisation que vous pouvez utiliser pour contrôler à quel rôle l'exécution de l'instruction est autorisée. Par défaut, toutes les instructions sont autorisées pour les détenteurs des rôles « admin » et « user ».

ec commands menu

Les instructions suivantes sont disponibles :

Mettre à jour et envoyer une confirmation

L’instruction « Update & Acknowledge » affiche la zone suivante au-dessus de la liste des événements :

ec commands

Le bouton « Update » vous permet, en une seule action, d’ajouter un commentaire à l’événement, d’ajouter une personne de contact et de réaliser une confirmation de l’événement. Le champ « Change contact » est volontairement un champ de texte libre. Vous pouvez également y saisir des informations telles que des numéros de téléphone. Ce champ n’a notamment aucune incidence sur la visibilité de l’événement dans l’interface graphique — il s’agit purement d’un champ de commentaire.

La case à cocher « Set event to acknowledged » (Valider l'événement) fera passer l'événement de la phase « open » (En attente de confirmation) à « acknowledged » (Validé), et il s'affichera désormais comme « handled » (Événement validé). Ce processus est analogue à la confirmation des problèmes liés à l'ordinateur hôte et au service.

Une exécution ultérieure de l’instruction avec la case à cocher décochée supprime cette confirmation.

Modifier l'état

L’instruction « Change State » permet de modifier manuellement l’état d’un événement, par exemple de « CRIT » à « WARN ».

Action personnalisée

L’instruction « Custom Action » permet d’exécuter des actions librement définissables sur des événements. Au départ, seule l’action « Send monitoring notification » est disponible. Cela enverra une notification Checkmk qui sera handleée de la même manière que celle provenant d’un service activement supervisé. Cette notification passe par les règles de notification et peut générer des courriers électroniques, un SMS ou tout autre élément que vous avez configuré en conséquence. Voir ci-dessous pour plus de détails sur la notification par l’EC.

Archiver l'événement

Le bouton « Archive Event » supprime définitivement un événement de la liste des événements ouverts. Étant donné que toutes les actions sur les événements — y compris cette suppression — sont également enregistrées dans les archives, vous pourrez toujours accéder ultérieurement à toutes les informations relatives à l’événement. C’est pourquoi nous ne parlons pas de suppression, mais plutôt d’archivage.

Vous pouvez également archiver facilement des événements individuels à partir de la liste des événements à l’aide de la fonction « icon archive event ».

4.3. Visibilité des événements

Le « problème » de visibilité

Afin d’assurer la visibilité des ordinateurs hôtes et des services dans la supervision pour les utilisateurs normaux, Checkmk utilise des groupes de contact. Ces groupes sont attribués aux ordinateurs hôtes et aux services via l’interface graphique de configuration, la configuration des règles ou celle des dossiers.

Avec la Event Console, il n'existe pas d'affectation de ce type des événements à des groupes de contact. En effet, on ne sait tout simplement pas à l'avance quels messages seront effectivement reçus. Même la liste des ordinateurs hôtes n'est pas connue, car les sockets pour syslog et SNMP sont accessibles de partout. C'est pourquoi la Event Console inclut quelques fonctionnalités spéciales pour définir la visibilité.

Au départ, tout le monde peut tout voir

Tout d’abord, lors de la configuration des rôles utilisateur, il existe l’autorisation «Event Console > See all events». Celle-ci est active par défaut, de sorte que les utilisateurs normaux sont autorisés à voir tous les événements ! Ce paramètre est délibérément défini pour garantir que les messages d’erreur importants ne passent pas inaperçus en raison d’une configuration incorrecte. La première étape vers une visibilité plus précise consiste à supprimer cette autorisation du rôle «user».

Affectation aux ordinateurs hôtes

Afin de garantir que la visibilité des événements soit aussi cohérente que possible avec le reste de la supervision, la Event Console s'efforce autant que possible de saisir les hôtes d'où elle reçoit des événements à ceux configurés via l'interface graphique de configuration. Ce qui semble simple s'avère délicat dans les détails. Il arrive parfois qu'un nom de domaine soit absent de l'événement et que seule l'adresse IP soit connue. Dans d'autres cas, le nom de domaine est orthographié différemment de ce qui figure dans l'interface graphique de configuration.

L'affectation s'effectue comme suit :

  • Si aucun nom de domaine n'est trouvé dans l'événement, son adresse IP est utilisée comme nom de domaine.

  • Le nom de domaine figurant dans l'événement est ensuite comparé, sans tenir compte de la casse, à tous les noms de domaine, adresses d'ordinateurs hôtes et adresses IP des ordinateurs hôtes sous supervision.

  • Si un ordinateur hôte est trouvé de cette manière, ses groupes de contacts sont utilisés pour l'événement, et ceux-ci servent ensuite à contrôler la visibilité.

  • Si l'ordinateur hôte n'est pas trouvé, les groupes de contacts — s'ils y sont configurés — sont extraits de la règle qui a créé l'événement.

  • Si aucun groupe n’y est non plus enregistré, l’utilisateur ne peut voir l’événement que s’il dispose de l’autorisation « Event Console > See events not related to a known host ».

Vous pouvez influencer l'affectation à un moment donné : En effet, si des groupes de contacts sont définis dans la règle et que l'hôte peut être affecté, l'affectation a généralement la priorité. Vous pouvez modifier cela dans une règle à l'aide de l'option «Precedence of contact groups» :

ec outcome contact groups

De plus, vous pouvez définir des paramètres directement dans la règle pour la notification. Cela permet de donner la priorité au type d’événement par rapport aux responsabilités habituelles d’un ordinateur hôte.

4.4. Dépannage

Quelle règle s'applique, et à quelle fréquence ?

Tant pour les ensembles de règles …​

ec pack hits

… que pour les règles individuelles …​

ec rule hits

… dans la colonne «Hits», vous trouverez des informations sur la fréquence à laquelle le pack ou la règle a déjà saisi un message. Cela vous aide à éliminer ou à corriger les règles inefficaces. Mais cela peut également s’avérer intéressant pour les règles qui saisissent très souvent. Pour une performance optimale de l’EC, celles-ci devraient se trouver au début de la chaîne de règles. De cette manière, vous pouvez réduire le nombre de règles que l’EC doit tester sur chaque message.

Vous pouvez réinitialiser les compteurs à tout moment via l'entrée « Event Console > Reset counters » du menu.

Débogage de l'évaluation des règles

Dans la section « Essayer une règle », vous avez déjà vu comment utiliser l’Event Simulator pour vérifier les évaluations de vos règles. Vous pouvez obtenir des informations similaires lors de l’exécution pour tous les messages, si, dans les paramètres de l’Event Console, vous définissez la valeur de « Debug rule execution » à « on ».

Le fichier journal de l'Event Console se trouve à l'adresse var/log/mkeventd.log. Vous y trouverez la raison exacte pour laquelle une règle vérifiée n'a pas pris effet :

var/log/mkeventd.log
[1481020022.001612] Processing message from ('10.40.21.11', 57123): '<22>Dec  6 11:27:02 myserver123 exim[1468]: Delivery complete, 4 message(s) remain.'
[1481020022.001664] Parsed message:
 application:    exim
 facility:       2
 host:           myserver123
 ipaddress:      10.40.21.11
 pid:            1468
 priority:       6
 text:           Delivery complete, 4 message(s) remain.
 time:           1481020022.0
[1481020022.001679] Trying rule test/myrule01...
[1481020022.001688]   Text:   Delivery complete, 4 message(s) remain.
[1481020022.001698]   Syslog: 2.6
[1481020022.001705]   Host:   myserver123
[1481020022.001725]   did not match because of wrong application 'exim' (need 'security')
[1481020022.001733] Trying rule test/myrule02n...
[1481020022.001739]   Text:   Delivery complete, 4 message(s) remain.
[1481020022.001746]   Syslog: 2.6
[1481020022.001751]   Host:   myserver123
[1481020022.001764]   did not match because of wrong text

Il va sans dire que vous ne devez utiliser cette journalisation intensive qu'en cas de besoin et avec prudence. Dans un environnement à peine plus complexe, d'énormes volumes de données seront générés !

5. La pleine portée des règles

5.1. Les conditions

La partie la plus importante d’une règle EC est bien sûr la condition (Matching Criteria). Ce n’est que si un message remplit toutes les conditions enregistrées dans la règle que les actions définies dans celle-ci sont exécutées et que l’évaluation du message est ainsi terminée.

ec matching criteria

Informations générales sur les comparaisons de texte

Pour toutes les conditions impliquant des champs de texte, le texte de comparaison est toujours traité comme une expression régulière. La comparaison s’effectue toujours sans tenir compte de la casse. Ce dernier point constitue une exception aux conventions de Checkmk dans les autres modules. Cependant, cela rend la formulation des règles plus robuste, d’autant plus que l’orthographe des noms de domaine dans les événements n’est pas nécessairement cohérente s’ils ont été configurés localement sur chaque ordinateur hôte plutôt que de manière centralisée. Cette exception est donc très utile ici.

De plus, une correspondance d'infixe s'applique toujours, c'est-à-dire une vérification du contenu du texte de recherche. Vous pouvez donc omettre l'.*e au début ou à la fin du texte de recherche.

Il existe toutefois une exception : Si aucune expression régulière n’est utilisée dans la correspondance avec le nom de domaine, mais plutôt un nom de domaine explicite, la vérification portera sur une correspondance exacte et non sur la présence du nom de domaine dans le texte.

Attention : si le texte recherché contient un point (.), il sera considéré comme une expression régulière et la recherche infixe s'appliquera ; par exemple, myhost.com correspondra alors également à notmyhostide !

Groupe de correspondance

Le concept de groupes de correspondance dans le champ Text to match est ici très important et utile. Il s'agit des sections de texte qui correspondent aux expressions entre parenthèses dans l'expression régulière.

Supposons que vous souhaitiez effectuer la supervision du type de message suivant dans le fichier journal d'une base de données :

Database instance WP41 has failed

L'WP41 est bien sûr variable et vous ne souhaitez certainement pas formuler une règle distincte pour chaque occurrence différente. Vous utilisez donc .* dans l'expression régulière, qui représente n'importe quelle chaîne de caractères :

Database instance .* has failed

Si vous placez maintenant la partie variable entre parenthèses, l'Event Console mémorisera (capturera) la valeur réelle pour toute action future :

Database instance (.*) has failed

Une fois la règle appliquée avec succès, le premier groupe de correspondance est désormais défini sur la valeur « WP41 » (ou sur l'instance qui a généré l'erreur).

Vous pouvez voir ces groupes de correspondance dans l'Event Simulatore si vous passez le curseur sur la boule verte :

ec match groups 1

Vous pouvez également voir les groupes dans les détails de l'événement généré :

ec match groups 2

Les groupes de correspondance sont notamment utilisés pour :

À ce stade, voici une astuce : Il existe des situations où vous devez regrouper un élément dans l'expression régulière, mais où vous ne souhaitez pas créer de groupe de correspondance. Vous pouvez le faire en plaçant un « ?: » directement après la parenthèse ouvrante. Exemple : l'expression « one (.*) two (?:.*) three » crée, pour une correspondance sur « one 123 two 456 three », un seul groupe de correspondance « 123 ».

adresse IP

Dans le champ « Match original source IP address », vous pouvez saisir l'adresse IPv4 de l'expéditeur du message. Spécifiez soit une adresse exacte, soit un réseau sous la forme X.X.X.X/Y, par exemple 192.168.8.0/24 pour saisir toutes les adresses du réseau 192.168.8. X.

Notez que la correspondance avec l'adresse IP ne fonctionne que si les systèmes surveillés envoient directement leurs messages à la Event Console. Si un autre serveur syslog intermédiaire connecté transfère les messages, c'est son adresse qui apparaîtra à la place en tant qu'expéditeur dans le message.

Priorité et facilité syslog

Les champs « Match syslog priority » et « Match syslog facility » sont des informations standardisées, définies à l’origine par les spécifications syslog. En interne, un champ de 8 bits est divisé en 5 bits pour la facilité (32 possibilités) et 3 bits pour la priorité (8 possibilités).

Les 32 facilités prédéfinies étaient autrefois destinées à des éléments tels qu’une application. Mais le choix n’avait pas été fait de manière très visionnaire à l’époque. L’une de ces facilités est uucp — un protocole qui, au début des années 90 du siècle dernier, était déjà presque obsolète.

Mais il est un fait que chaque message transitant par syslog comporte l’une de ces facilités. Dans certains cas, vous pouvez également les attribuer librement lors de l’envoi du message, afin de pouvoir les filtrer ultérieurement. Ceci est très utile.

L'utilisation de la facilité et de la priorité comporte également un aspect lié aux performances. Si vous définissez une règle qui s'applique uniquement aux messages ayant tous la même facilité ou la même priorité, vous devriez également définir ces critères dans les filtres de la règle. L'Event Console peut alors contourner ces règles très efficacement lorsqu'un message présentant des valeurs différentes est reçu. Plus le nombre de règles comportant ces filtres est élevé, moins il est nécessaire de comparer les règles.

Inverser une correspondance

La case à cocher « Negate match: Execute this rule if the upper conditions are not fulfilled. » (Inverser la règle) fait en sorte que la règle ne s'applique que lorsque aucune des conditions n'est remplie. Cela n'est en réalité utile que dans le contexte de deux types de règles (option « Rule type » dans la case « Outcome & Action » de la règle) :

  • Do not perform any action, drop this message, stop processing.

  • Skip this rule pack, continue rule execution with next pack

Vous trouverez ci-dessous plus d'informations sur les ensembles de règles.

5.2. Effet de la règle

Type de règle : Annuler ou créer un événement

Lorsqu’une règle correspond, elle spécifie ce qu’il faut faire avec le message. Cela se fait dans la case « Outcome & Action » :

ec outcome

L'Rule type peut être utilisé pour interrompre complètement l'évaluation à ce stade ou pour le paquet de règles actuel. La première option, en particulier, doit être utilisée pour éliminer la plupart des « bruits » inutiles à l'aide de quelques règles spécifiques dès le début. Ce n'est qu'avec les règles « normales » que les autres options de cette case sont réellement évaluées.

Définition du statut

Avec l’option « State », la règle définit le statut de l’événement dans la supervision. Dans la règle, cet état sera « WARN » ou « CRIT ». Les règles qui génèrent des événements « OK » peuvent être intéressantes dans les exceptions pour représenter certains événements de manière purement informative. Dans un tel cas, une combinaison avec une expiration automatique de ces événements est alors intéressante.

Outre la définition d’un statut explicite, il existe deux options plus dynamiques. Le paramètre « (set by syslog) » reprend la classification basée sur la priorité syslog. Cela ne fonctionne que si le message a déjà été classé de manière exploitable par l’expéditeur. Les messages reçus directement par syslog contiendront l’une des huit priorités RFC, qui sont affectées comme suit :

Priorité ID État Définition selon syslog

emerg

0

CRIT

le système est inutilisable

alert

1

CRIT

action immédiate requise

crit

2

CRIT

Condition critique

err

3

CRIT

erreur

warning

4

WARN

avertissement

notice

5

OK

information normale, mais importante

info

6

OK

à titre purement informatif

debug

7

OK

message de débogage

Outre les messages syslog, les messages provenant du journal des événements Windows et ceux issus de fichiers texte déjà classés à l'aide du plugin Checkmk logwatch sur le système cible fournissent des états prêts à l'emploi. Pour les traps SNMP, cette fonctionnalité n'est malheureusement pas disponible.

Une méthode totalement différente consiste à classer le message en fonction du texte lui-même. Cela peut être effectué à l'aide du paramètre « (set by message text) » :

ec state by text

La correspondance avec les textes configurés ici n'a lieu qu'après la vérification de l'Text to match et une fois que les autres conditions de la règle ont été vérifiées, de sorte que vous n'avez pas à répéter ces vérifications.

Si aucun des modèles configurés n'est trouvé, l'événement renvoie l'état UNKNOWN.

Niveaux de service

L'idée derrière le champ « Service Level » est que chaque ordinateur hôte et chaque service au sein d'une organisation possède un certain niveau d'importance. Cela peut être associé à un contrat de service spécifique pour l'ordinateur hôte ou le service. Dans Checkmk, vous pouvez utiliser des règles pour attribuer de tels niveaux de service à vos ordinateurs hôtes et services, puis, par exemple, faire en sorte que les notifications ou les tableaux de bord personnalisés en dépendent.

Étant donné que les événements ne sont pas nécessairement liés à des ordinateurs hôtes ou à des services, l'Event Console vous permet d'attribuer un niveau de service à un événement à l'aide d'une règle. Vous pouvez ensuite filtrer les vues d'événements en fonction de ce niveau.

Par défaut, Checkmk définit quatre niveaux : 0 (aucun niveau), 10 (argent), 20 (or) et 30 (platine). Vous pouvez modifier cette sélection selon vos besoins dans l’Global settings > Notifications > Service Levels. Les chiffres désignant les niveaux sont déterminants, car les niveaux sont triés par ces chiffres et également comparés en fonction de leur importance relative.

Groupes de contact

Les groupes de contacts utilisés pour la visibilité seront également utilisés pour la notification des événements. Vous pouvez ici utiliser des règles pour attribuer explicitement des groupes de contacts à des événements. Vous trouverez plus de détails dans le chapitre consacré à la supervision.

Actions

Les actions sont très similaires aux gestionnaires d'alertes pour les ordinateurs hôtes et les services. Vous pouvez ici faire exécuter un script personnalisé lorsqu'un événement est ouvert. Vous trouverez ci-dessous, dans une section distincte, des informations détaillées sur les actions.

Suppression automatique (archivage)

La suppression automatique (= archivage), que vous pouvez configurer via Delete event immediately after the actions, garantit qu’un événement ne soit plus visible du tout dans la supervision. Cela est utile si vous souhaitez uniquement déclencher certaines actions automatiquement ou si vous souhaitez uniquement archiver certains événements afin de pouvoir les rechercher ultérieurement.

5.3. Réécriture automatisée des textes

Grâce à la fonction d'Rewriting, une règle EC peut automatiquement réécrire les champs de texte d'un message et ajouter des annotations. Cette fonction est configurée dans une case de dialogue distincte :

ec rewriting

Lors de la réécriture, les groupes de correspondance revêtent une importance particulière. Ils vous permettent d'inclure des parties du message d'origine dans le nouveau texte. Vous pouvez accéder aux groupes lors de la réécriture comme suit :

\1

Sera remplacé par le premier groupe de correspondance du message d'origine.

\2

Sera remplacé par le deuxième groupe de correspondance du message d'origine (etc.).

0

Sera remplacé par le message d'origine complet.

Dans la capture d'écran ci-dessus, le texte du nouveau message sera codé comme suit : Instance \1 has been shut down. Bien entendu, cela ne fonctionne que si l'expression de recherche régulière (Text to match) dans la même règle comporte également au moins une expression entre parenthèses. Un exemple de cela serait par exemple :

ec rewrite match

Quelques remarques supplémentaires sur la réécriture :

  • La réécriture s'effectue après avoir saisi les données et avant l'exécution des actions.

  • La saisie, la réécriture et les actions sont toujours effectuées dans la même règle. Il n’est pas possible de réécrire un message puis de le traiter avec une règle ultérieure.

  • Les expressions \1, \2, etc. peuvent être utilisées dans tous les champs de texte, et pas seulement dans Rewrite message text.

5.4. Annulation automatisée des événements

Certaines applications ou certains appareils ont la gentillesse d’envoyer ultérieurement un message OK approprié dès que le problème a été résolu. Vous pouvez configurer l’EC de manière à ce que, dans un tel cas, l’événement ouvert par l’erreur soit automatiquement annulé. C’est ce qu’on appelle l’annulation.

La figure suivante illustre une règle permettant de rechercher les messages contenant le texte « database instance (.*) has failed ». L'expression « (.*) » représente une chaîne arbitraire capturée dans un groupe de correspondance. L'expression « database instance (.*) recovery in progress », qui se trouve dans le champ « Text to cancel event(s) » de cette même règle, fermera automatiquement les événements créés à l'aide de cette règle lorsqu'un message correspondant sera reçu :

ec cancelling

L'annulation automatique fonctionne tant que

  • un message est reçu dont le texte correspond à Text to cancel event(s),

  • la valeur capturée ici dans le groupe « (.*) » est identique au groupe de correspondance du message d’origine,

  • les deux messages proviennent de l'ordinateur hôte, et

  • il s'agit de la même application (le champ Syslog application to cancel event).

Le principe du groupe de correspondance est ici très important. Après tout, cela n’aurait pas beaucoup de sens si le message database instance TEST recovery in progress annulait un événement qui avait été généré par le message database instance PROD has failed, n’est-ce pas ?

Ne commettez pas l’erreur d’utiliser le paramètre de remplacement \1 dans Text to cancel events(s). Cela ne fonctionne PAS ! Ces paramètres de remplacement ne fonctionnent que pour la réécriture.

Dans certains cas, il arrive qu’un texte soit utilisé à la fois pour créer et pour annuler un événement. Dans ce cas, l’annulation est prioritaire.

Effectuer des actions lors de l'annulation

Vous pouvez également faire en sorte que des actions soient exécutées automatiquement lorsqu’un événement est annulé. Il est important de savoir que lorsqu’un événement est annulé, un certain nombre de champs de données de l’événement sont écrasés par les valeurs du message OK avant que toute action ne soit exécutée. De cette manière, l'intégralité des données du message OK est alors disponible dans le script d'action. De plus, au cours de cette phase, l'état de l'événement est marqué comme « OK ». Ainsi, un script d'action peut détecter une écrasement et vous pouvez utiliser le même script pour les messages d'erreur et les messages OK (par exemple, lors de la connexion à un système de tickets).

Les champs suivants sont remplacés par les données du message OK :

  • Le texte du message

  • L'horodatage

  • L'heure de la dernière occurrence

  • La priorité syslog

Tous les autres champs restent inchangés, y compris l'ID de l'événement.

Annulation combinée à la réécriture

Si vous utilisez la réécriture et l'annulation dans la même règle, vous devez faire preuve de prudence lors de la réécriture du nom de domaine ou de l'application. Lors de l'annulation, la console d'événements checke toujours si le message d'annulation correspond au nom de domaine et à l'application de l'événement ouvert. Mais si ceux-ci ont été réécrits, l'annulation ne fonctionnerait jamais.

C'est pourquoi, avant d'annuler l'événement, la Event Console simule une réécriture du nom de domaine et de l'application afin de comparer les textes concernés. C'est probablement ce à quoi vous vous attendiez.

Vous pouvez également tirer parti de ce comportement si le champ « application » du message d'erreur et du message « OK » ultérieur ne saisissent pas la même valeur. Dans ce cas, il suffit de réécrire le champ « application » en lui attribuant une valeur fixe connue. Cela a en effet pour conséquence que ce champ sera ignoré.

Annulation basée sur la priorité syslog

Il existe (malheureusement) des situations où le texte des messages d'erreur et OK est absolument identique. Dans la plupart des cas, l'état réel n'est pas codé dans le texte, mais dans la priorité syslog.

C'est à cette fin qu'existe l'option « Syslog priority to cancel event ». Saisissez ici la plage debug …​ notice par exemple. Toutes les priorités de cette plage sont normalement considérées comme ayant un statut OK. Lorsque vous utilisez cette option, vous devez tout de même saisir un texte approprié dans le champ « Text to cancel event(s) », sinon la règle sera saisie pour tous les messages OK concernant la même application.

5.5. Comptage des messages

Dans la case « Counting & Timing », vous trouverez des options permettant de compter les messages similaires. L'idée est que certains messages ne sont pertinents que s'ils apparaissent trop fréquemment ou trop rarement au cours de périodes de temps données.

Messages trop fréquents

Vous pouvez activer le check des messages qui apparaissent trop souvent à l'aide de l'option « Count messages in interval » :

ec counting

Vous devez d'abord spécifier une période de temps dans « Time period for counting » et le nombre de messages devant entraîner l'ouverture d'un événement dans « Count until triggered ». Dans l'exemple ci-dessus, ce paramètre est défini sur 10 messages par heure. Bien entendu, il ne s'agit pas de 10 messages arbitraires, mais de messages correspondant à la règle.

En règle générale, il est préférable de ne pas compter globalement tous les messages correspondants, mais uniquement ceux qui se rapportent à la même « cause ». Pour contrôler cela, il existe trois cases à cocher pour les options précédées de Force separate events for different …​. Celles-ci sont préréglées de telle sorte que les messages ne sont comptés ensemble que s’ils correspondent dans :

Cela vous permet de formuler des règles telles que « Si plus de 10 messages sont reçus par heure provenant du même ordinateur hôte, de la même application et de la même instance, alors…​ ». En raison de cette règle, cela peut entraîner la génération de plusieurs événements différents.

Si, par exemple, vous désélectionnez les trois cases à cocher, le comptage ne s’effectuera alors qu’au niveau global et la règle ne pourra générer qu’un seul événement au total !

À ce propos, il peut être judicieux de saisir 1 comme nombre. De cette manière, vous pouvez maîtriser efficacement les « tempêtes d’événements ». Si, par exemple, 100 messages du même type sont reçus en peu de temps, un seul événement sera néanmoins créé. Vous verrez alors dans les détails de l’événement

  • l'heure à laquelle le premier message est survenu,

  • l'heure à laquelle le message le plus récent est survenu, ainsi que

  • le nombre total de messages regroupés dans cet événement.

Une fois le dossier fermé, deux cases à cocher vous permettent de définir quand un nouvel événement doit être ouvert. Normalement, la confirmation de l’événement entraîne, si d’autres messages sont reçus, le démarrage d’un nouveau compteur et le déclenchement d’un nouvel événement. Cette fonction est désactivée à l’aide de l’option « Continue counting when event is acknowledged ».

L'option « Discontinue counting after time has elapsed » garantit qu'un événement distinct est toujours ouvert pour chaque période de comparaison. Dans l'exemple ci-dessus, une valeur seuil de 10 messages par heure a été spécifiée. Si cette option est activée, un maximum de 10 messages d'une heure sera ajouté à un événement déjà ouvert. Dès que l'heure s'est écoulée, si un nombre suffisant de messages a été reçu, un nouvel événement sera ouvert.

Par exemple, si vous définissez le nombre sur 1 et l'intervalle de temps sur un jour, vous ne verrez qu'un seul événement de ce type de message par jour au maximum.

Le paramètre «Algorithm » peut paraître un peu surprenant à première vue. Mais soyons réalistes : Que voulez-vous dire exactement par « 10 messages par heure » ? De quelle heure s'agit-il ? Toujours les heures pleines de la journée ? Il se pourrait que, dans la dernière minute d’une heure, neuf messages soient reçus, et neuf autres dans la première minute de l’heure suivante. Cela ferait alors 18 messages en seulement deux minutes écoulées, mais toujours moins de 10 par heure, et la règle ne s’appliquerait donc pas. Cela ne semble pas très raisonnable…​

Comme il n’existe pas de solution unique à ce problème, Checkmk propose trois définitions différentes de ce que signifie exactement « 10 messages par heure » :

Algorithme Fonctionnalité

Interval

L'intervalle de comptage commence dès la réception du premier message correspondant. Un événement est généré dans la phase d'counting. Si le délai spécifié s'écoule avant que le nombre de messages ne soit atteint, l'événement est supprimé sans notification. En revanche, si le nombre de messages est atteint avant l'expiration du délai, l'événement est ouvert immédiatement (et toutes les actions configurées sont déclenchées).

Token Bucket

Cet algorithme ne fonctionne pas avec des intervalles de temps fixes, mais met en œuvre une méthode souvent utilisée dans les réseaux pour la régulation du trafic. Supposons que vous ayez configuré 10 messages par heure. Cela correspond à une moyenne d’un message toutes les 6 minutes. La première fois qu’un message correspondant est reçu, un événement est généré dans la phase « counting » et le compteur est défini sur 1. Pour chaque message suivant, ce compteur est incrémenté de 1. Et toutes les 6 minutes, le compteur est décrémenté de 1 à nouveau — qu’un message soit arrivé ou non. Si le compteur retombe à 0, l’événement est supprimé. Le déclencheur est donc activé lorsque le taux moyen de messages est en permanence supérieur à 10 par heure.

Dynamic Token Bucket

Il s'agit d'une variante de l'algorithme «Token Bucket», selon laquelle plus le compteur est faible à un moment donné, plus il diminue lentement. Dans l'exemple ci-dessus, si le compteur était à 5, il ne diminuerait que toutes les 12 minutes au lieu de toutes les 6 minutes. L'effet global est que les taux de notification légèrement supérieurs au seuil autorisé déclencheront un événement (et donneront donc lieu à une notification) beaucoup plus rapidement.

Alors, quel algorithme devriez-vous choisir ?

  • Interval est le plus simple à comprendre et le plus facile à suivre si vous souhaitez par la suite effectuer un comptage exact dans votre archive syslog.

  • Token Bucket est en revanche plus intelligent et plus « souple ». Il y a moins d'anomalies aux limites des intervalles.

  • Dynamic Token Bucket rend le système plus réactif et génère des notifications plus rapidement.

Les événements qui n’ont pas encore atteint le nombre défini sont latents mais ne sont pas automatiquement visibles pour l’opérateur. Ils se trouvent en phase d’counting. Vous pouvez rendre ces événements visibles à l’aide du filtre « phase » dans la vue de la table des événements :

ec phase filter counting

Messages trop rares ou manquants

Tout comme l'arrivée d'un message particulier peut signifier un problème, l'absence d'un message peut également signifier un problème. Vous pouvez vous attendre à recevoir au moins un message par jour provenant d'une tâche particulière. Si ce message n'arrive pas, la tâche n'est probablement pas en cours d'exécution et doit être corrigée de toute urgence.

Vous pouvez configurer une option de ce type sous « Counting & Timing > Expect regular messages » :

ec expect messages

Comme pour le comptage, vous devez spécifier une période de temps pendant laquelle vous vous attendez à ce que le ou les messages apparaissent. Ici, cependant, un algorithme complètement différent est utilisé, ce qui est beaucoup plus logique dans ce contexte. La période de temps est toujours alignée exactement sur des positions définies. Par exemple, l'intervalle hour commence toujours à la minute et à la seconde zéro. Vous disposez des options suivantes :

Intervalle Alignement

10 seconds

Sur un nombre de secondes divisible par 10

minute

À la minute pleine

5 minutes

À 0:00, 0:05, 0:10, etc.

15 minutes

À 0 h 00, 0 h 15, 0 h 30, 0 h 45, etc.

hour

Au début de chaque heure pleine

day

Exactement à 00:00, mais dans un fuseau horaire configurable. Cela vous permet également d'indiquer que vous attendez un message entre 12:00 et 12:00 le lendemain. Par exemple, si vous vous trouvez vous-même dans le fuseau horaire UTC +1, indiquez UTC -11 hours.

two days

Au début d'une heure pleine. Vous pouvez spécifier ici un décalage horaire compris entre 0 et 47, par rapport à 00:00:00 UTC du 01/01/1970.

week

À 00 h 00 le jeudi matin dans le fuseau horaire UTC plus le décalage, que vous pouvez exprimer en heures. Le jeudi, car le 1er janvier 1970 — le début de l’« époque » — était un jeudi.

Pourquoi est-ce si compliqué ? C'est pour éviter les fausses alertes. Vous attendez-vous, par exemple, à recevoir un message de sauvegarde par jour ? Il y aura certainement de légères différences dans la durée d'exécution de la sauvegarde, de sorte que les messages ne seront pas reçus exactement à 24 heures d'intervalle. Par exemple, si vous vous attendez à ce que le message arrive vers minuit, à une heure ou deux près, un intervalle de 12 h 00 à 12 h 00 sera bien plus réaliste qu’un intervalle de 00 h 00 à 00 h 00. Toutefois, si le message ne parvient pas, vous ne recevrez une notification qu’à midi, à 12 h 00.

Occurrences multiples du même problème

L'option «Merge with open event» est préréglée de telle sorte que, si le même message apparaît à plusieurs reprises, l'événement existant sera mis à jour. Vous pouvez modifier ce paramètre afin qu'un nouvel événement soit créé à chaque fois.

5.6. Synchronisation

Sous « Counting & Timing », deux options permettent de contrôler l’ouverture et/ou la fermeture automatique des événements.

L'option « Delay event creation » est utile si vous utilisez la fonction d'annulation automatique des événements. Définissez par exemple un délai de 5 minutes ; ainsi, en cas de message d'erreur, l'événement créé restera à l'état « delayed » pendant 5 minutes — dans l'espoir que le message « OK » arrive dans ce délai. Si tel est le cas, l'événement est fermé automatiquement et sans complication, et n'apparaît pas dans la supervision. Si le délai expire, cependant, l'événement sera ouvert et toutes les actions éventuellement définies seront exécutées :

ec delay

Limit event lifetime effectue plus ou moins l’opération inverse. Cette fonction vous permet de faire en sorte que les événements se ferment automatiquement après un certain temps. Cela s’avère utile, par exemple, pour les événements d’information ayant un statut « OK » que vous souhaitez afficher, mais pour lesquels vous ne voulez pas que la supervision génère d’activité. En « désactivant » automatiquement ces messages, vous vous épargnez la suppression manuelle de ces derniers :

ec limit livetime

La confirmation du message interrompt temporairement la désactivation. Ce comportement peut être contrôlé à l’aide des deux cases à cocher.

5.7. Ensembles de règles

Les ensembles de règles présentent non seulement l’avantage de faciliter la gestion, mais ils peuvent également simplifier la configuration de plusieurs règles similaires tout en accélérant l’évaluation.

Supposons que vous disposiez d’un ensemble de 20 règles qui tournent toutes autour de l’Security du journal des événements Windows. Toutes ces règles ont en commun de vérifier, dans la condition, la présence d’un certain texte dans le champ « application » (le nom de ce fichier journal est utilisé dans les messages de l’EC sous la forme « Application »). Dans un tel cas, procédez comme suit :

  1. Créez votre propre ensemble de règles.

  2. Créez les 20 règles pour Security dans ce pack ou déplacez-les vers celui-ci (liste de sélection Move to pack…​ à droite du tableau des règles).

  3. Supprimez la condition relative à l'application de toutes ces règles.

  4. Créez, comme première règle du package, une règle selon laquelle les messages quittent immédiatement le package si l'application n'est pas Security.

Cette règle d'exclusion est structurée comme suit :

  • Matching Criteria > Match syslog application (tag) sur Security.

  • Matching Criteria > Invert matching sur Negate match: Execute this rule if the upper conditions are not fulfilled.

  • Outcome & Action > Rule type sur Skip this rule pack, continue rule execution with next rule pack

Tout message ne provenant pas du journal de sécurité sera « rejeté » par la première règle de ce paquet. Cela simplifie non seulement le reste des règles du paquet, mais accélère également le traitement, car dans la plupart des cas, les autres règles n’ont pas besoin d’être checkées.

6. Actions

6.1. Types d'actions

La Event Console comprend trois types d'actions, que vous pouvez exécuter manuellement ou lors de l'ouverture ou de l'annulation d'événements :

  • Exécution de scripts shell que vous avez vous-même écrits.

  • Envoi de courriers électroniques personnalisés

  • Génération de notifications Checkmk

6.2. Scripts shell et courriers électroniques

Vous devez d'abord définir les courriers électroniques et les scripts dans les paramètres de l'Event Console. Vous les trouverez sous l'entrée «Actions (Emails & Scripts)» :

ec add action

Exécution de scripts shell

Le bouton « Add new action » vous permet de créer une nouvelle action. L'exemple suivant montre comment créer un script shell simple en tant qu'action de type « Execute Shell Script ». Les détails relatifs aux événements sont accessibles au script via des variables d'environnement, par exemple l'$CMK_ID de l'événement, l'$CMK_HOST, le texte complet $CMK_TEXT ou le premier groupe de correspondance sous la forme $CMK_MATCH_GROUP_1. Pour obtenir la liste complète des variables d'environnement disponibles, consultez l'aide en ligne de icon help.

ec define action

Les anciennes versions de Checkmk autorisaient les variables d'environnement ainsi que les macros telles que $TEXT$, qui étaient remplacées avant l'exécution du script. En raison du risque qu'un attaquant puisse injecter des instructions via un paquet UDP spécialement conçu, exécuté avec les privilèges du processus Checkmk, vous ne devez pas utiliser de macros. Les macros sont actuellement encore prises en charge pour des raisons de compatibilité, mais nous nous réservons le droit de les supprimer dans une future version de Checkmk.

Le script d'exemple présenté dans la capture d'écran crée le fichier tmp/test.out dans le répertoire d'instances, dans lequel il écrit un texte contenant les valeurs concrètes des variables pour le dernier événement concerné :

cat << EOF > ${OMD_ROOT}/tmp/test.out
Something happened:

Event-ID: $CMK_ID
Host: $CMK_HOST
Application: $CMK_APPLICATION
Message: $CMK_TEXT
EOF

Les scripts sont exécutés dans l'environnement suivant :

  • /bin/bash est utilisé comme interpréteur.

  • Le script s'exécute en tant qu'utilisateur de l'instance avec le répertoire personnel de l'instance (par exemple /omd/sites/mysite).

  • Pendant l'exécution du script, le traitement des autres événements est interrompu !

Si votre script contient éventuellement des temps d'attente, vous pouvez le faire s'exécuter de manière asynchrone à l'aide du spooler Linux at. Pour ce faire, créez le script dans un fichier local/bin/myaction séparé et lancez-le avec l'instruction at, par exemple :

echo "$OMD_ROOT/local/bin/myaction '$HOST$' '$TEXT$' | at now

Envoi de courriers électroniques

Le type d'action « Send Email » envoie un courrier électronique au format texte simple. Vous pourriez en réalité également effectuer cette opération à l'aide d'un script, par exemple en utilisant l'instruction en ligne de commande « mail ». Mais cette méthode est plus pratique. Notez que les espaces réservés sont également autorisés dans les champs « Recipient email address » et « Subject ».

ec define action email

6.3. Notifications via Checkmk

Outre l'exécution de scripts et l'envoi de courriers électroniques (simples), l'EC dispose d'un troisième type d'action : l'envoi de notifications via le système de notification Checkmk. Les notifications peuvent être générées par l'EC de la même manière que les notifications d'ordinateur hôte et de service issues de la supervision active. Les avantages par rapport aux simples courriers électroniques décrits ci-dessus sont évidents :

  • La notification est configurée pour la supervision active et la supervision basée sur les événements de manière centralisée.

  • Des fonctionnalités telles que les notifications groupées, les courriers électroniques HTML et d'autres fonctions utiles sont disponibles.

  • Les règles de notification définies par l'utilisateur, la désactivation des notifications et autres fonctionnalités similaires fonctionnent comme d'habitude.

Le type d'action «Send monitoring notification» (Notification) est toujours processé automatiquement et ne nécessite aucune configuration.

Étant donné que les événements diffèrent quelque peu des ordinateurs hôtes ou services « normaux », leurs notifications présentent certaines particularités, que vous pourrez découvrir plus en détail dans la section suivante.

Affectation à des ordinateurs hôtes existants

Les événements peuvent provenir de n’importe quel ordinateur hôte, qu’il soit configuré ou non dans la supervision active. En effet, les ports syslog et SNMP sont ouverts à tous les ordinateurs hôtes du réseau. Par conséquent, les attributs d’hôte étendus tels que les alias, les balises de l’hôte, les contacts, etc. ne sont initialement pas disponibles. C’est notamment pour cette raison que les conditions des règles de notification ne fonctionnent pas nécessairement comme vous pourriez vous y attendre.

Par exemple, lors d’une notification, l’EC tente de trouver un ordinateur hôte dans la supervision active qui correspond à l’événement. Cette opération s’effectue selon la même procédure que celle utilisée pour la visibilité des événements. Si un tel ordinateur hôte est trouvé, les données suivantes sont extraites de cet ordinateur hôte :

  • L'orthographe correcte du nom de domaine.

  • L'alias de l'ordinateur hôte

  • L'adresse IP principale configurée dans Checkmk.

  • Les balises de l’hôte

  • Le dossier dans l'interface graphique de configuration de la Configuration

  • La liste des contacts et des groupes de contact

Par conséquent, le nom de domaine figurant dans la notification traitée peut ne pas correspondre exactement au nom de domaine du message d'origine. Le codage des textes de notification, conforme à celui de la supervision active, simplifie toutefois la formulation de règles de notification uniformes incluant des conditions qui s'appliquent au nom de domaine.

L'affectation s'effectue en temps réel en envoyant une requête Livestatus au noyau de supervision qui s'exécute sur le même site que le contrôleur (EC) ayant reçu le message. Bien entendu, cela ne fonctionne que si les messages syslog, les traps SNMP, etc. sont toujours envoyés au site Checkmk sur lequel l'ordinateur hôte est activement supervisé !

Si la requête ne fonctionne pas ou si l'ordinateur hôte est introuvable, des données de substitution seront acceptées :

Nom de domaine

Le nom de domaine issu de l'événement.

Alias de l'ordinateur hôte

Le nom de domaine sera utilisé comme alias.

adresse IP

Le champ « Adresse IP » contient l'adresse de l'expéditeur d'origine du message.

Balises de l’hôte

L'hôte ne recevra pas de balise de l’hôte. Si vous disposez de groupes de balises de l’hôte contenant des balises vides, l'hôte adopte ces balises ; dans le cas contraire, il ne possède aucune balise de ce groupe. Gardez cela à l'esprit lorsque vous définissez des conditions faisant référence à des balises de l’hôte dans les règles de notification.

Configuration du dossier d'interface graphique

Aucun dossier. Toutes les conditions qui renvoient à un dossier spécifique sont donc impossibles à remplir, même dans le cas du dossier Main.

Contacts

La liste des contacts est vide. Si des contacts de secours sont présents, ils seront renseignés.

Si l'ordinateur hôte ne peut pas être attribué dans la supervision active, cela peut bien sûr entraîner des problèmes avec les notifications. D'une part en raison des conditions, qui peuvent alors ne plus s'appliquer, et d'autre part en raison de la sélection des contacts. Dans de tels cas, vous pouvez modifier vos règles de notification afin que les notifications provenant de la Event Console soient traitées spécifiquement à l'aide de leurs propres règles. À cette fin, il existe une condition distincte avec laquelle vous pouvez soit faire correspondre positivement uniquement les notifications EC, soit, à l'inverse, les exclure :

ec notification condition

Champs de notification restants

Pour que les notifications provenant de l’EC transitent par le système de notification de la supervision active, l’EC doit être adaptée afin de se conformer à son schéma. Ce faisant, les champs de données typiques d’une notification sont remplis de la manière la plus efficace possible. Nous venons de décrire comment les données de l’ordinateur hôte sont déterminées. Les autres champs sont les suivants :

Type de notification

Les notifications EC sont toujours considérées comme des messages de service.

Description du service

Il s'agit du contenu du champ «Application» de l'événement. Si ce champ est vide, la valeur «Event Console» sera saisie.

Numéro de notification

Ce numéro est fixé à 1 ; aucune escalade n'est donc possible dans ce cas, de même que lorsque plusieurs événements consécutifs du même type se produisent indépendamment les uns des autres. Actuellement, l'EC ne prend pas en charge les notifications répétées lorsqu'un événement n'a pas fait l'objet d'une confirmation.

Date/Heure

Pour les événements comptabilisés, il s'agit de l'heure de la dernière occurrence d'un message associé à l'événement.

Sortie du plugin

Le contenu textuel de l'événement.

État du service

État de l'événement, c'est-à-dire «OK», «WARN», «CRIT» ou «UNKNOWN».

État précédent

Étant donné que les événements n'ont pas d'état précédent, OK est toujours saisi ici pour les événements normaux, et CRIT est toujours saisi ici lors de l'annulation d'un événement. Cette règle est la plus proche de ce qui est nécessaire pour les règles de notification qui comportent une condition relative au changement d'état exact.

Définition manuelle des groupes de contact

Comme décrit ci-dessus, il peut s’avérer impossible de déterminer automatiquement les contacts pour un événement. Dans ce cas, vous pouvez spécifier des groupes de contacts directement dans la règle EC qui doit être utilisée pour la notification. Il est important de ne pas oublier de checker la case « Use in notifications » :

ec set contact groups

Commutateur global pour les notifications

Il existe un commutateur central pour les notifications dans le snap-in « Master control ». Cela s'applique également aux notifications transmises par l'EC :

The Master control snap-in with notifications switched off.

Tout comme pour l'affectation d'hôte, l'interrogation de ce commutateur par l'EC nécessite un accès Livestatus au noyau de supervision local. Une interrogation réussie est visible dans le fichier journal de l'Event Console :

var/log/mkeventd.log
[1482142567.147669] Notifications are currently disabled. Skipped notification for event 44

Périodes de maintenance programmées pour les ordinateurs hôtes

La Event Console est capable de détecter les ordinateurs hôtes qui sont actuellement en période de maintenance planifiée et n'envoie pas de notifications dans de telles situations. Dans le fichier journal, cela se présentera comme suit :

var/log/mkeventd.log
[1482144021.310723] Host myserver123 is currently in scheduled downtime. Skipping notification of event 433.

Bien entendu, cela nécessite également que l'ordinateur hôte soit détecté avec succès lors de la supervision active. Si cela échoue, on suppose que l'ordinateur hôte n'est pas en période de maintenance et une notification sera générée dans tous les cas.

Macros supplémentaires

Lorsque vous écrivez vos propres scripts de notification, en particulier pour les notifications provenant de l'Event Console, un certain nombre de variables supplémentaires sont disponibles pour décrire l'événement d'origine (accessibles comme d'habitude avec le préfixe NOTIFY_) :

EC_ID

ID de l'événement.

EC_RULE_ID

ID de la règle qui a créé l'événement.

EC_PRIORITY

Priorité syslog sous forme de nombre compris entre 0 (emerg) et 7 (debug).

EC_FACILITY

Facilité syslog — également sous forme de nombre. La plage de valeurs va de 0 (kern) à 32 (snmptrap).

EC_PHASE

Phase de l'événement. Étant donné que seuls les événements ouverts déclenchent des actions, cette valeur doit être open. Pour une notification manuelle d'un événement déjà confirmé, il convient d'indiquer ici ack.

EC_COMMENT

Le champ de commentaire de l'événement.

EC_OWNER

Le champ « Owner ».

EC_CONTACT

Le champ de commentaire contenant les informations de contact spécifiques à l'événement.

EC_PID

L'ID du processus qui a envoyé le message (pour les événements syslog).

EC_MATCH_GROUPS

Les groupes de correspondance issus des correspondances de la règle.

EC_CONTACT_GROUPS

Les groupes de contacts facultatifs définis manuellement dans la règle.

6.4. Exécution des actions

Dans la section Commandes ci-dessus, vous avez déjà découvert l'exécution manuelle des actions par l'opérateur. L'exécution automatique des actions, que vous pouvez configurer à l'aide des règles EC dans la section «Outcome & Action » (Règles d'exécution), est encore plus intéressante :

ec rule actions

Vous pouvez y sélectionner une ou plusieurs actions qui seront exécutées chaque fois qu’un événement est ouvert ou annulé en fonction de la règle. Dans ce dernier cas, vous pouvez utiliser la liste « Do cancelling actions » pour préciser si l’action ne doit être exécutée que si l’événement annulé a déjà atteint la phase « open ». Lorsque vous utilisez le comptage ou le délai, il peut arriver que des événements qui sont encore en attente et non encore visibles pour l’utilisateur soient annulés.

L'exécution des actions est consignée dans le fichier journal var/log/mkeventd.log :

var/log/mkeventd.log
[1481120419.712534] Executing command: ACTION;1;cmkadmin;test
[1481120419.718173] Exitcode: 0

Ces informations sont également consignées dans l'archive.

7. Traps SNMP

7.1. Configuration de la réception des traps SNMP

Étant donné que la Event Console dispose de son propre moteur SNMP intégré, la configuration de la réception des traps SNMP est très simple. Vous n'avez pas besoin d'snmptrapdr le service depuis le système d'exploitation ! Si ce service est déjà en cours d'exécution, arrêtez-le.

Comme décrit dans la section consacrée à la configuration de l'Event Console, utilisez omd config pour activer le récepteur de traps sur cette instance :

ec config traps

Étant donné que, sur chaque serveur, le port UDP dédié aux traps ne peut être utilisé que par un seul processus, cette opération ne peut être effectuée que sur une seule instance Checkmk par ordinateur. Au démarrage de l'instance, dans la ligne contenant l'mkeventd, vous pouvez vérifier si la réception des traps a été activée :

OMD[mysite]:~$ omd start
Creating temporary filesystem /omd/sites/mysite/tmp...OK
Starting mkeventd (builtin: snmptrap)...OK
Starting liveproxyd...OK
Starting mknotifyd...OK
Starting rrdcached...OK
Starting cmc...OK
Starting apache...OK
Starting dcd...OK
Starting redis...OK
Initializing Crontab...OK
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Pour que les traps SNMP fonctionnent, l'expéditeur et le destinataire doivent s'accorder sur certaines informations d'credentials. Dans le cas de SNMPv1 et v2c, il s'agit d'un simple mot de passe, appelé « Community ». Avec la version 3, vous avez besoin de quelques informations d'identification supplémentaires. Vous configurez ces informations d'identification dans les paramètres de l'Event Console sous « Credentials for processing SNMP traps ». Vous pouvez utiliser le bouton « Add new element » pour configurer plusieurs informations d'identification différentes qui peuvent être utilisées comme alternatives par les périphériques SNMP :

ec trap credentials

La partie la plus complexe consiste désormais, bien sûr, à spécifier l'adresse cible de tous les appareils soumis à la supervision et à configurer les identifiants ici également.

7.2. Test

Malheureusement, très peu d’appareils offrent des capacités de test significatives. Vous pouvez au moins tester facilement la réception des traps manuellement à l’aide de l’Event Console elle-même en envoyant un trap de test — de préférence depuis un autre système Linux. Cela peut être effectué à l’aide de l’instruction snmptrap. L’exemple suivant envoie un trap à 192.168.178.11. Le nom de domaine de l’expéditeur est spécifié après .1.3.6.1 et doit être résolvable ou être spécifié sous forme d’adresse IP (ici 192.168.178.30) :

user@host:~$ snmptrap -v 1 -c public 192.168.178.11 .1.3.6.1 192.168.178.30 6 17 '' .1.3.6.1 s "Just kidding"
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Si vous avez défini l'Log levele sur Verbose logging dans les paramètres, vous pourrez voir la réception et l'évaluation des traps dans le fichier journal de l'EC :

var/log/mkeventd.log
[1482387549.481439] Trap received from 192.168.178.30:56772. Checking for acceptance now.
[1482387549.485096] Trap accepted from 192.168.178.30 (ContextEngineId "0x80004fb8054b6c617070666973636816893b00", ContextName "")
[1482387549.485136] 1.3.6.1.2.1.1.3.0                        = 329887
[1482387549.485146] 1.3.6.1.6.3.1.1.4.1.0                    = 1.3.6.1.0.17
[1482387549.485186] 1.3.6.1.6.3.18.1.3.0                     = 192.168.178.30
[1482387549.485219] 1.3.6.1.6.3.18.1.4.0                     =
[1482387549.485238] 1.3.6.1.6.3.1.1.4.3.0                    = 1.3.6.1
[1482387549.485258] 1.3.6.1                                  = Just kidding

En cas d'identifiants incorrects, vous ne verrez qu'une seule ligne :

var/log/mkeventd.log
[1482387556.477364] Trap received from 192.168.178.30:56772. Checking for acceptance now.

Et voici à quoi ressemble un événement généré par un tel trap :

ec trap event

7.3. Convertir des chiffres en texte : traduire les traps

SNMP est un protocole binaire qui utilise très peu de descriptions textuelles pour ses messages. Le type de trap est communiqué en interne par une séquence de chiffres dans ce qu'on appelle les OID. Celles-ci s'affichent sous forme de séquences de chiffres séparés par des points (par exemple : 1.3.6.1.6.3.18.1.3.0).

À l'aide de fichiers MIB, l'Event Console peut traduire ces séquences numériques en texte. Ainsi, par exemple, 1.3.6.1.6.3.18.1.3.0 devient le texte « SNMPv2-MIB::sysUpTime.0 ».

La traduction des traps peut être activée dans les paramètres de l'Event Console :

ec translate traps

Le trap de test ci-dessus génère désormais un événement légèrement différent :

ec trap event translated

Si vous avez activé l’option « Add OID descriptions », l’ensemble devient beaucoup plus détaillé — et plus déroutant. Cela aide toutefois à mieux comprendre ce que fait réellement un trap :

ec trap event translated2

7.4. Téléchargement de vos propres fichiers MIB

Malheureusement, les avantages de la libre distribution ne se sont pas encore étendus aux auteurs de fichiers MIB, et nous, au sein du projet Checkmk, ne sommes donc malheureusement pas en mesure de fournir des fichiers MIB spécifiques à certains fournisseurs. Seule une petite collection de MIB de base gratuites est préinstallée, qui fournit par exemple une traduction de l’sysUpTime.

Vous pouvez toutefois ajouter ces fichiers à l'Event Console dans le module « SNMP MIBs for trap translation » via l'entrée de menu « icon new » Add one or multiple MIBs pour télécharger vos propres fichiers MIB, comme l'a fait l'utilisateur suivant avec certains fichiers MIB provenant des commutateurs intelligents Netgear :

ec mibs for translation

Remarques concernant les MIB :

  • Au lieu de fichiers individuels, vous pouvez également télécharger des fichiers ZIP contenant des collections de MIB en une seule opération.

  • Les MIB ont des dépendances entre elles. Les MIB manquantes vous seront signalées par Checkmk.

  • Les MIB téléchargés sont également utilisés en ligne de commande par cmk --snmptranslate.

8. Supervision des fichiers journaux

L'agent Checkmk est capable d'analyser les fichiers journaux via le plugin logwatch. Ce plugin assure tout d'abord sa propre supervision des fichiers journaux, indépendamment de l'Event Console, y compris la possibilité de confirmer les messages directement dans l'interface de supervision. Il est également possible de transférer les messages détectés par le plugin tels quels vers l'Event Console.

Dans l’agent Windows, la supervision des fichiers journaux est intégrée en permanence — sous la forme d’un plugin pour l’analyse des fichiers texte et d’un autre pour l’analyse des journaux des événements Windows. Le plugin mk_logwatch, codé en Python, est disponible pour Linux et Unix. Ces trois plugins sont accessibles via la boulangerie d’agents pour leur installation ou leur configuration. Utilisez les jeux de règles suivants pour ce faire :

  • Text logfiles (Linux, Solaris, Windows)

  • Finetune Windows Eventlog monitoring

La configuration précise du plugin logwatch n’est pas le sujet de cet article. Il est toutefois important que vous effectuiez toujours le meilleur préfiltrage possible des messages dans le plugin logwatch lui-même et que vous ne vous contentiez pas d’envoyer l’intégralité du contenu des fichiers texte à l’Event Console.

Ne confondez pas cela avec la reclassification ultérieure via le jeu de règles « Logfile patterns ». Celle-ci ne peut modifier que le statut des messages qui ont déjà été envoyés par l'agent. Toutefois, si vous avez déjà configuré ces modèles et que vous souhaitez simplement passer de Logwatch à l'Event Console, vous pouvez conserver les modèles. À cette fin, les règles de transfert (Logwatch Event Console Forwarding) incluent l'option « Reclassify messages before forwarding them to the EC ».

Dans ce cas, tous les messages passent par un total de trois chaînes de règles : sur l'agent, via la reclassification et dans l'Event Console !

Modifiez maintenant Logwatch de manière à ce que les messages détectés par les plug-ins ne soient plus supervisés par la vérification Logwatch habituelle, mais simplement transférés à l'identique vers l'Event Console où ils seront traités. Cela s'effectue à l'aide du jeu de règles « Logwatch Event Console Forwarding » :

ec logwatch forwarding

Quelques remarques à ce sujet :

Si vous disposez d’un environnement distribué où chaque instance ne possède pas sa propre Event Console, les instances distantes doivent transférer leurs messages vers l’instance centrale via syslog. La valeur par défaut est UDP, mais ce protocole n’est pas sécurisé. Une meilleure solution consiste à utiliser syslog via TCP, mais vous devrez activer cette option sur l’instance centrale (omd config).

Lors du transfert, spécifiez un Syslog facility. Cela vous permettra de reconnaître facilement les messages transférés dans la console d'événements. Les valeurs suivantes sont particulièrement adaptées : local0 à local7.

Avec List of expected logfiles, vous pouvez effectuer la supervision de la liste des fichiers journaux attendus et être averti si certains fichiers ne sont pas trouvés comme prévu.

Important : le simple fait d'enregistrer la règle ne suffit pas. Cette règle ne devient active que lors d'une reconnaissance du service. Ce n'est que lorsque vous l'exécutez à nouveau que les services logwatch précédents sont supprimés et qu'un nouveau service nommé Log Forwarding est créé pour chaque ordinateur hôte.

ec log forwarding check

Cette check vous indiquera également ultérieurement si des problèmes surviennent lors du transfert vers l'Event Console.

8.1. Niveau de service et priorités syslog

Étant donné que les fichiers journaux transférés ne comportent souvent pas de classification syslog en fonction du format utilisé, vous pouvez définir la reclassification dans le jeu de règles « Logwatch Event Console Forwarding » sous « Log Forwarding ». De plus, dans les jeux de règles que vous définissez dans le cadre de l’« Rule packs », il est toujours possible de définir individuellement le statut et les niveaux de service.

9. État des événements dans la supervision active

Si vous souhaitez également voir quels ordinateurs hôtes de la supervision active présentent actuellement des événements problématiques ouverts, vous pouvez ajouter une check active pour chaque ordinateur hôte, qui résume l'état actuel des événements de l'ordinateur hôte. Pour un ordinateur hôte ne présentant aucun événement ouvert, cela se présentera comme suit :

ec events check none

S'il n'y a que des événements à l'état « en cours de résolution » (OK), la check affiche leur nombre, mais reste verte :

ec events check ok

Voici un exemple de cas présentant des événements ouverts dans l'état « en cours de traitement » :

ec events check crit

Vous créez ce check actif à l'aide d'une règle dans le jeu de règles « Check event state in Event Console ». Vous pouvez également spécifier si les événements qui ont déjà fait l'objet d'une confirmation doivent ou non continuer à contribuer au statut :

ec check remote

Avec l'option « Application (regular expression) », vous pouvez limiter le contrôle aux événements comportant un texte spécifique dans le champ « application ». Dans ce cas, il peut être judicieux d'avoir plusieurs contrôles d'événements sur un ordinateur hôte et de séparer les contrôles par application. Afin que ceux-ci soient distingués par leur nom, vous avez également besoin de l'option « Item (used in service description) », qui ajoute un texte que vous spécifiez au nom du service.

Si votre Event Console ne s'exécute pas sur la même instance Checkmk que celle qui effectue également la supervision de l'ordinateur hôte, vous devez définir Access to Event Console pour un accès à distance via TCP :

ec events check

Pour que cela fonctionne, l'Event Console doit autoriser l'accès via TCP. Vous pouvez configurer cela dans les paramètres de l'Event Console à laquelle vous souhaitez accéder :

ec remote access

10. Les archives

10.1. Fonctionnement des archives

La Event Console conserve un journal de toutes les modifications subies par un événement. Ce journal est accessible de deux manières :

  • Dans la vue de la table « Recent event history », accessible via Monitor > Event Console.

  • Dans les détails d'un événement via l'entrée « Event Console Event > History of Event ».

Dans la vue de la table, un filtre permet d’afficher uniquement les événements des dernières 24 heures. Toutefois, comme d’habitude, vous pouvez personnaliser les filtres.

La figure suivante présente l'historique de l'événement 33, qui a subi au total quatre modifications. Tout d'abord, l'événement a été créé (NEW), puis son état a été modifié manuellement de « OK » à « WARN » (CHANGESTATE), ensuite, il a fait l'objet d'une confirmation avec l'ajout d'un commentaire (UPDATE), et enfin, l'événement a été archivé/supprimé (DELETE) :

ec history

L'archive contient les types d'action suivants, qui sont affichés dans la colonne « Action » :

Type d'action Description

NEW

L'événement a été nouvellement créé (à la suite d'un message reçu ou d'une règle anticipant un message qui n'est pas apparu).

UPDATE

L'événement a été édité par l'opérateur (modification du commentaire, des contacts ou de la confirmation).

DELETE

L'événement a été archivé.

CANCELLED

L'événement a été automatiquement annulé par un message OK.

CHANGESTATE

L'état de l'événement a été modifié par l'opérateur.

ARCHIVED

L'événement a été automatiquement archivé car aucune règle n'a été appliquée et l'Force message archivingation était activée dans les paramètres généraux.

ORPHANED

L'événement a été automatiquement archivé car, alors qu'il se trouvait en phase d'counting, la règle qui lui était associée a été supprimée.

COUNTREACHED

L'événement a été déplacé de la phase d'counting vers la phase « open » car le nombre de messages configuré a été atteint.

COUNTFAILED

L'événement a été automatiquement archivé car le nombre requis de messages n'a pas été atteint en phase d'counting.

NOCOUNT

L'événement a été automatiquement archivé car, alors qu'il se trouvait en phase « counting », la règle qui lui était associée a été modifiée pour « ne pas compter ».

DELAYOVER

L'événement a été ouvert car le délai configuré dans la règle a expiré.

EXPIRED

L'événement a été automatiquement archivé car sa durée de vie configurée a expiré.

EMAIL

Un courrier électronique a été envoyé.

SCRIPT

Une action automatique (script) a été exécutée.

AUTODELETE

L'événement a été automatiquement archivé immédiatement après son ouverture, car cela était configuré dans la règle correspondante.

10.2. Emplacement de l'archive

Comme mentionné ci-dessus, l'archive de la Event Console n'a pas été conçue comme une archive syslog à part entière. Afin de simplifier au maximum la mise en œuvre et surtout l'administration, aucun backend de base de données n'a été prévu. À la place, l'archive est enregistrée dans de simples fichiers texte. Chaque entrée se compose d'une ligne de texte contenant des colonnes séparées par des tabulations. Vous trouverez ces fichiers dans ~/var/mkeventd/history :

OMD[mysite]:~$ ll var/mkeventd/history/
total 1328
-rw-rw-r-- 1 stable stable 131 Dec 4 23:59 1480633200.log
-rw-rw-r-- 1 stable stable 1123368 Dec 5 23:39 1480892400.log
-rw-rw-r-- 1 stable stable 219812 Dec 6 09:46 1480978800.log
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Par défaut, un nouveau fichier est créé automatiquement chaque jour. Dans les paramètres de l'Event Console, vous pouvez personnaliser la rotation du fichier. Le paramètre « Event history logfile rotation » vous permet de passer à une rotation hebdomadaire.

Les noms de fichiers respectent l'heure Unix à partir du moment de la création du fichier (secondes écoulées depuis le 1er janvier 1970 UTC).

Les fichiers sont conservés pendant 365 jours, sauf si vous modifiez ce paramètre dans l’option « Event history lifetime ». De plus, les fichiers sont également enregistrés par la gestion centrale de l’espace disque de Checkmk, qui peut être configurée dans les paramètres généraux sous « Site management ». Dans ce cas, c’est la durée de conservation la plus courte définie dans chaque cas qui s’applique. La gestion globale présente l’avantage que, si l’espace disque disponible devient insuffisant, elle supprime automatiquement et de manière cohérente les données historiques de Checkmk, en commençant par les plus anciennes.

Si vous rencontrez des problèmes d’espace, vous pouvez également supprimer manuellement les fichiers du répertoire ou les déplacer. Ne placez pas de fichiers compressés ni aucun autre type de fichier dans ce répertoire.

10.3. Archivage automatique

Malgré les limites des fichiers texte, il est théoriquement possible d’archiver un grand nombre de messages dans l’Event Console. L’écriture dans les fichiers texte de l’archive est très performante, mais au détriment d’une recherche ultérieure moins efficace. Comme les fichiers n’ont pour index que la période de la requête, pour toute requête, tous les fichiers pertinents doivent être lus et parcourus dans leur intégralité.

Normalement, l’EC n’écrit dans l’archive que les messages pour lesquels un événement a effectivement été ouvert. Vous pouvez procéder de deux manières différentes pour étendre cette fonctionnalité à tous les événements :

  1. Vous créez une règle qui saisit tous les événements (suivants) et, dans l'Outcome & actions, vous activez l'option « Delete event immediately after the actions ».

  2. Vous activez le commutateur « Force message archiving » dans les paramètres de l'Event Console.

Cette dernière option garantit que les messages qui ne sont soumis à aucune règle sont néanmoins enregistrés dans l'archive (type d'action « ARCHIVED »).

11. Performances et optimisation

11.1. Traitement des messages

Même à une époque où les serveurs disposent de 64 cœurs et de 2 To de mémoire principale, les performances des logiciels continuent de jouer un rôle. En particulier lors du traitement des événements, les messages entrants peuvent se perdre dans des situations extrêmes.

La raison en est qu'aucun des protocoles utilisés (syslog, traps SNMP, etc.) ne prévoit de contrôle de flux. Si des milliers d'ordinateurs hôtes envoient simultanément des messages à chaque seconde, le destinataire n'a aucun moyen de les ralentir.

C'est pourquoi, dans les environnements un peu plus importants, il est important de surveiller les temps de traitement des messages. Cela dépend du nombre de règles que vous avez définies et de la manière dont celles-ci sont structurées.

Mesure des performances

Pour mesurer vos performances, il existe un snap-in distinct pour la barre latérale, intitulé «Event Console Performance». Vous pouvez l'ajouter comme d'habitude à l'aide de l'button sidebar add snapin :

ec performance

Les valeurs affichées ici correspondent à des moyennes sur environ la dernière minute. Une tempête d'événements ne durant que quelques secondes ne peut pas être lue directement ici, mais les chiffres ont été quelque peu lissés et sont donc plus faciles à lire.

Pour tester les performances maximales, vous pouvez générer artificiellement une tempête de messages non classés (uniquement dans le système de test, s'il vous plaît !), par exemple dans une boucle shell en écrivant en continu le contenu d'un fichier texte dans le canal des événements.

OMD[mysite]:~$ while true ; do cat /etc/services > tmp/run/mkeventd/events ; done
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Les valeurs les plus importantes du snap-in ont la signification suivante :

Valeur Signification

Received messages

Nombre de messages actuellement reçus par seconde.

Rule tries

Nombre de règles testées. Cela fournit des informations précieuses sur l'efficacité de la chaîne de règles, en particulier lorsqu'elle est associée au paramètre suivant.

Rule hits

Nombre de règles par seconde qui sont actuellement activées. Il peut s'agir de règles qui rejettent des messages ou qui se contentent de les compter. Par conséquent, chaque activation de règle ne donne pas lieu à un événement.

Rule hit ratio

Le rapport entre les règles activées (Rule tries) et celles qui ne le sont pas (Rule hits). En d’autres termes : combien de règles l’EC doit-elle tester avant qu’une d’entre elles ne prenne (enfin) effet ? Dans l’exemple de la capture d’écran, ce taux est alarmant de faiblesse.

Created events

Nombre de nouveaux événements créés par seconde. Étant donné que la Event Console ne doit afficher que les problèmes pertinents (à l'instar des problèmes d'ordinateur hôte et de service issus de la supervision), le nombre d'événements par seconde indiqué sur la capture d'écran serait bien sûr trop élevé dans la pratique !

Processing time per message

Vous pouvez voir ici le temps qu'il a fallu pour traiter un message. Attention : en général, ce n'est pas l'inverse de Received messages. En effet, les moments où l'Event Console n'avait rien à faire ne sont pas pris en compte, simplement parce qu'aucun message n'est arrivé. Ici, vous mesurez réellement le temps écoulé entre l'arrivée d'un message et la fin du traitement. Vous pouvez voir approximativement combien de messages l'Event Console peut traiter en un temps donné. Notez également qu’il ne s’agit pas du temps CPU, mais du temps réel. Sur un système disposant de suffisamment de processeurs libres, ces durées sont à peu près identiques. Mais dès que le système est tellement sous charge que tous les processus ne disposent pas toujours d’un processeur, le temps réel peut devenir beaucoup plus élevé.

Conseils de réglage

Vous pouvez voir combien de messages l'Event Console peut traiter par seconde à partir de l'Processing time per message. Ce temps est généralement lié au nombre de règles qui doivent être testées avant qu'un message ne soit traité. Vous disposez ici de plusieurs options d'optimisation :

  • Les règles qui excluent un très grand nombre de messages doivent être placées autant que possible au début de la chaîne de règles.

  • Utilisez des ensembles de règles pour regrouper des ensembles de règles connexes. La première règle de chaque ensemble de règles doit quitter l'ensemble de règles immédiatement si la condition de base commune n'est pas remplie.

De plus, l'EC propose une optimisation basée sur la priorité et la facilité syslog. Pour chaque combinaison de priorité et de facilité, une chaîne de règles distincte est créée en interne, dans laquelle seules les règles pertinentes pour les messages de cette combinaison sont incluses.

Chaque règle contenant une condition relative à la priorité, à la facilité ou, de préférence, aux deux, ne sera pas incluse dans toutes ces chaînes de règles, mais de manière optimale dans une seule. Cela signifie que la règle n'a pas besoin d'être checkée pour les messages ayant une classification syslog différente.

Après un redémarrage, vous verrez dans ~/var/log/mkeventd.log un aperçu des chaînes de règles optimisées :

var/log/mkeventd.log
[8488808306.233330]  kern        : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233343]  user        : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233355]  mail        : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233367]  daemon      : emerg(120) alert(89) crit(89) err(89) warning(89) notice(89) info(89) debug(89)
[8488808306.233378]  auth        : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233389]  syslog      : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233408]  lpr         : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233482]  news        : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233424]  uucp        : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233435]  cron        : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233446]  authpriv    : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233457]  ftp         : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233469]  (unused 12) : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233480]  (unused 13) : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233498]  (unused 13) : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233502]  (unused 14) : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233589]  local0      : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233538]  local1      : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233542]  local2      : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233552]  local3      : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233563]  local4      : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233574]  local5      : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233585]  local6      : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233595]  local7      : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)
[8488808306.233654]  snmptrap    : emerg(112) alert(67) crit(67) err(67) warning(67) notice(67) info(67) debug(67)

Dans l'exemple ci-dessus, vous pouvez constater que, dans tous les cas, 67 règles doivent être vérifiées. Pour les messages provenant de la facilité daemon, 89 règles sont pertinentes ; ce n'est que pour la combinaison daemon / emerg que 120 règles doivent être vérifiées. Chaque règle comportant une condition relative à la priorité ou à la facilité réduit encore ce nombre de 67.

Bien entendu, vous ne pouvez définir ces conditions que si vous êtes certain qu’elles sont remplies par les messages concernés !

11.2. Le nombre d'événements actuels

Le nombre d’événements actuellement présents peut également affecter les performances de l’EC — c’est-à-dire lorsqu’il devient vraiment incontrôlable. Comme mentionné précédemment, l’EC ne doit pas être considérée comme un substitut à une archive syslog, mais uniquement comme un moyen d’afficher les « problèmes actuels ». La Event Console peut certes gérer plusieurs milliers de problèmes, mais ce n’est pas sa véritable finalité.

Dès que le nombre d'événements actuels dépasse environ 5 000, les performances commencent à se détériorer de manière notable. D'une part, cela se remarque dans l'interface graphique, qui réagit plus lentement aux requêtes. D'autre part, le traitement devient également plus lent, car dans certaines situations, les messages doivent être comparés à tous les événements actuels. Les besoins en mémoire peuvent également poser problème.

Pour des raisons de performances, l'Event Console conserve toujours tous les événements actuels en mémoire vive (RAM). Ceux-ci sont écrits dans le fichier ~/var/mkeventd/status une fois par minute (réglable) et à la fin du traitement. Si ce fichier devient très volumineux (par exemple, plus de 50 mégaoctets), ce processus ralentit également de plus en plus. Vous pouvez vérifier rapidement la taille actuelle à l'aide de ll. (alias de ls -alF) :

OMD[mysite]:~$ ll -h var/mkeventd/status
-rw-r--r-- 1 mysite mysite 386K Dez 14 13:46 var/mkeventd/status
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Si vous avez trop d'événements en cours en raison d'une règle maladroite (par exemple, une règle qui saisit tout), une suppression manuelle via l'interface graphique n'est pas raisonnablement possible. Dans ce cas, il suffit de supprimer le fichier d'état :

OMD[mysite]:~$ omd stop mkeventd
Stopping mkeventd...killing 17436......OK
OMD[mysite]:~$ rm var/mkeventd/status
OMD[mysite]:~$ omd start mkeventd
Starting mkeventd (builtin: syslog-udp)...OK
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Attention : bien sûr, tous les événements en cours seront perdus, ainsi que le compteur enregistré et les autres états. En particulier, les nouveaux événements recommenceront avec l'ID 1.

Protection automatique contre le débordement

La Event Console dispose d'une protection automatique contre le « débordement ». Celle-ci limite le nombre d'événements en cours par ordinateur hôte, par règle et globalement. Sont pris en compte non seulement les événements ouverts, mais également ceux se trouvant dans d'autres phases, telles que « delayed » ou « counting ». Les événements archivés ne sont pas pris en compte.

Cela vous protège dans les situations où, en raison d’un problème systématique sur votre réseau, des milliers d’événements critiques affluent et où l’Event Console risquerait de « s’arrêter ». D’une part, cela empêche une dégradation des performances de l’Event Console, qui devrait alors stocker un trop grand nombre d’événements dans sa mémoire principale. D’autre part, l’aperçu pour l’opérateur est (quelque peu) protégé et les événements qui ne font pas partie de cette vague restent visibles.

Une fois la limite atteinte, l'une des actions suivantes se produira :

  • La création de nouveaux événements est interrompue (pour cet ordinateur hôte, cette règle ou globalement).

  • Idem, mais en plus, un « événement de débordement » est créé.

  • La même chose, mais en plus, les contacts appropriés sont avertis.

  • Comme alternative aux trois variantes ci-dessus, vous pouvez également faire supprimer l'événement le plus ancien afin de faire de la place pour le nouveau.

Les limites ainsi que l'effet associé à leur atteinte sont définis dans les paramètres de l'Event Console avec l'option « Limit amount of current events ». La figure suivante illustre le paramètre par défaut :

ec limit open events

Si vous avez activé une valeur avec «…​create overflow event», lorsque la limite est atteinte, un seul événement artificiel sera créé, informant l'opérateur de la situation d'erreur :

ec overflow event

Si vous avez également activé une valeur avec « …​notify contacts », les contacts appropriés seront informés via une notification Checkmk. Cette notification passera par les règles de notification Checkmk. Ces règles ne doivent pas nécessairement suivre la sélection de contacts de l’Event Console, mais peuvent la modifier. Le tableau suivant indique quels contacts sont sélectionnés si vous avez défini « Notify all contacts of the notified host or service » (ce qui est le réglage par défaut) :

Limite Sélection des contacts

par ordinateur hôte

Les contacts de l'ordinateur hôte, qui sont déterminés de la même manière que pour la notification d'événements via Checkmk.

par règle

Laissez le champ du nom de domaine vide. Si des groupes de contacts sont définis dans la règle, ceux-ci seront sélectionnés ; sinon, les contacts de secours s'appliqueront.

Global

Les contacts de secours.

11.3. Archive trop volumineuse

Comme indiqué ci-dessus, l'Event Console dispose d'une archive de tous les événements et de leurs étapes de traitement. Celle-ci est stockée dans des fichiers texte pour faciliter la mise en œuvre et l'administration.

Les fichiers texte sont difficiles à battre en termes de performances lors de l'écriture de données — l'utilisation de bases de données, par exemple, ne serait possible qu'au prix d'énormes efforts d'optimisation. Cela s'explique, entre autres, par l'optimisation de ce type d'accès par Linux et par la hiérarchie mémoire complète des disques et des réseaux SAN. Toutefois, cela se fait au détriment des accès en lecture. Comme les fichiers texte ne disposent pas d'index, une lecture complète est nécessaire lors de la recherche dans les fichiers.

Dans sa forme la plus simple, l'Event Console utilise les noms des fichiers journaux comme index pour l'heure des événements. Plus vous limitez la période de requête, plus la recherche sera rapide.

Il est néanmoins très important que votre archive ne devienne pas trop volumineuse. Si vous utilisez l'Event Console uniquement pour traiter de véritables messages d'erreur, cela ne devrait pas se produire. Si vous essayez d'utiliser l'Event Console en remplacement d'une véritable archive syslog, cela peut entraîner la création de fichiers très volumineux.

Si vous vous retrouvez dans une situation où votre archive est devenue trop volumineuse, vous pouvez simplement supprimer les fichiers les plus anciens dans ~/var/mkeventd/history/. De plus, dans Event history lifetime, vous pouvez généralement limiter la durée de vie des données afin que la suppression soit la valeur par défaut à l'avenir. Par défaut, les données sont conservées pendant 365 jours. Peut-être pouvez-vous vous contenter d'une durée nettement plus courte.

11.4. Mesure des performances au fil du temps

Checkmk démarre automatiquement un service pour chaque instance de la Event Console, qui enregistre ses données de performance sous forme de courbes et vous avertit également en cas de dépassement.

À condition que vous ayez installé un agent Linux sur le serveur de supervision, la vérification sera automatiquement détectée et configurée comme d'habitude :

ec check

Le check propose de très nombreux types de mesures intéressants, par exemple le nombre de messages entrants pour chaque période de temps et le nombre de ceux qui ont été rejetés :

ec graph message rate

L'efficacité de votre chaîne de règles est représentée par une comparaison entre les règles testées et celles qui ont fonctionné :

ec graph rule efficiency

Ce graphique montre le temps moyen nécessaire au traitement d'un message :

ec graph processing time

Il existe également plusieurs autres graphiques.

12. Supervision distribuée

Pour savoir comment utiliser la Event Console dans une installation comportant plusieurs instances Checkmk, consultez l'article consacré à la supervision distribuée.

13. L'interface de suivi d'état

La console d'événements, via l'~/tmp/run/mkeventd/status de socket Unix, permet à la fois d'accéder à l'état interne et d'exécuter des instructions. Le protocole utilisé ici est un sous-ensemble fortement restreint de Livestatus. Cette interface est accessible par le noyau de supervision et transmet les données à l'interface graphique afin d'assurer également une supervision distribuée pour la console d'événements.

Les restrictions suivantes s'appliquent au Livestatus simplifié de l'Event Console :

  • Les seuls en-têtes autorisés sont Filter: et OutputFormat:.

  • Par conséquent, aucun KeepAlive n'est possible ; une seule requête peut être effectuée par connexion.

Les tableaux suivants sont disponibles :

events

Liste de tous les événements en cours.

history

Accès aux archives. Une requête sur ce tableau permet d'accéder aux fichiers texte des archives. Veillez à utiliser un filtre sur la date de l'entrée afin d'éviter un accès complet à tous les fichiers.

status

Valeurs d'état et de performance de l'EC. Cette table comporte toujours exactement une ligne.

Les instructions peuvent être écrites dans le socket à l'aide d'unixcat, avec une syntaxe très simple :

OMD[mysite]:~$ echo "COMMAND RELOAD" | unixcat tmp/run/mkeventd/status
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Les instructions suivantes sont disponibles :

DELETE

Archive un événement. Arguments : ID de l'événement et abréviation de l'utilisateur.

RELOAD

Recharge la configuration.

SHUTDOWN

Quitte la Event Console.

REOPENLOG

Rouvre le fichier journal. Cette instruction est requise pour la rotation des fichiers journaux.

FLUSH

Supprime tous les événements actuels et archivés.

SYNC

Lance une mise à jour immédiate du fichier « ~/var/mkeventd/status ».

RESETCOUNTERS

Réinitialise les compteurs de déclenchement des règles (correspond à l'entrée « Event Console > Reset counters » dans l'interface graphique de configuration).

UPDATE

Exécute une mise à jour à partir d'un événement. Les arguments sont, dans l'ordre : identifiant de l'événement, abréviation de l'utilisateur, confirmation (0/1), commentaire et coordonnées.

CHANGESTATE

Modifie les états « OK » / « WARN » / « CRIT » / « UNKNOWN » d’un événement. Les arguments sont l’ID de l’événement, l’abréviation de l’utilisateur et le chiffre de statut (0 / 1 / 2 / 3).

ACTION

Exécute une action définie par l'utilisateur sur un événement. Les arguments sont l'ID de l'événement, l'abréviation de l'utilisateur et l'ID de l'action. L'ID spécial @NOTIFY représente une notification concernant Checkmk.

14. Fichiers et répertoires

Chemin d'accès au fichier Description

var/mkeventd

Répertoire de travail du daemon d'événements.

var/mkeventd/status

État actuel complet de la Event Console. Cela inclut principalement tous les événements actuellement ouverts (ainsi que ceux en phase de transition, tels que « counting », etc.). En cas de mauvaise configuration entraînant un grand nombre d'événements ouverts, ce fichier peut devenir très volumineux et réduire considérablement les performances de la Event Console. Dans une telle situation, vous pouvez arrêter le service « mkeventd », supprimer le fichier, puis redémarrer le service afin de supprimer tous les événements ouverts en une seule fois.

var/mkeventd/history/

Emplacement du fichier d'archive.

var/log/mkeventd.log

Fichier journal de l'Event Console.

etc/check_mk/mkeventd.d/wato/global.mk

Paramètres globaux de l'Event Console en syntaxe Python.

etc/check_mk/mkeventd.d/wato/rules.mk

Tous vos paquets de règles et règles configurés en syntaxe Python.

tmp/run/mkeventd/events

Un canal nommé dans lequel vous pouvez écrire des messages directement à l'aide de l'instruction « echo » ou d'autres instructions pour les transmettre à l'EC. Assurez-vous qu'une seule application écrive dans ce canal à la fois, sinon les textes des messages risquent de se mélanger.

tmp/run/mkeventd/eventsocket

Un socket Unix qui remplit la même fonction que le canal, mais permet à plusieurs applications d'y écrire simultanément. Pour y écrire, vous devez utiliser l'instruction `unixcat` ou `socat`.

tmp/run/mkeventd/pid

L'ID de processus actuel du daemon d'événements pendant son exécution.

tmp/run/mkeventd/status

Une socket Unix qui permet d'interroger l'état actuel et d'envoyer des instructions. Les requêtes de l'interface graphique sont d'abord transmises au noyau de supervision, qui accède ensuite à cette socket.

local/share/snmp/mibs

Fichiers MIB que vous avez téléchargés pour la traduction des traps SNMP.


Last modified: Tue, 09 Sep 2025 10:34:34 GMT via commit a9bacca55
Sur cette page