PHP implémente la plateforme open source d'analyse des journaux ELK

WBOY
Libérer: 2023-06-18 21:24:01
original
2145 Les gens l'ont consulté

Avec le développement continu d'Internet et des technologies de l'information, l'analyse des journaux est devenue un élément indispensable des processus d'entreprise, de sécurité des réseaux et d'optimisation des systèmes. Dans le passé, les méthodes d'analyse des journaux reposaient principalement sur la lecture, le filtrage et l'analyse manuels, ce qui était difficile pour de grandes quantités de données. L'émergence de plates-formes d'analyse de journaux peut traiter les données de journaux de manière efficace et précise, augmentant ainsi la valeur des données. Cet article présentera une plateforme d'analyse de journaux ELK open source implémentée à l'aide de PHP.

1. Introduction à ELK

ELK est l'abréviation de trois logiciels open source : Elasticsearch, Logstash et Kibana. Elasticsearch est un moteur de recherche basé sur Lucene qui peut traiter de grandes quantités de données et interroger rapidement ; Logstash est un outil de collecte et de traitement de journaux open source qui peut collecter, analyser, filtrer et transformer une variété de journaux. Kibana est un outil de traitement de données. Visual ; et des outils interactifs capables de générer rapidement divers graphiques et tableaux de bord.

ELK présente les caractéristiques d'une utilisation simple, de performances efficaces, d'une forte évolutivité, etc., et prend en charge plusieurs sources de données. Il peut aider les entreprises à créer rapidement une puissante plate-forme d'analyse des journaux pour surveiller l'état de fonctionnement des systèmes et des applications.

2. PHP implémente ELK

Dans le processus d'utilisation d'ELK, nous utilisons généralement Logstash pour collecter, analyser et transformer les journaux, puis stocker les données dans Elasticsearch, à l'aide de Kibana pour l'affichage visuel. En tant que langage de script côté serveur populaire, PHP peut également collecter et stocker des journaux à l'aide des bibliothèques Logstash et Elasticsearch.

1. Installer Logstash

L'installation de Logstash est très simple Nous pouvons sélectionner la version correspondante via la page de téléchargement du site officiel, puis la décompresser dans la version spécifiée. annuaire. Par exemple, nous pouvons l'installer dans un système Linux via la commande suivante :

curl -L -O https://download.elastic.co/logstash/logstash/logstash-5.5.2.tar.gz
tar -zxvf logstash-5.5.2.tar.gz
cd logstash-5.5.2/bin/
./logstash -e 'input { stdin { } } output { stdout {} }'
Copier après la connexion

Après avoir exécuté la commande ci-dessus, nous pouvons tester si Logstash est installé avec succès via l'entrée standard. Bien entendu, afin de mieux introduire l'utilisation de PHP pour collecter les journaux, nous devons également installer des bibliothèques associées.

2. Installez la bibliothèque Elasticsearch

Nous utilisons Composer pour gérer les dépendances de la bibliothèque PHP. Après avoir installé Logstash, nous pouvons utiliser la commande suivante pour installer la bibliothèque dépendante d'Elasticsearch :

composer require elasticsearch/elasticsearch
Copier après la connexion

3 Configurer Logstash

Avant d'utiliser Logstash pour la collecte de journaux, nous devons également configurer. Paramètres liés à Logstash. Tout d’abord, nous devons définir l’entrée de Logstash. Dans la configuration d'entrée, nous pouvons utiliser des plug-ins très utiles, tels que :

  • file : utilisé pour lire les logs dans les fichiers
  • udp, tcp : Utilisé pour lire les logs des protocoles UDP et TCP
  • syslog : utilisé pour lire les logs Syslog du système
  • beats : peut recevoir directement les logs du protocole Beats
  • # 🎜🎜#
Ici, nous utilisons le plug-in de fichiers pour lire les fichiers journaux sur le serveur, les analyser et les traiter. Par exemple :

input {
  file {
    path => "/var/log/apache2/access.log"
    type => "apache_access"
  }
}
Copier après la connexion

Ensuite, nous devons configurer le filtrage Logstash. Le filtrage peut analyser et traiter les journaux, comme l'extraction de champs spécifiques, l'analyse des adresses IP ou des adresses URL, etc. Ce qui suit est un filtre simple :

filter {
  if [type] == "apache_access" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }

    date {
      match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
    }
  }
}
Copier après la connexion

Ensuite, nous pouvons définir la sortie Logstash. La sortie peut envoyer les données traitées vers Elasticsearch ou d'autres supports de stockage de données, tels que des bases de données, des fichiers, etc. Voici une configuration de sortie :

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    user => "elastic"
    password => "changeme"
  }
}
Copier après la connexion

4. Utilisez PHP pour collecter les journaux

Après la configuration ci-dessus, nous pouvons utiliser PHP pour collecter les journaux. Ce qui suit est un simple script PHP qui peut s'exécuter sous Linux ou d'autres environnements de type UNIX :

<?php

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

$client = ClientBuilder::create()->build();

$log_path = '/var/log/apache2/access.log';
$log_index = 'apache_access';

if(!file_exists($log_path)) {
  echo "Log file '{$log_path}' not exists.";
  exit;
}

$file_size = filesize($log_path);
if($file_size == 0) {
  exit;
}

$lines = file($log_path);
if(empty($lines)) {
  exit;
}

foreach($lines as $line) {
  $log = [];
  $log['@timestamp'] = date('c');
  $log['message'] = $line;
  $log['type'] = $log_index;

  $params = [
    'body' => $log,
    'index' => 'logs',
    'type' => $log_index
  ];

  $response = $client->index($params);
}
Copier après la connexion
Dans le code ci-dessus, nous utilisons d'abord la bibliothèque client Elasticsearch pour créer une instance client. Ensuite, nous définissons une variable $log_path pour spécifier le chemin du fichier journal à lire. Ensuite, nous utilisons la fonction file_exists() pour déterminer si le fichier existe, la fonction filesize() pour obtenir la taille du fichier et la fonction file() pour lire le contenu du fichier.

Dans la boucle foreach, nous parcourons chaque ligne du fichier et stockons le format de chaque ligne de journal dans le tableau $log. Ici, nous stockons également le type de journal et l'horodatage actuel dans le tableau $log. Enfin, nous envoyons le tableau $log à Elasticsearch à l'aide de la méthode index() d'Elasticsearch.

3. Résumé

Grâce à l'introduction ci-dessus, nous pouvons voir le flux de travail de la plateforme d'analyse des journaux ELK. En utilisant Logstash pour collecter, analyser et transformer les journaux, puis en stockant les données dans Elasticsearch, et en utilisant Kibana pour visualiser et afficher les données de manière interactive, nous pouvons nous aider à analyser les données des journaux rapidement et efficacement. Dans le même temps, PHP, en tant que langage de script côté serveur populaire, peut également utiliser les bibliothèques Logstash et Elasticsearch pour la collecte et le stockage des journaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal