Collection de journaux Linux. Linux. RSYSLOG. Assemblage de journal centralisé. Installez RSYSLOG et configurez-le pour recevoir des journaux

Salutations, lecteur de mon blog. Long time je n'ai pas écrit d'articles. Beaucoup de changements de vie ... l'article d'aujourd'hui sera dévoué syslog., Plus précisément rSYSLOG.Ce qui est activement mis en œuvre au lieu de l'ancien SysLogd (c'est Sysklogd) dans les dernières versions de distributions (par exemple, etc.). Description de la performance de base que j'ai menée dans l'article correspondant. Par conséquent, avant de lire la lecture ci-dessous, je suis très conseillé de lire. Actuellement pour moi il y a une tâche recueillir des journaux système Syslog à partir de l'équipement réseau Dans la quantité d'environ 100 hôtes, suivi d'une augmentation de leur quantité. Je vais essayer de mettre en œuvre cette fonctionnalité dans cet article, pré-décrivant et. Tout ce cas sera décrit sur la base de Debian 6, dans d'autres distributions, en présence d'expérience, avec un mouvement minimal avec un fichier, je pense que ce ne sera pas un bon travail. Alors, commençons ...

Introduction RSYSLOG.

Comme je l'ai déjà dit, rSYSLOG. est devenu un package par défaut dans la plupart des distributions Linux (peut-être dans tous). RSYSLOG. coïncide totalement protocole Syslogdécrit dans, ainsi que contenant des caractéristiques supplémentaires. Tels que le transport TCP, le filtrage et le tri des messages, le stockage de messages dans le SGBD, le cryptage et le MND. Dans l'article, je vais essayer de considérer la description, la description contrôle du démon rsyslogd et.

Installation de RSYSLOGD.

Installation de RSYSLOG (si pour une raison quelconque, il n'est pas installé par défaut) se déclenche à une commande:

Aptitude Installer RSYSLOG # dans un chapeau rouge Possible Yum Installez l'option RSYSLOG

Directives de configuration (directives de configuration)

Les directives de configuration sont parfois appelées directives globales, elles spécifient démon RSYSLOGD GÉNÉRAL. La directive a format Paramètre de la directive $

########################### #### Les directives globales ############# #### ############## # Définit l'utilisation d'un format classique TimeStamp (MES DD CH: mm: ss). # Pour activer le format Unix TimeStamps, vous devez commenter la chaîne. $ ActionfileDefaultTemplate RSYSLOG_TRADITIONALFILEFORMAT # # Définit la valeur par défaut pour les fichiers journaux. $ Fileowner racine $ FileGroup Adm $ FileCreateMode $ 0,64 mille Dircreatemode 0755 $ $ Umask 0022 # # Indique l'emplacement des fichiers spools et statiques (pour stocker des fichiers tels que des messages) $ WorkDirectory / var / spool / rsyslog # # Inclict tous les configs au format * . Conf de la /etc/rsyslog.d/ $ includeconfig /etc/rsyslog.d/*.conf

La liste la plus complète des directives globales peut être trouvée.

Modèles RSYSLOG Modèles

Très important et clé caractéristiques RSYSLOGD. Est la capacité d'utiliser des modèles. Le modèle vous permet de: 1. Définissez le format des informations affichées, 2. Utilisez les noms de fichiers journaux dynamiques basés sur une règle. En fait, tout Les messages de sortie dans RSYSLOGD sont formés en fonction des modèles. Il peut y avoir une question appropriée - la façon dont la sortie est formé si vous ne spécifiez pas de modèles dans rsyslog.conf. (Après tout, aucun modèle n'est spécifié par défaut)? Tout est simple. Il existe des modèles (tirés de CO compatible CO et statique prescrit dans des sources RSYSLOG). La confirmation de ce cas peut être trouvée dans le fichier de code source SysLogd.c, la recherche de la ligne "Template_" (Templates de standard sur commande / * sur les valbles / * utilisés pour les valeurs par défaut) * /). Les modèles doivent être spécifiés. avant que Utiliser dans les règles.

Modèle Cintaxis.

En général, la structure de modèle peut être représentée sous la forme de syntaxe suivante:

$ template_sblon Nom description_subble[, Options (PA)]]

Demandons chaque article. $ Modèle. - indique que la description du modèle suivante ira. nom du tableau - Un sens arbitraire décrit clairement que pour le modèle et pour quoi (le nom sera utilisé pour faire appel au modèle). option - peut faire une valeur sql et sqlstd, cela permet de formater le résultat final de l'exécution de modèle dans la vue appropriée pour MySQL ou SQL standard, respectivement (en fait, remplace certaines moles spéciales dans le message Syslog au format pris en charge par le serveur SQL). Les options sont appliquées uniquement pour les modèles à la sortie dans SQL.

description_subble mensonges dans des citations. Dans les modèles entre guillemets, tout texte est perçu littéralement (tel quel), en plus du texte conclu dans des panneaux d'intérêt ( %texte%). Un tel texte est une variable et vous permet d'obtenir un "accès" au contenu interne du message à venir et réalisez ainsi toute fichie amusante sur la modification). En outre, dans les guillemets peut être utilisé par le soi-disant. Des séquences d'échappement sous la forme d'une ligne de tresse inverse et d'un certain symbole de la ligne (par exemple, \\ N est une nouvelle ligne, \\ 7 - ...).

Appliquez des variables dans les modèles RSYSLOG

Livrons la structure des valeurs indiquées en% pourcentage%.

% Nom_proper [: start_linking: End_stalk: Options [: Nom de terrain]]%

name_proper. (c'est nom de qualité, c'est nom nom) - Spécifie le nom de la propriété (la propriété dans ce contexte peut être considérée comme un seul message de champ de propriété \\ syslog traversant le démon), voici quelques-uns des plus utilisés avec russes RSYSLOG.:

  • msg. - Message corporel
  • nom d'hôte. - Nom d'hôte \\ IP du message
  • dehorshot. - nom d'hôte à partir duquel le message est venu
  • dehost-ip. - l'adresse hôte à partir de laquelle des messages reçus (127.0.0.1 pour les messages locaux)
  • syslogtag - le nom et le numéro du processus ("RSYSLOGD:"), qui a émis un message (extrait du message)
  • nom du programme. - le nom du processus qui a émis un message (extrait du message)
  • pri. - source et priorité, sous la forme d'un nombre
  • pri-texte. - Source décodée et priorité ( Établissement..priorité., par exemple Syslog.emer)
  • syslogfacility - Seule une source sous la forme d'un nombre
  • sysLogFacility-Text-Text - Seule la source décodée ("local0")
  • syslogseverity. - seule la priorité sous la forme d'un nombre
  • syslogseverity-Text-Text - Seulement le niveau décodé ("débogage")
  • délicieux - Temps de réception (haute résolution)
  • tempéré - Temps extrait du message
  • iNPUTNAME. - le nom du module d'entrée
  • $ Heure, minute de dollars - Heure actuelle
  • $ Myhostname. - Traitement des noms d'hôte

Comme vous pouvez le constater, certaines propriétés commencent par un signe dollar - ils sont considérés comme un système local \\.

Plus loin - option. Les options vous permettent de modifier la variable à la frontière à partir du pourcentage du signe pourcentage. Vous pouvez utiliser simultanément plusieurs options, à travers la virgule. Si vous spécifiez plusieurs contradictoires (par exemple, majuscules, minuscules), la dernière spécifiée (minuscule) sera appliquée. Voici quelques options:

  • majuscule. - Transformation vers le registre supérieur
  • minuscule - Convertir au registre inférieur
  • date-mysql - Convertir à la date des dates MySQL
  • espace-cc. - remplacer les caractères de contrôle par des espaces
  • dROP-CC. - Supprimer les caractères de contrôle

nom de domaine. - Ce champ est disponible avec la version 6.3.9+ et a un caractère très spécifique. Vous pouvez l'oublier ...

Comme on peut le voir à partir du gabarit variable ci-dessus, les valeurs des supports bouclés sont indiquées comme souhaitée, c'est-à-dire qu'il est possible de spécifier simplement, par exemple% de nom d'hôte%. Mais si les options sont appliquées, vous devez également spécifier les champs vides précédents, par exemple%% Nom d'hôte :::% minuscule. Entre les couleurs manquées de champs start_stalk and end_stalk. En même temps, FieldName pour une raison aussi vide - n'est pas spécifié.

Les modèles que le matériel sont programmés dans RSYSLOG (mais cela peut être modifié par la directive $ ActionfileDefaultTemplate.):

Rsyslog_syslogprotocol23format. - Le format défini dans le projet standard IETF-SysLog-Protocol-23 correspond au modèle:

"<%PRI%>1% TIMESTAMP ::: Date-rfc3339 %% nom d'hôte %% nom de l'application %% Procid %% msgid %% structure-données %% msg% \\ n \\ "

Rsyslog_fileformat. - format magazine traditionnel, avec l'ajout d'une deuxième et d'une seconde zone correspond à la matrice:

"% TIMESTAMP ::: Date-rfc3339 %% nom d'hôte %% syslogtagTag %% msg ::: SP-SP-NO-1ST-SP %% MSG ::: DROP-Last-LF% \\ N \\"

RSYSLOG_TRADITIONALFILEFILED. - Format de journal traditionnel pour l'écriture dans le fichier correspond au modèle suivant:

"% TimeStamp %% Hostname %% syslogtag %% msg ::: SP-SP-NO-1-1ST-SP %% MSG ::: Drop-Last-LF% \\ n \\"

Rsyslog_forwardformat. - format magazine traditionnel pour la transmission avec l'ajout d'une deuxième zone et, correspond à la matrice:

"<%PRI%>% TimeStamp ::: Date de-RFC3339 %% %% HostName syslogtag: 1: 32 %% MSG ::: SP-IF-NO-1ST-SP %% MSG% \\ "

RSYSLOG_TRADITIONALFORWORDWORD. - Format de journal traditionnel pour la transmission à un serveur distant

"<%PRI%>% TimeStamp %% Hostname %% Syslogtagtag: 1: 32 %% MSG ::: SP-SP-NO-1ST-SP %% msg% \\ "

Règles de tri des rsyslog (ligne de règle)

Chaque ligne de règles de tri a un format classique, comme dans le syslog habituel. Pour comprendre quoi et comment, vous devez lire l'article. En bref: la règle consiste en selekotor et actions séparé par un espace ou une onglet. Sélecteur À son tour consiste en la source et priorité. Chaque message est vérifié avec le sélecteur de chaque règle séquentiellement si le sélecteur de message et la règle coïncide, l'action spécifiée est effectuée. En même temps, après la première coïncidence, le traitement ne s'arrête pas. Avant que actionLe MESAD est converti en fonction du modèle (modèle par défaut spécifié dans la directive correspondante (remplacement du modèle par défaut) spécifié dans ce modèle d'action - l'un des trois).

Aux caractéristiques standard syslog Selectors Certaines fonctionnalités supplémentaires ont été ajoutées (vous rappelle que le sélecteur classique est source. Besoin, il est Établissement..priorité.). Dans RSYSLOG, vous pouvez utiliser des valeurs comme sélecteur. Dans RSYSLOG, l'utilisation de variables dans le sélecteur est appelée Filtres (filtres). Ci-dessus dans l'article, ainsi que l'approche de filtrage classique est décrite sur la base de source. Besoin(appelé «Sélecteurs basés sur la gravité et les installations traditionnels»). En plus du filtrage traditionnel, il y a ce qui suit Types de filtration: Filtres basés sur Rainherscript (Filtrage basé sur le langage Rainherscript - en fait ordinaire si - alors - sinon), filtres à base de biens (Filtrage basé sur les propriétés de message (comme c)). Regardons les deux:

Filtrage Raineurscript (filtres à base de pluie de pluie)

Comme je l'ai dit, Rainerscript est une langue classique basée sur le cas échéant. RSYSLOG Rainherscript soutient les conditions des conditions, des opérations arithmétiques, logiques et de chaînes. En général, la syntaxe est la suivante:

Si condition puis bloquée sinon bloqué l'infection

Respectivement, si donc. - ce sont des opérateurs obligatoires définissant la conception de la condition, aUTRE. - De nécessité. block_dection - Peut contenir une action () ou un bloc de conditions investi. Si le bloc de condition contient plusieurs actions, il se situe entre crochets. état - contient la condition de sélection du bloc block_nation. La condition peut utiliser:

  1. expressions logiques (et, ou non), ainsi que le regroupement de ces expressions sous la forme: pas conditions0 et (condition1 et condition2).
  2. variables (propriétés) - Les variables sont indiquées sous la forme de $ _name_name (par exemple $ $ nom d'hôte ou $ msg)
  3. opérations de comparaison (\u003d\u003d - également,! \u003d - Pas aussi bien,\u003e - plus,< - меньше, <= - меньше или равно, >\u003d - Plus ou égal, (!) Contient - (non) contient, (!) StartSwith - (non) commence par)
  4. commentaires / * Commentaires * / (Point douteux ... Dois-je le protéger comme dans Bash ???)

Cisco.

AS53XX231 # Conf t Entrez les commandes de configuration, une par ligne. Fin avec CNTL / Z. AS53XX231 (config) #logging 10.0.0.1 AS53XX231 (config) #exit

VMware Esxi.

Pour un vieil hyperviseur:

Dans /etc/syslog.conf, vous devez ajouter ce qui suit:

*. * @ 10.0.0.1 # Dans Fireworks, vous devez résoudre Syslog et le sauvegarder: ESXCFG-Firewall -o 514, UDP, OUT, SYSLOG ESXCFG-Firewall -L # Redémarrer Syslog Service Syslog Syslog Syslog

Dans les dernières versions de l'hyperviseur, tout se fait via un client de guidage. Dans Paramètres d'hyperviseur Encounded -\u003e Syslog -\u003e Télécommande Spécifiez l'adresse du serveur RSYSLOG.

Stockage de RSYSLOG Magazine dans MySQL DBMS

Dans Debian, la mise en place de stockage dans la base de données méga est simple (presque à la fois dans le vendeur)). En général, il suffit d'installer le paquet RSYSLOG-MYSQL. Dans le même temps, le programme d'installation place le module OMMYSQL.SO au répertoire USR / LIB / RSYSYLORAL / SPANG et démarre l'assistant de configuration qui demande au mot de passe administrateur MySQL, crée un utilisateur distinct et demande à spécifier un mot de passe pour cela. Crée une base appropriée à partir du script / USR / Share / dBconfig-Comman / Data / RSYSLOG-MYSQL / Installation / MySQL. Les paramètres résultant mis en /etc/rsyslog.d/mysql.conf. La configuration est obtenue à partir de 2 lignes ::

Connexion du module: $ Modload OMMYSQL # Envoyez tous les messages à MySQL (rappelez les actions ci-dessus) *. *: Ommysql: adresse_server, nom de base de noms, nom d'utilisateur, mot de passe

Interface Web pour RSYSLOG

En tant qu'interface Web, nous configurerons Loganalisateur de Adiscon. L'installation de l'interface Web est assez simple. Il est de télécharger l'archive, le déballage dans le répertoire du serveur Web et exécutez l'assistant d'installation graphique. Donc, d'ici (http://loganalyzer.adiscon.com/downloads) Téléchargez l'archive avec des fichiers (par exemple: http://download.adiscon.com/loganalyzer/loganalyzer-3.5.6.tar.gz). Avant de configurer, bien sûr, un serveur WEB et le module PHP5 doivent être installés (Installer Apache2 libapache2 Aptitudes-MOD-PHP5). Oui, un autre PHP5-GD pour afficher des rapports.

~ # # # # Télécharger Archive: ~ # wget http://download.adiscon.com/loganalyzer/loganalyzer-3.5.6.tar.gz ~ # # # Numéro de décompression des archives: ~ # Tar XF Loganalyzer-3.5.6.tar.gz

Le répertoire actuel apparaîtra dans le répertoire Loganalyzer-3.5.6, qui contient des informations dignes de lecture:

~ # LS -L Total 12 Racine racine DRWXR-XR-X 3 4096 Sep 20 22:51. DRWX ------- 13 Racine racine 4096 Sep 20 23:01 .. Racine racine DRWXRWXR-x 5 Racine 4096 sept. 10 17:26 Loganalyzer-3.5.6 ~ # LS -L Loganalyzer-3.5.6 / Total 112 -RW -Rw-r-- 1 racine racine 41186 sep 10 17:26 Changelog drwxrwxr-x 2 Racine racine 4096 sept. 20 23:01 Contrib---RW-RW-R-- 1 racine root 35497 sep 10 17:26 Copie DrWXRWXR-X 2 racine racine 4096 sep 10 17:34 Doc -RW-RW-R-- 1 racine racine 8449 sept. 10 17:26 Installation de la racine racine DRWXRWXR-X 14 4096 17 sept. 17:34 SRC ~ # # # du catalogue SRC dont nous avons besoin Copier le contenu dans / var / www / loganalyzer: ~ # mkdir / var / www / loganalyzer ~ # cp -r loganalyzer-3.5.6 / src / * / var / www / loganalyzer ~ # # Suivant, vous devez créer un Fichier de configuration vide, ~ # # qui sera rempli automatiquement - installateur ~ # toucher /var/www/loganalyzer/config.php ~ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # définissez le droit d'écrire (après avoir installé ces droits) ~ # chmod 666 / var /www/loganalyzer/config.php

khmaham ici.

Nous voyons pourquoi nous avons donné 666 droits, cliquez sur Suivant

Ici vous choisissez les paramètres souhaités. Une attention particulière nécessite le paramètre Activer la base de données utilisateur. Si vous le sélectionnez, une base séparée sera créée pour stocker les paramètres d'interface Web. De plus, la possibilité de créer des utilisateurs et des groupes sera disponible. Cliquez sur Suivant.

Il y a une petite addition - le serveur Web n'a pas accès aux fichiers habituels du répertoire / var / log /. Par conséquent, le magazine peut ne pas être affiché. Pour résoudre ce problème, vous devez ajouter un utilisateur de données www au groupe ADM:

~ # usermod -g ADM www-data

En plus de Loganalyzer, il existe également une logzilla, qui a le même fonctionnel. Cela vaut également la peine d'essayer d'établir s'il y a un désir.

Quelques conseils et Trix pour Rsyslog

Parfois, lorsque RSYSLOG est un service réseau permettant de collecter des journaux à distance, le stockage des messages par nom d'hôte est inconfortable ou improductif ou peut-être autre chose. Pour désactiver les adresses de résolution des courriels dans l'hôte, vous devez ajouter le paramètre -x:

~ # CAT / ETC / DEFAULT / RSYSLOG RSYSLOGD_OPTIONS \u003d "- C5 -X"

Afin de permettre aux paquets UDP de passer, vous devez utiliser la commande:

~ # Iptables -a entrée -P udp -s sous -net_ historique --Dport 514 -I interface -j Accepter

Quelques exemples de règles avec des commentaires:

# Si vous créez un sélecteur de ce type: SI $ DTHOST-IP STARTSWITH "10.0.1". Ensuite, / quoi / ce #, il convient de faire attention au dernier point de l'adresse, # sinon les adresses du 10.0.111.0, 10.0.12.0 et d'autres

Pour un journal centralisé pour collecter des journaux à partir de périphériques réseau, vous pouvez installer la source (installation) à n'importe quelle valeur de local0-local7. Cela permettra de bien trier les messages, exemple:

# Cisco: Net-Device-Cisco # Conf t Entrez les commandes de configuration, une par ligne. Fin avec CNTL / Z.<...> Net-Device-Cisco (config) #Logging Installation local2<...> # RSYSLOG-Server local2. * /Var/log/remote-cisco.log & ~

Ainsi, vous pouvez facilement filtrer les messages locaux de la télécommande.

Voici une configuration qui vous permet d'envoyer des notifications par courrier électronique sur les événements (!!! Le serveur de messagerie doit recevoir des messages sans authentification):

$ Modload ommad $ tankMardailsMttpServer ADRES_SMTP $ ActionMailsMTPPort 25 $ ActionMailDe adresse de l'expéditeur @ $ ActionMailTo Adresse du destinataire @ $ Modèle Mail_subject, "Sur l'hôte% Nom de l'hôte par serveur" $ Modèle Mail_body, "Installation.Serverity :. % Syslogfacility %% syslogiority% to% Géneraché% sur l'hôte:% Nom d'hôte% \\ r \\ n% msg% "$ ActionMailsBj.j. $ intervalle de temps (pause entre les lettres) $ Filtre de sélection et action sinon ($ msg contient" that_to "\\ ou $ msg contient" still_tomet_to "\\ ou $ msg contient" may_number_to_to ") \\ et ($ syslogseverity-text \u003d\u003d" err "\\ ou $ syslogseverity-text \u003d\u003d" crit "\\\u003d \u003d\u003d" Syslogseverity-text \u003d\u003d "alerte" \\ ou $ syslogseverity-text \u003d\u003d "Emerg") \\ ALORS: ommAil :; mail_body

Pâturage

Pour diagnostiquer le travail SysLog aide parfaitement, un exemple de commande de surveillance:

~ # Tcpdump -vvvvvvvvvvvv -n -i udp port 514 interface

Et, bien sûr, / var / log / syslog elle-même.

1. Installez RSYSLOG et configurez-le pour recevoir des journaux.

Installation:

# Fournit une réception Syslog UDP $ Modload imudp $ UDPSERVERRUN 514 # Fournit TCP Syslog réception $ Modload IMTCP $ INPUTTCSERVERRUN 514 #Devices $ Template RemoteHost, "/ Var / Log / Périphériques /% Nom d'hôte% /% Nom de l'hôte% .Log" *. Remotehost.

et redémarrez RSYSLOG

apt-get installer rsyslog

ajouter au fichier /etc/rsyslog.conf Ajouter des lignes

journalisation 10/10/10

les journaux ont commencé le 10.10.10.10.10

3. Configurez les journaux d'envoi des serveurs Windows.

Log Shipping est effectué à l'aide de l'utilitaire Evtsys - EventLog to syslog utilitaire.
Sont en train de chercher. Se balancer. Déplacez les fichiers Evtsys.dll et Evtsys.exe en% Systemroot% \\ System32 (pour Windows 2008 R2 Path sera% Windir% \\ SysWow64). En exécutant la console avec les droits de l'administrateur, accédez au catalogue% Systemroot% \\ System32 (% Windir% \\ sswow64) et tapez:

net Démarrer Evtsys

pour Windows Server 2008 R2
Nous entrons dans le registre et modifient les succursales spécifiées pour le paramètre ImagePath:
Nom de la section: Hkey_local_machine \\ system \\ contrôlé002 \\ services \\ evtsys;
Nom de la section: Hkey_local_machine \\ system \\ contrôlé003 \\ services \\ Evtsys;
Paramètre: Imaginaire
Un type: Reg_expand_sz.
Valeur: % Windir% \\ syswow64 \\ evtsys.exe

4. Configuration de Logrotat.e.
Ajouter au fichier /etc/logrotate.conf ligne:

00 1 * * * Logrotate racine /etc/logrotate.conf

Félicitations, collectionneur de journaux centralisés configuré!

Cette section fournit des recommandations pour travailler avec des programmes de collecte de journaux. Ces informations sont requises par le service d'assistance technique pour des diagnostics précis du problème dans le lieu de travail de l'utilisateur. Les instructions suivantes sont disponibles pour les applications.

Journaux HTTPS à l'aide de Fiddlerercap

Installer Fiddlerercap

Vous devez télécharger et exécuter l'application.

Dans la fenêtre qui s'ouvre, cliquez sur le bouton "Installer". La ligne de dossier de destination sera répertoriée dans le dossier dans lequel Fiddlerercap sera installé. Par défaut, le bureau est indiqué là-bas.

Attendez l'installation et cliquez sur le bouton "Fermer".

Collection de journaux à l'aide de Fiddlerercap

Trouvez Fiddlerercap Dossier dans le répertoire sélectionné lors de la phase d'installation. Par défaut, Fiddlerercap est installé sur le bureau. Dans le dossier Fiddlerercap, exécutez le fichier "fiddlerercap.exe".

Dans l'élément "Paramètres de capture" pour installer trois chèques:

  • enregistrer des données binaires
  • trafic Decrypt HTTPS
  • stockez les cookies et la post-forme.

Si un avertissement est configuré pour installer un certificat, vous devez appuyer sur le bouton "Oui". Si nécessaire, le certificat sera invité à supprimer lors de l'enregistrement des journaux.

Fermez tous les navigateurs ouverts sur votre ordinateur. Appuyez sur le bouton "Démarrer capture". Ouvrir un programme lorsque vous travaillez avec une erreur apparaît (par exemple, contour. Expérience),et reproduire l'erreur.

Une fois que l'erreur est jouée, vous devez cliquer sur le bouton "STOP CAPTURE" de la fenêtre du programme FIDDLERCAP. La journalisation finira.

Sélectionnez le dossier à enregistrer.

Le fichier avec les journaux sera enregistré dans le dossier sélectionné.

Lors de l'enregistrement des journaux, une fenêtre apparaîtra avec la question de supprimer le certificat du stockage racine. À la discrétion de l'utilisateur, vous pouvez choisir n'importe quelle option.

Enregistrement du trafic réseau dans Internet Explorer

Pour écrire le trafic réseau dans Internet Explorer, vous devez ouvrir la page requise dans Internet Explorer. Dans Internet Explorer, accédez au menu "Service"\u003e Outils de développeur F12 ("Outils de développement F12") F12.

Si le menu "Service" n'est pas affiché, appuyez sur la touche "Alt" du clavier.

Allez à l'onglet "Réseau (réseau)"\u003e "Ctrl + 4". Inclure la collecte du trafic réseau: appuyez sur "Démarrer la collecte" dans Internet Explorer 9. Dans Internet Explorer 11 Appuyez sur le bouton avec elena Triangle.

Erreur de lecture (par exemple, page de mise à jour ou accédez au lien souhaité). Enregistrez le journal collecté en cliquant sur l'image de la disquette.

DANS recevez un dossier pour enregistrer, entrez le nom du fichier, cliquez sur"Sauvegarder". Le fichier sera créé dans un format XML. Créer un journal est terminé.

Enregistrer le trafic réseau dans Mozilla Firefox

Pour enregistrer le trafic réseau dans Mozilla Firefox, vous devez ouvrir la page requise à Mozilla Firefox. À imozilla firefox Aller au menu "Service"\u003e Menu de développement\u003e "Outils du développeur (Ctrl + Maj + i)soit pousser la clé du clavier F12.

Accédez à l'onglet "Réseau" et mettez à jour la page en cliquant sur sur la touche du clavier F5.. Erreur de lecture.

Mettez en surbrillance n'importe quelle entrée du journal - cliquez sur le bouton droit de la souris droit et cliquez sur "Enregistrer tout comme HUR".

Enregistrez le trafic réseau dans Google Chrome

Pour enregistrer le trafic réseau dans Google Chrome, vous devez ouvrir la page souhaitée dans Google Chrome. Google Chrome Aller au "Service"\u003e "Outils supplémentaires" Menu\u003e "Outils du développeur (Ctrl + Maj + i)soit pousser la clé du clavier F12.

Suivez le réseau et mettez à jour la page en cliquant sur la touche du clavier F5. Erreur de lecture.

Si l'entrée de journal a démarré automatiquement, cliquez sur le bouton "Enregistrer le journal du réseau".

Mettez en surbrillance n'importe quelle entrée de journal, cliquez sur le bouton droit de la souris droit et cliquez sur "Enregistrer sous le HAR avec le contenu".

Sélectionnez un dossier pour enregistrer, entrez le nom du fichier, cliquez sur Enregistrer. Le fichier sera enregistré au format HI.

Installation

Besoin de télécharger et exécuter l'application . L'offre de démarrage de l'installation doit être répondue dans l'affirmative en cliquant sur le bouton "Oui".


Dans la fenêtre qui s'ouvre, cliquez sur le bouton "Suivant".


Dans la fenêtre suivante, vous devez installer «J'accepte les termes du contrat de licence» et cliquez sur le bouton «Suivant».


Sélectionnez le type d'installation "typique".


Marquez l'élément "Créer un raccourci pour Microsoft Network Monitor sur le bureau" (Créez un raccourci sur le bureau) et cliquez sur le bouton "Installer".

Appuyez sur le bouton "Terminer" pour terminer l'installation.


Une fois l'installation terminée, il est nécessaire d'attendre la fin de la configuration automatique du composant d'analgésiques Microsoft Network Monitior 3.4.


Lancement de la journalisation

Fermer le logiciel inutilisé (il est nécessaire d'éliminer la conservation de l'activité tierce dans le journal). Exécutez le programme à l'aide d'un raccourci sur le bureau.

Dans la fenêtre du programme principal, sélectionnez le menu "Fichier"\u003e "Nouveau"\u003e "Capture".

Appuyez sur la touche "Démarrer", après quoi vous minimisez le programme et reproduisez l'erreur.

Jouez l'erreur, cliquez sur le bouton "Stop".


DANS obtenir le menu "Fichier"> "Enregistrer sous", spécifiez le répertoire pour enregistrer le fichier et cliquer sur le bouton "Enregistrer".Créer un journal est terminé.

Moniteur de processus

Pour commencer la journalisation à l'aide du programme de suivi du moniteur, les étapes suivantes doivent être effectuées:

Fermer le logiciel inutilisé (il est nécessaire d'éliminer la conservation de l'activité tierce dans le journal), Skump et exécuter l'application .

Après avoir démarré le programme, sélectionnez le menu "Fichier"\u003e "Événements de capture". La journalisation sera arrêtée. Sélectionnez "Modifier"\u003e Menu "Effacer l'affichage". Le journal enregistré automatiquement sera supprimé. Le programme est prêt à travailler.

Sélectionnez le menu "Fichier"\u003e "Événements de capture". La journalisation sera lancée. Réduire l'application et reproduire l'erreur.

Récupérez l'application et sélectionnez le menu «Fichier»\u003e «Événements de capture». La journalisation sera arrêtée. Sélectionnez le menu "Fichier"\u003e "Enregistrer". Installez le commutateur «Tous les événements».

Cliquez sur le bouton avec trois points à droite du champ "Chemin", spécifiez le dossier pour enregistrer et le nom du fichier (il est recommandé de quitter la valeur par défaut) et de cliquer sur le bouton "Enregistrer".

Dans la fenêtre Options de sauvegarde de fichiers, cliquez sur le bouton Enregistrer. Créer un journal est terminé.

À Badoo, plusieurs dizaines de démons "auto-écrites". La plupart d'entre eux sont écrits sur C, sont restés l'un sur C ++ et cinq ou six sur Go. Ils travaillent approximativement sur des centaines de serveurs dans quatre centres de données.

Dans Badoo, les tests de performance et la détection de problèmes de démons se situent sur les épaules du service de surveillance. Les collègues avec zabbix et les scripts sont vérifiés si le service est en cours d'exécution, qu'il soit responsable des demandes et suivez également les versions. De plus, le département analyse les statistiques de démons et de scripts travaillant avec eux, pour les anomalies, les sauts tranchants, etc.

Cependant, jusqu'à récemment, nous n'avions pas une pièce très importante - collecte et analyse des journaux que chaque démon écrit localement dans des fichiers sur le serveur. Souvent, ce sont ces informations qui contribuent à la première étape pour attraper le problème ou le postfactum pour comprendre les raisons du refus.

Sélection d'outils

Dès le début, les systèmes de nuages \u200b\u200bdès le début, parce que À Badoo, il est de coutume de ne pas donner ses données à l'extérieur, si possible. Après avoir analysé les outils populaires, nous sommes arrivés à la conclusion que, très probablement, nous allons convenir à l'un des trois systèmes:

Splunk.

Tout d'abord, nous avons essayé Splunk. Splunk est un système clé en main, une solution fermée et payante, dont le coût dépend directement du trafic entrant dans le système. Nous l'utilisons déjà pour des données dans le service de facturation. Les collègues sont très contents.

Nous avons profité de leurs installations pour des tests et avons presque immédiatement fait face au fait que notre trafic a dépassé les limites disponibles et payées.

Une autre nuance était le fait que lors du test de certains employés se plaignait de la complexité et de la "non-atténité" de l'interface utilisateur. Les collègues de la facturation au cours de cette période ont déjà déprécié la communication avec Splunk et ils n'avaient aucun problème, mais ce fait devrait encore être noté, car Une belle interface sera d'une grande importance si nous voulons que notre système appréciait activement.

Selon la partie technique de Splunk, apparemment, nous sommes complètement satisfaits. Mais son coût, sa proximité et son interface inconfortable nous ont fait regarder plus loin.

Elk: Recherche élastique + LOGSTH + KIBANA


La liste suivante était Elk. Elk est probablement le système le plus populaire de collecte et d'analyse des grumes. Et je veux dire que ce n'est pas surprenant, parce que C'est gratuit, simple, flexible et puissant.

Elk se compose de trois composantes:

  • Recherche élastique. Le système de stockage et de recherche basé sur le "moteur" Lucene;
  • Ramstash. "Pipe" avec un tas de caractéristiques, à travers lesquelles les données (éventuellement traitées) tombent dans une recherche élastique;
  • Kibana. Interface Web pour la recherche et la visualisation des données de la recherche élastique.

Commencez à travailler avec Elk est très simple: téléchargez simplement les trois archives du site officiel, décompressez et exécutez plusieurs fichiers binaires. Cette simplicité a permis aux jours de tester le système et de comprendre à quel point il est convaincu pour nous.

Et en général, il est venu. Techniquement, nous pourrions mettre en œuvre tout ce dont nous avons besoin, si nécessaire, écrivez leurs décisions et les intégrer dans une infrastructure commune.

Malgré le fait que Elk nous a complètement satisfait, il y avait un troisième challenger.

Graymog 2.


En général, GrayLog 2 est très similaire à Elk: Open Code, facile à installer, utilise également une recherche élastique et la connexion à la braquage peut être utilisée. La principale différence est que Graymog 2 est un système, prêt à être utilisé et «aiguisé» spécifiquement pour la collecte de bûches. Avec sa volonté pour l'utilisateur final, elle est très rappelée par Splunk. Il existe une interface graphique pratique avec la possibilité de configurer les lignes directement dans le navigateur et la restriction d'accès et les notifications.

Mais nous avons conclu que WINK nous permettra de faire un système beaucoup plus flexible, configuré à nos besoins; permettra de développer, de modifier les composants. En tant que concepteur. Je n'ai pas aimé une partie - remplaça une autre. Ils ne voulaient pas payer pour Watcher - ont fait leur système. Si, dans Elk, toutes les pièces peuvent être facilement retirées et remplacées, dans Graymog 2, il y avait un sentiment que certaines parties devraient sortir avec la racine, et certaines ne fonctionnaient tout simplement pas.

Résolu. Nous ferons au wapiti.

Livraison de journaux

À la première étape, nous avons défini une exigence obligatoire que les journaux devraient et rentrons dans notre collecteur et restent sur le disque. Le système de logistique et d'analyse est bon, mais tout système donne un délai, peut échouer et rien ne remplacera ces capacités qui donnent des utilitaires unix standard tels que Grep, Awk, Trier, etc. Le programmeur devrait avoir la possibilité d'aller au serveur et de voir ses propres yeux ce qui se passe là-bas.

Nous pourrions livrer des journaux en LOGSTASH comme suit:

  • utilisez les utilitaires disponibles à partir du Set Elk (Logstash-Forwarder et maintenant Beats). Ils représentent un démon séparé qui regarde le fichier sur le disque et le remplit dans la braquage.
  • utilisez votre propre développement sous le nom de la LSD, que nous avons des journaux PHP. En fait, il s'agit également d'un démon séparé qui suit des fichiers avec des journaux dans le système de fichiers et les remplit quelque part. D'une part, dans le LSD, tous les problèmes qui peuvent survenir lors de la suppression d'un grand nombre de bûches d'un grand nombre de serveurs ont été pris en compte et résolus, mais le système est trop "aiguisé" en scripts PHP. Nous devrions le terminer;
  • parallèlement à l'enregistrement sur le disque de disque, connecte le standard Unix syslog pour le monde.

Malgré les lacunes de ce dernier, cette approche était très simple et nous avons décidé de l'essayer.

Architecture

Serveurs et RSYSLOGD.

En collaboration avec les administrateurs système, nous avons esquissé une architecture qui me semblait raisonnable: nous mettons un démon RSYSLOGD sur chaque serveur, une principale RSYSLOGD-Demon sur le site, une par une braquillage sur le site et une recherche élastique de grappe rapprochée de nous, à Moscou, c'est-à-dire. Dans le centre de données de Prague.

En images, l'un des serveurs a regardé quelque chose comme ceci:

Parce que À Badoo, quelque chose est utilisé par Docker, nous avons prévu de bloquer la prise / Dev / Log à l'intérieur du conteneur avec des outils intégrés.

Le schéma final était approximativement comme suit:


Le schéma inventé par schéma semblait suffisamment suffisamment résistant à la perte de données: chacune des démons RSYSLOGD, s'il est impossible de transmettre des messages plus loin, sauvegardez-les sur le disque et envoyez-les lorsqu'il s'agit de «plus loin» gagnant.

La seule perte de données était possible si elle ne fonctionnait pas le tout premier démon RSYSLOG. Mais nous n'avons pas commencé à ce moment-là pour payer trop d'attention à ce problème. Néanmoins, les journaux ne sont pas des informations si importantes pour passer beaucoup de temps dès le début.

Format journal de journal et connecteurs


LOGSTHY est un tuyau pour les données dans lesquelles des lignes sont envoyées. À l'intérieur, ils sont comme suit et vont à la recherche élastique sous la forme de champs et de balises prêts à indexer.

Presque tous nos services sont construits à l'aide de la propre bibliothèque de LibanGel, ce qui signifie que le format des journaux qu'ils ont identiques et ressemblent à ceci:

04 04: 00: 14.609331 <16367> Storage_File.c: 1212 Stockage ___ update_dump_data (): Démarrage de démarrage (fileté, mise à jour)

Le format consiste en une partie commune inchangée et la partie que le programmateur se spécifie lorsqu'il provoque une des fonctions de connexion.

En général, nous voyons la date, le temps avec microsecondes, la couche de journal, l'étiquette, le PID, le nom du fichier et le numéro de ligne dans la source, le nom de la fonction. Les choses les plus ordinaires.

Syslog ajoute des informations à partir de votre part: Time, PID, Server de nom d'hôte et la soi-disant Ident. Habituellement, ce n'est que le nom du programme, mais vous pouvez passer n'importe quoi.

Nous avons été normalisés et transfèrent le nom, le nom secondaire et la version du démon. Par exemple meetMaker-ru.mlan-1.0.0. Ainsi, nous pouvons distinguer les grumes de différents démons, de différents types d'un démon (par exemple, d'un pays, d'une réplique) et d'avoir des informations sur la version exécutive du démon.

L'analyse d'un tel message est assez simple. Je ne donnerai pas de morceaux du fichier de configuration dans l'article, mais tout se présente avec une "rafale" progressive et séparant une partie d'une chaîne utilisant des expressions classiques régulières.

Si une étape analysée était infructueuse, nous ajoutons une balise spéciale au message, qui vous permet à l'avenir de trouver de tels messages et de surveiller leur numéro.

Mentionner sur l'analyse du temps. Nous avons essayé de prendre en compte différentes options, et le temps de message par défaut sera l'heure du message LIBANVEL, c'est-à-dire En substance, lorsque ce message a été généré. Si pour une raison quelconque, il n'a pas été trouvé pour une raison quelconque, nous allons prendre du temps de Syslog, c'est-à-dire Temps où le message est allé au premier démon de Syslog local. Si, pour une raison quelconque et cette fois n'est pas disponible, le temps de message sera l'heure de la réception de ce message dans LOGSTAXH.

Les champs résultants vont à la recherche élastique de l'indexation.


Elasticsearch.

La recherche élastique prend en charge le travail en mode Cluster lorsque plusieurs nœuds sont combinés en un réseau et travaillent ensemble. En raison du fait que vous pouvez configurer la réplication à un autre nœud pour chacun des indices, le cluster conserve des performances en cas de défaillance de certains nœuds.

Le nombre minimum de nœuds dans le cluster tolérant à défaut est trois, le premier nombre impair qui est plus d'un. Cela est dû au fait que pour le fonctionnement des algorithmes internes, il est nécessaire que la majorité du cluster puisse être distinguée lors de la partition du cluster. Un nombre pair de nœuds ne convient pas à cela.

Nous avons alloué trois serveurs pour le cluster de recherche élastique et nous l'avons mis de manière à ce que chaque index ait une réplique, comme dans le diagramme.


Dans une telle architecture, l'échec de l'un des nœuds de cluster n'est pas fatane et ne conduit pas à l'indisponibilité du groupe.

En plus de la tolérance aux pannes, avec un tel schéma, il est pratique de mettre à jour la recherche élastique elle-même: vous arrêtez l'un des nœuds, nous la mettons à jour, exécutons, mettez à jour l'autre.

Le fait que nous stockions dans la recherche élastique soit les journaux, nous permet de partager facilement toutes les données sur index par jour. Une telle partition donne plusieurs avantages:

  • si les serveurs terminent l'espace disque, il est très facile de supprimer les anciennes données. Il s'agit d'une opération rapide, et de plus, pour éliminer les anciennes données, il existe un autonomie à outils prêt à l'emploi;
  • pendant la recherche dans l'intervalle pendant plus d'un jour, la recherche peut être effectuée en parallèle. De plus, cela peut être fait en parallèle à la fois sur un serveur et pour plusieurs.

Comme déjà mentionné, nous avons configuré le curateur pour supprimer automatiquement les anciens index lorsque l'espace disque manque.

Dans la configuration de recherche élastique, de nombreuses subtilités associées à la fois à Java et simplement avec le fait que Lucene est utilisé à l'intérieur. Mais toutes ces subtilités sont également décrites dans la documentation officielle et dans de nombreux articles, donc je ne ferai pas approfondir. Il suffit de mentionner brièvement que sur le serveur de recherche élastique, vous n'avez pas à oublier d'allouer de la mémoire sous Java Heap et à l'extérieur du tas (il utilisera Lucene), ainsi que pour enregistrer des "mappages" spécifiquement pour vos champs dans les index pour accélérer le travail. et réduire la consommation de lieu sur le disque.

Kibana.

Il n'y a rien à dire du tout :-) mettre et courir. Heureusement, dans la dernière version, les développeurs ont ajouté la possibilité de modifier le fuseau horaire dans les paramètres. Auparavant, par défaut, le fuseau horaire local de l'utilisateur a été pris, ce qui est très inconfortable, car Nous avons partout et toujours UTC sur des serveurs et nous avons utilisé exactement dessus.

Système de notification

Une partie très importante du système logistique et l'une des exigences de base était la présence d'un système de notification. Systèmes qui, basés sur des règles ou des filtres, enverraient des lettres en informant les règles en référence à la page où vous pouvez voir les détails.

Dans le monde du wapiti, il y avait deux produits finis similaires:

  • Surveillant de l'élastic lui-même;

Watcher est un produit fermé de l'élastique, nécessitant un abonnement actif. Elastalert - produit open source écrit sur python. Observateur Nous allons presque immédiatement pour la même raison qu'avant - la proximité et la complexité de l'expansion et de l'adaptation sous nous. Elastalert Les mêmes tests se sont montrés un produit de classe, mais il en était plusieurs minus. Cependant, pas très critique):

  • il est écrit en python. Nous aimons Python comme une langue pour écrire des scripts «genou» rapides, mais ne veulent pas vraiment le voir sur la production en tant que produit final;
  • la possibilité de créer des lettres que le système envoie en réponse à un événement est complètement rudimentaire. Et la beauté et la commodité de la lettre sont très importantes si nous voulons que les autres aient le désir d'utiliser le système.

Après avoir joué avec Elastalert et avoir étudié son code source, nous avons décidé d'écrire un produit sur PHP par le département de la plate-forme. En conséquence, Denis Krask Battlecat a écrit un produit "aiguisé" pendant 2 semaines: il est intégré à la backOffice et n'a que la fonctionnalité nécessaire.



Pour chaque règle, le système crée automatiquement un tableau de bord de base à Kibana, le lien vers lequel sera dans la lettre. Si vous cliquez sur le lien, vous verrez des messages et de la planification exactement pour le laps de temps spécifié dans la notification.



"Râteau"

À ce stade, la première version du système était prête, travaillée et pouvait être utilisée. Mais, comme nous l'avons promis, "Rake" ne s'est pas fait attendre.

Problème 1 (Syslog + Docker)

Le moyen standard de communiquer entre SysLog-Demon et le programme est un socket Unix / dev / log. Comme mentionné ci-dessus, nous l'avons vaincu dans le conteneur avec des outils de docker standard. Ce groupe a parfaitement travaillé jusqu'à ce que nous devions surcharger un syslog-démon.

Apparemment, si un fichier spécifique est donné, pas le répertoire, alors lors de la suppression ou de la ré-création d'un fichier sur le système hôte, il ne sera pas disponible dans le conteneur. Il s'avère que tout redémarrage du Syslog-Demon conduit à arrêter le remplissage des journaux des conteneurs Docker.

