ホームページ  >  記事  >  バックエンド開発  >  php Elasticsearch を使用してリアルタイム監視システムを構築するためのベスト プラクティス

php Elasticsearch を使用してリアルタイム監視システムを構築するためのベスト プラクティス

王林
王林オリジナル
2023-09-13 08:34:471159ブラウズ

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

php Elasticsearch を使用してリアルタイム監視システムを構築するためのベスト プラクティス (コード例を含む)

はじめに:
リアルタイム監視システムはますます普及しています。今日の情報化時代において、それはますます重要になります。これは、アプリケーションやネットワーク サービスのパフォーマンス、健全性、ログ、その他の情報を追跡および監視するのに役立ちます。 php Elasticsearch は強力な検索エンジンとして、リアルタイム監視システムの構築に使用できます。この記事では、php Elasticsearch を使用してリアルタイム監視システムを構築する方法のベスト プラクティスを紹介し、対応するコード例を示します。

1. Elasticsearch と PHP Elasticsearch クライアント ライブラリをインストールする
まず、Elasticsearch と PHP Elasticsearch クライアント ライブラリをインストールする必要があります。次のコマンドを使用してインストールできます:

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

PHP Elasticsearch クライアント ライブラリをインストールすると、Composer を通じて依存関係を管理できます。次の内容を含む composer.json ファイルをプロジェクト ルート ディレクトリに作成します:

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

次に、次のコマンドを実行してライブラリをインストールします:

composer install

2. Elasticsearch を作成します。インデックスとマッピング
リアルタイム監視システムを構築する前に、Elasticsearch のインデックスとマッピングを作成する必要があります。ここではWebサイトのアクセスログを例に説明します。各ログ エントリには、IP アドレス、タイムスタンプ、HTTP 要求メソッド、HTTP 要求パス、および応答時間のフィールドが含まれていると想定されます。

PHP Elasticsearch クライアント ライブラリを使用してインデックスとマッピングを作成します。サンプル コードは次のとおりです:

<?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. ログ データを Elasticsearch に記録します
インデックスとマッピングを作成した後、ログを記録する必要があります データは Elasticsearch にログインされます。 PHP スクリプトを作成してログ ファイルを読み取り、各ログ データを Elasticsearch に挿入できます。

サンプル コードは次のとおりです:

<?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. ログ データのクエリと分析
リアルタイム監視システムでは、通常、さまざまな条件に基づいてログ データのクエリと分析を行う必要があります。 。 Elasticsearch のクエリ API を使用して、この機能を実現できます。

サンプル コードは次のとおりです。

<?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);

// 处理查询结果
?>

上記のサンプル コードでは、範囲クエリを使用して応答時間が 1 秒以上のログ エントリを検索し、合計応答時間を計算します。そして平均応答時間。

結論:
この記事では、php Elasticsearch を使用してリアルタイム監視システムを構築するためのベスト プラクティスを紹介し、対応するコード例を示します。上記の手順に従って Elasticsearch と PHP Elasticsearch クライアント ライブラリをインストールし、インデックスとマッピングを作成することで、Elasticsearch へのログ データの記録、データのクエリと分析が可能となり、シンプルで完全な機能を備えたリアルタイム監視システムを実現できます。この記事が、リアルタイム監視システムの構築において読者に役立つガイダンスと支援を提供できれば幸いです。

以上がphp Elasticsearch を使用してリアルタイム監視システムを構築するためのベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。