Maison  >  Article  >  développement back-end  >  Meilleures pratiques pour créer des systèmes de surveillance en temps réel à l'aide de php Elasticsearch

Meilleures pratiques pour créer des systèmes de surveillance en temps réel à l'aide de php Elasticsearch

王林
王林original
2023-09-13 08:34:471200parcourir

使用php Elasticsearch构建实时监控系统的最佳实践

Meilleures pratiques pour créer un système de surveillance en temps réel à l'aide de php Elasticsearch, y compris des exemples de code

Introduction :
Les systèmes de surveillance en temps réel deviennent de plus en plus importants à l'ère de l'information d'aujourd'hui. Il nous aide à suivre et à surveiller les performances, la santé, les journaux et autres informations des applications ou des services réseau. php Elasticsearch, en tant que puissant moteur de recherche, peut être utilisé pour créer des systèmes de surveillance en temps réel. Cet article présentera les meilleures pratiques sur la façon d'utiliser php Elasticsearch pour créer un système de surveillance en temps réel et fournira des exemples de code correspondants.

1. Installer la bibliothèque client Elasticsearch et PHP Elasticsearch
Tout d'abord, nous devons installer la bibliothèque client Elasticsearch et PHP Elasticsearch. Il peut être installé via la commande suivante :

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz
tar -xvf elasticsearch-7.9.2-linux-x86_64.tar.gz
cd elasticsearch-7.9.2/bin
./elasticsearch

Installez la bibliothèque client PHP Elasticsearch et les dépendances peuvent être gérées via Composer. Créez un fichier composer.json dans le répertoire racine du projet avec le contenu suivant :

{
  "require": {
    "elasticsearch/elasticsearch": "^7.0"
  }
}

Ensuite, exécutez la commande suivante pour installer la bibliothèque :

composer install

2. Créez un index et un mappage Elasticsearch
Avant de construire un système de surveillance en temps réel, nous avons besoin pour créer un index et un mappage Elasticsearch. Dans cet exemple, nous prendrons comme exemple le journal d’accès d’un site Web. Il est supposé que chaque entrée de journal contient les champs suivants : adresse IP, horodatage, méthode de requête HTTP, chemin de requête HTTP et temps de réponse.

Utilisez la bibliothèque client PHP Elasticsearch pour créer des index et des mappages. L'exemple de code est le suivant :

<?php
require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'logs',
    'body' => [
        'mappings' => [
            'properties' => [
                'ip' => ['type' => 'ip'],
                'timestamp' => ['type' => 'date'],
                'request_method' => ['type' => 'keyword'],
                'request_path' => ['type' => 'keyword'],
                'response_time' => ['type' => 'float']
            ]
        ]
    ]
];

$response = $client->indices()->create($params);

if ($response['acknowledged']) {
    echo '索引和映射创建成功!';
} else {
    echo '索引和映射创建失败!';
}
?>

3. Enregistrez les données du journal dans Elasticsearch
Après avoir l'index et le mappage, nous devons enregistrer les données du journal dans Elasticsearch. Vous pouvez écrire un script PHP pour lire le fichier journal, puis insérer chaque élément de données du journal dans Elasticsearch.

L'exemple de code est le suivant :

<?php
require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$logFile = 'access.log';

$file = fopen($logFile, 'r');

while ($line = fgets($file)) {
    $logData = explode('|', $line);

    $params = [
        'index' => 'logs',
        'body' => [
            'ip' => $logData[0],
            'timestamp' => date('Y-m-d H:i:s', strtotime($logData[1])),
            'request_method' => $logData[2],
            'request_path' => $logData[3],
            'response_time' => floatval($logData[4])
        ]
    ];

    $response = $client->index($params);

    if ($response['result'] == 'created') {
        echo '日志数据插入成功!';
    } else {
        echo '日志数据插入失败!';
    }
}

fclose($file);
?>

4. Interroger et analyser les données des journaux
Dans les systèmes de surveillance en temps réel, nous devons généralement interroger et analyser les données des journaux en fonction de différentes conditions. Vous pouvez utiliser l'API de requête d'Elasticsearch pour obtenir cette fonctionnalité.

L'exemple de code est le suivant :

<?php
require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'logs',
    'body' => [
        'query' => [
            'bool' => [
                'filter' => [
                    'range' => [
                        'response_time' => ['gte' => 1000]
                    ]
                ]
            ]
        ],
        'aggs' => [
            'total_response_time' => [
                'sum' => ['field' => 'response_time']
            ],
            'avg_response_time' => [
                'avg' => ['field' => 'response_time']
            ]
        ]
    ]
];

$response = $client->search($params);

// 处理查询结果
?>

L'exemple de code ci-dessus utilise une requête de plage pour rechercher les entrées de journal avec un temps de réponse supérieur ou égal à 1 seconde, et calcule le temps de réponse total et le temps de réponse moyen.

Conclusion :
Cet article présente les meilleures pratiques pour créer un système de surveillance en temps réel à l'aide de php Elasticsearch et fournit des exemples de code correspondants. En suivant les étapes ci-dessus pour installer Elasticsearch et la bibliothèque client PHP Elasticsearch, et en créant des index et des mappages, vous pouvez enregistrer des données de journal sur Elasticsearch, interroger et analyser les données, réalisant ainsi un système de surveillance en temps réel simple et entièrement fonctionnel. J'espère que cet article pourra fournir des conseils et une assistance utiles aux lecteurs dans la création de systèmes de surveillance en temps réel.

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!

Déclaration:
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