Si vous faites le bon répertoire d'état, alors à l'intérieur sans problèmes peut être une prise UNIX, et le redémarrage du démon ne brisera rien. Mais ensuite, il est compliqué en mettant en place toute cette richesse, car libc attend la prise dans / dev / log.

La deuxième option que nous avons visionnée consiste à utiliser UDP ou TCP pour envoyer des journaux à l'extérieur. Mais voici le même problème que dans le cas précédent: libc ne peut écrire que dans / dev / log. Nous devrions écrire votre client Syslog et, à ce stade, je ne voulais pas faire cela.

En fin de compte, nous avons décidé d'exécuter un syslog-démon dans chaque conteneur et continuez à écrire dans / dev / log Standard Libc OpenLog () / Syslog ().

Ce n'était pas un gros problème, parce que Nos administrateurs système sont toujours dans chaque conteneur utilisent un système init et ne fonctionnent pas un seul démon.

Problème 2 (blocage de syslog)

Sur le groupe Devel, nous avons remarqué que l'un des démons gèle périodiquement. En allumant le chien de garde intérieure du démon, nous avons reçu plusieurs backtrons, ce qui a montré que le démon gèle dans Syslog () -\u003e écrire ().

WatchDog \u003d\u003d\u003d\u003d Tag: IPC_SNAPSHOT_SYNC_STATE Démarrer: 3991952 SEC 50629335 NSEC NOW: 3991953 SEC 50661797 NSEC Backtrage: /LIB64/LIBC.SO.6(__SEND+0X79) /LIB64/LIBC.SO.6(__VSYSLOG_CHK + 0x3BA) / LIB64 /LIBC.SO.6(SYSLOG + 0X8F) /Local/meetMaker/bin/meetMaker-3.1.0_2782 | Shard1: Exécution (zlog1 + 0x225) /Local/meetmaker/bin/meetmaker-3.1.0_2782 | Shard1: exécution /local/meetmaker/bin/meetmaker-3.1.0_2782 | Shard1: Exécution (stockage_save_sync_done + 0x68) /Local/meetmaker/bin/meetmaker-3.1.0_2782 | Shard1: exécution (ipc_game_loop + 0x7f9) /Local/meetmaker/bin/meetmaker-3.1.0_2782 | Shard1: Exécution (jeu + 0x25b) /Local/meetMaker/bin/meetmaker-3.1.0_2782 | Shard1: exécution (service_late_init + 0x193) /Local/meetmaker/bin/meetmaker-3.1.0_2782 | Shard1: Exécution (Main + 0x40a) /Lib64/LIBC.SO.6(__LIBC_START_MAIN+0XF5) /Local/meetMaker/bin/meetmaker-3.1.0_2782 | Shard1: En cours d'exécution \u003d\u003d\u003d\u003d Watchdog \u003d\u003d\u003d\u003d

Après avoir téléchargé le code source de Libc rapidement et en examinant la réalisation du client SysLog, nous avons réalisé que la fonction syslog () est synchrone et que tout retard sur le côté RSSLOG affectera les démons.

Quelque chose que vous aviez besoin de faire, et plus tôt le mieux. Mais nous n'avons pas eu le temps ...

Après quelques jours, nous avons marché sur le rake le plus désagréable des architectures modernes - une défaillance en cascade.

Le RSSLOG par défaut est configuré de sorte que si la file d'attente interne pour une raison quelconque est remplie, elle commence à "TROPTLE" (FRINTLETTLE), c'est-à-dire Frein "Ecrivez-vous à vous-même" nouveaux messages.

Nous l'avons pour que l'un des serveurs de test ait commencé à envoyer un grand nombre de messages au journal d'un programmeur. LOGSTASH n'a pas fait face à un tel flux, la principale file d'attente RSYSLOG débordée et il soustrait très lentement les messages d'autres russlog. Pour cette raison, la file d'attente d'autres rsyslog a également débordé et ils ont très lentement soustraire des messages de démons.

Et les démons comme je l'ai dit ci-dessus sont écrits dans / dev / logement de manière synchrone et sans aucun délai.
Le résultat est prévisible: en raison d'un test de test flottant, tous les démons qui écrivent dans Syslog ont commencé à ralentir dans Syslog au moins avec une fréquence significative.

Une autre erreur était que nous n'avions pas dit du problème potentiel aux administrateurs système et de découvrir la cause et la désactivation RSYSLOG, a pris plus d'une heure.

J'ai une faiblesse - j'aime différents systèmes de surveillance. C'est-à-dire que la situation est idéale pour moi lorsque vous pouvez voir l'état de chaque composant système à tout moment. En temps réel, tout est plus ou moins clair: vous pouvez agréger les données et les prendre à un beau tableau de bord. Il est plus difficile de traiter ce qui était dans le passé lorsque vous devez connaître différents événements à un certain point et les attacher ensemble.

La tâche n'est pas vraiment aussi triviale. Premièrement, vous devez regrouper des grumes de systèmes complètement différents qui n'ont souvent rien à voir avec eux-mêmes. Deuxièmement, vous devez les attacher à une échelle de temps afin que les événements puissent être corrélés les uns avec les autres. Et troisièmement, vous devez stocker et rechercher efficacement cet énorme tableau de données. Cependant, comme cela se produit généralement, la partie complexe a déjà pris soin de nous. J'essaie plusieurs options différentes et je ferai donc un mini-aperçu de ce qui a déjà réussi à travailler avec.

Services en ligne

L'option la plus facile qui a bien fonctionné pour moi est d'utiliser le service de cloud. Ces outils se développent activement, apportent un soutien à un nombre croissant de piles technologiques et sont ajustées par les spécificités de l'IAA / paass individuel comme AWS et Heroku.

Splunk.

À propos de ce service a écrit dans la colonne et moi-même et récemment Alexey SintSov. De manière générale, ce n'est pas simplement un agrégateur de log, mais un système d'analyse puissant avec une histoire pluriannuelle. Par conséquent, la tâche de collecter des journaux et de les agréger pour une transformation et une recherche ultérieures - pour lui une blanchure à blanc. Il existe plus de 400 applications différentes, dont plus de cent dans la zone de gestion des opérations informatiques, qui vous permettent de collecter des informations à partir de vos serveurs et d'applications.

loggly.

Ce service est déjà spécifiquement affûté pour analyser des magazines et vous permet d'agréger tous les types de journaux de texte. Ruby, Java, Python, C / C ++, JavaScript, PHP, Apache, Tomcat, MySQL, Syslog-NG, RSYSLOG, NXLOG, Snare, Routeurs et Svitchi - Peu importe. Vous pouvez collecter jusqu'à 200 Mo gratuitement par jour (ce qui est beaucoup) et le tarif payé le plus proche commence de 49 $. Ça marche très cool.

Excellent service qui agréger les applications, les journaux de texte, Syslog, etc. Ce qui est intéressant est: avec des données agrégées, vous pouvez travailler via un navigateur, une ligne de commande ou une API. La recherche est effectuée par des requêtes simples comme "3h d'hier" (obtenir des données de tous les systèmes à trois heures hier). Tous les événements associés seront regroupés. Pour toute condition, vous pouvez faire une alerte pour obtenir des avertissements à temps (Paramètres dans les configuration a changé). Vous pouvez utiliser S3 pour stocker des journaux. Au cours du premier mois, donnez 5 Go de bonus, puis seulement 100 Mo par mois est disponible gratuitement.


Un autre bon service pour la collecte de données vous permettant de collecter les gigaoctets de journaux par mois gratuitement. Et les capacités sont toutes identiques: une recherche puissante, une queue en temps réel (tout ce qui "arrive" des journaux à l'heure actuelle), le stockage des données dans AWS, le PAA, la surveillance de l'IAAS et les cadres populaires, les langues. Sur un tarif libre, vous pouvez stocker des données pendant sept jours.


NewRelic.

Oui, ce service n'est pas complètement pour collecter des journaux. Mais s'il y a une question sur la surveillance de la performance des serveurs et des applications, c'est l'une des meilleures options. De plus, dans la plupart des cas, cela peut fonctionner avec elle gratuitement que nous avons longtemps et apprécié dans le comité de rédaction pour surveiller l'état des applications et du serveur.

Tout déployer

Mes expériences avec des services en ligne ont pris fin lorsque les données sont devenues tellement que des montants à trois chiffres devraient payer pour leur agrégation. Cependant, il s'est avéré qu'il est possible de déployer une solution similaire. Il y a deux options principales.

ramstash

Il s'agit d'un système ouvert de collecte d'événements et de journaux qui se sont bien prouvés dans la communauté. Développez bien, bien sûr, est facile - mais ce n'est déjà pas un service prêt dans la boîte. Par conséquent, soyez prêt pour les insectes dans la documentation, les problèmes de modules et similaires. Mais avec sa tâche, LOGSTHESH COPES: Les journaux sont collectés et la recherche est effectuée via l'interface Web.

Fluent.

Si vous choisissez la solution autonome, alors fluentd j'ai aimé plus. Contrairement à la bourse, qui est écrit en Jruby et nécessite donc JVM (que je n'aime pas), il est mis en œuvre sur des domaines coquillés et critiques sont écrits sur C. Le système s'ouvre à nouveau et vous permet de collecter de grandes journaux de journaux en utilisant plus de 1 500. différents plugins. Il est bien documenté et remarquable. La version actuelle du journal de bord est déployée sur fluentd.

Montrer cet article à des amis.

Avez-vous aimé l'article? Partager avec des amis: