Administrateur Linux - Gestion des journaux

systemd a changé la façon dont la journalisation du système est gérée pour CentOS Linux. Au lieu que chaque démon du système place les journaux dans des emplacements individuels plutôt que d'utiliser des outils tels que tail ou grep comme principal moyen de trier et de filtrer les entrées de journal,journald a apporté un point d'administration unique pour l'analyse des journaux système.

Les principaux composants de la journalisation systemd sont: journal, jounralctl et journald.conf

journald est le démon de journalisation principal et est configuré en éditant journald.conf tandis que journalctl est utilisé pour analyser les événements journalisés par journald .

Les événements enregistrés par journald incluent: les événements du noyau, les processus utilisateur et les services démons.

Définir le fuseau horaire correct du système

Avant d'utiliser journalctl , nous devons nous assurer que l'heure de notre système est réglée sur l'heure correcte. Pour ce faire, nous voulons utiliser timedatectl .

Vérifions l'heure actuelle du système.

[[email protected] rdc]# timedatectl status 
Local time: Mon 2017-03-20 00:14:49 MDT 
Universal time: Mon 2017-03-20 06:14:49 UTC 
RTC time: Mon 2017-03-20 06:14:49 
Time zone: America/Denver (MDT, -0600) 
NTP enabled: yes 
NTP synchronized: yes 
RTC in local TZ: no 
DST active: yes 
Last DST change: DST began at 
              Sun 2017-03-12 01:59:59 MST 
              Sun 2017-03-12 03:00:00 MDT 
Next DST change: DST ends (the clock jumps one hour backwards) at 
              Sun 2017-11-05 01:59:59 MDT 
              Sun 2017-11-05 01:00:00 MST
              
[[email protected] rdc]#

Actuellement, le système est adapté au fuseau horaire local. Si votre système ne l'est pas, définissons le fuseau horaire correct. Après avoir modifié les paramètres, CentOS calculera automatiquement le décalage du fuseau horaire à partir du fuseau horaire actuel, en ajustant immédiatement l'horloge système.

Listons tous les fuseaux horaires avec timedatectl -

[[email protected] rdc]# timedatectl list-timezones 
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau

C'est la sortie contestée de timedatectl list-timezones . Pour trouver un fuseau horaire local spécifique, la commande grep peut être utilisée -

[[email protected] rdc]# timedatectl list-timezones | grep -i "america/New_York" 
America/New_York
[[email protected] rdc]#

Le libellé utilisé par CentOS est généralement Pays / Région avec un trait de soulignement au lieu d'un espace (New_York contre "New York").

Maintenant, définissons notre fuseau horaire -

[[email protected] rdc]# timedatectl set-timezone "America/New_York"

[[email protected] rdc]# date 
Mon Mar 20 02:28:44 EDT 2017

[[email protected] rdc]#

L'horloge de votre système devrait ajuster automatiquement l'heure.

Utilisez journalctl pour analyser les journaux

Commutateurs de ligne de commande courants lors de l'utilisation de journalctl -

Commutateur action
-k Répertorie uniquement les messages du noyau
-u Listes par unité spécifique (httpd, sshd, etc ...)
-b Démarre le décalage d'étiquette
-o Enregistre le format de sortie
-p Filtres par type de journal (nom ou numéro)
-F Nom du champ ou valeur du nom du champ
--UTC Heure en décalage UTC
--depuis Filtrer par période

Examiner les journaux de démarrage

Tout d'abord, nous examinerons et configurerons les journaux de démarrage dans CentOS Linux. La première chose que vous remarquerez est que CentOS, par défaut, ne stocke pas la journalisation de démarrage qui est persistante lors des redémarrages.

Pour vérifier les journaux de démarrage par instance de redémarrage, nous pouvons émettre la commande suivante -

[[email protected] rdc]# journalctl --list-boots 
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
 0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT

[[email protected] rdc]#

Après avoir redémarré le système, nous pouvons voir une autre entrée.

[[email protected] rdc]# journalctl --list-boots 
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
 0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT
 
[[email protected] rdc]#

Maintenant, examinons la dernière instance de journalisation de démarrage -

[email protected] rdc]# journalctl -b -5 
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M 
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64 
([email protected]
Mar 19 22:01:57 localhost.localdomain kernel: Command line: 
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:

Ci-dessus se trouve la sortie condensée de notre dernier démarrage. Nous pourrions également nous référer à un journal de démarrage d'heures, de jours, de semaines, de mois et même d'années. Cependant, par défaut, CentOS ne stocke pas les journaux de démarrage persistants. Pour activer le stockage permanent des journaux de démarrage, nous devons apporter quelques modifications de configuration -

  • Créer des points de stockage centraux pour les journaux de démarrage
  • Accordez les autorisations appropriées à un nouveau dossier de journal
  • Configurer journald.conf pour la journalisation persistante

Configurer l'emplacement de démarrage pour les journaux de démarrage persistants

L'endroit initial où journald voudra stocker les journaux de démarrage persistants est / var / log / journal . Comme cela n'existe pas par défaut, créons-le -

[[email protected] rdc]# mkdir /var/log/journal

Maintenant, donnons au répertoire les autorisations appropriées pour accéder au démon journald -

systemd-tmpfiles --create --prefix /var/log/journal

Enfin, disons à journald qu'il doit stocker les journaux de démarrage persistants. Dans vim ou dans votre éditeur de texte préféré, ouvrez /etc/systemd/jounrald.conf " .

# See journald.conf(5) for details.  
[Journal]=Storage=peristent

La ligne qui nous intéresse est, Storage = . Supprimez d'abord le commentaire # , puis changez enStorage = persistentcomme illustré ci-dessus. Enregistrez et redémarrez votre système CentOS et assurez-vous qu'il doit y avoir plusieurs entrées lors de l'exécution de journalctl list-boots .

Note- Un identifiant de machine en constante évolution comme celui d'un fournisseur VPS peut entraîner l' échec de journald lors du stockage des journaux de démarrage persistants. Il existe de nombreuses solutions de contournement pour un tel scénario. Il est préférable de parcourir les correctifs actuels publiés sur les forums d'administration CentOS, plutôt que de suivre les conseils fiables de ceux qui ont trouvé des solutions de contournement VPS plausibles.

Pour examiner un journal de démarrage spécifique, nous devons simplement obtenir chaque décalage en utilisant journald --list-boots le décalage avec le commutateur -b . Donc, pour vérifier le deuxième journal de démarrage que nous utiliserions -

journalctl -b -2

La valeur par défaut pour -b sans décalage du journal de démarrage spécifié sera toujours le journal de démarrage actuel après le dernier redémarrage.

Analyser les journaux par type de journal

Les événements de journald sont numérotés et classés en 7 types distincts -

0 - emerg   :: System is unusable 
1 - alert   :: Action must be taken immediatly    
2 - crit    :: Action is advised to be taken immediatly 
3 - err     :: Error effecting functionality of application 
4 - warning :: Usually means a common issue that can affect security or usilbity 
5 - info    :: logged informtation for common operations 
6 - debug   :: usually disabled by default to troubleshoot functionality

Par conséquent, si nous voulons voir tous les avertissements, la commande suivante peut être émise via journalctl -

[[email protected] rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL  440BX    06040000 VMW  01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL  440BX    06040000 PTL  00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD  Custom   06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD  $SBFTBL$ 06040000  LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742
(v01 PTLTD  ? APIC   06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C
(v01 PTLTD  $PCITBL$ 06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG  06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges: 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA      [mem 0x000010000x00ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA32    [mem 0x010000000xffffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   Normal   empty 
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node 
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x000010000x0009dfff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x001000000x95edffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x95f000000x95ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on.  Total pages: 60 
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32 
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'

Le tableau ci-dessus montre tous les avertissements des 4 derniers jours sur le système.

La nouvelle façon de visualiser et de parcourir les journaux avec systemd nécessite peu de pratique et de recherche pour se familiariser avec. Cependant, avec différents formats de sortie et un avis particulier pour rendre tous les journaux de démons emballés universels, cela vaut la peine d'être adopté. journald offre une grande flexibilité et efficacité par rapport aux méthodes traditionnelles d'analyse des journaux.