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

Amalan terbaik untuk membina sistem pemantauan masa nyata menggunakan php Elasticsearch

王林
Lepaskan: 2023-09-13 08:42:01
asal
1232 orang telah melayarinya

使用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
Salin selepas log masuk

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"
  }
}
Salin selepas log masuk

Kemudian jalankan arahan berikut untuk memasang perpustakaan:

composer install
Salin selepas log masuk

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 '索引和映射创建失败!';
}
?>
Salin selepas log masuk

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);
?>
Salin selepas log masuk

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

// 处理查询结果
?>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan