Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Amalan terbaik untuk membina sistem pemantauan masa nyata menggunakan php Elasticsearch

Amalan terbaik untuk membina sistem pemantauan masa nyata menggunakan php Elasticsearch

王林
王林asal
2023-09-13 08:34:471207semak imbas

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

Amalan terbaik untuk membina sistem pemantauan masa nyata menggunakan php Elasticsearch, termasuk contoh kod

Pengenalan:
Sistem pemantauan masa nyata menjadi semakin penting dalam era maklumat hari ini. Ia membantu kami menjejak dan memantau prestasi, kesihatan, log dan maklumat lain aplikasi atau perkhidmatan rangkaian. php Elasticsearch, sebagai enjin carian yang berkuasa, boleh digunakan untuk membina sistem pemantauan masa nyata. Artikel ini akan memperkenalkan amalan terbaik tentang cara menggunakan php Elasticsearch untuk membina sistem pemantauan masa nyata dan menyediakan contoh kod yang sepadan.

1. Pasang pustaka pelanggan Elasticsearch dan PHP Elasticsearch
Mula-mula, kita perlu memasang pustaka pelanggan Elasticsearch dan PHP Elasticsearch. Ia boleh dipasang melalui arahan berikut:

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

Pasang perpustakaan klien PHP Elasticsearch, dan kebergantungan boleh diurus melalui Komposer. Buat fail composer.json dalam direktori akar projek dengan kandungan berikut:

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

Kemudian jalankan arahan berikut untuk memasang perpustakaan:

composer install

2. Buat indeks dan pemetaan Elasticsearch
Sebelum membina sistem pemantauan masa nyata, kita perlu untuk mencipta indeks dan pemetaan Elasticsearch. Dalam contoh ini, kami akan mengambil log akses tapak web sebagai contoh. Diandaikan bahawa setiap entri log mengandungi medan berikut: alamat IP, cap waktu, kaedah permintaan HTTP, laluan permintaan HTTP dan masa tindak balas.

Gunakan perpustakaan pelanggan Elasticsearch PHP untuk membuat indeks dan pemetaan Kod sampel adalah seperti berikut:

<?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 Rekod data log ke Elasticsearch
Selepas mempunyai indeks dan pemetaan, kami perlu merekodkan data log ke Elasticsearch. Anda boleh menulis skrip PHP untuk membaca fail log dan kemudian memasukkan setiap keping data log ke dalam Elasticsearch.

Kod sampel adalah seperti berikut:

<?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 Pertanyaan dan analisis data log
Dalam sistem pemantauan masa nyata, kami biasanya perlu membuat pertanyaan dan menganalisis data log berdasarkan keadaan yang berbeza. Anda boleh menggunakan API pertanyaan Elasticsearch untuk mencapai fungsi ini.

Kod sampel adalah seperti berikut:

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

// 处理查询结果
?>

Kod sampel di atas menggunakan pertanyaan julat untuk mencari entri log dengan masa respons lebih besar daripada atau sama dengan 1 saat, dan mengira jumlah masa respons dan purata masa tindak balas.

Kesimpulan:
Artikel ini memperkenalkan amalan terbaik untuk membina sistem pemantauan masa nyata menggunakan php Elasticsearch dan menyediakan contoh kod yang sepadan. Dengan mengikut langkah-langkah di atas untuk memasang Elasticsearch dan pustaka klien PHP Elasticsearch, serta mencipta indeks dan pemetaan, anda boleh merekod data log ke Elasticsearch, membuat pertanyaan dan menganalisis data, dengan itu melaksanakan sistem pemantauan masa nyata yang mudah dan berfungsi sepenuhnya. Saya berharap artikel ini dapat memberi panduan dan bantuan yang berguna kepada pembaca dalam membina sistem pemantauan masa nyata.

Atas ialah kandungan terperinci Amalan terbaik untuk membina sistem pemantauan masa nyata menggunakan php Elasticsearch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn