検索
ホームページバックエンド開発PHPチュートリアルPHP はオープンソース ELK ログ分析プラットフォームを実装します

インターネットと情報技術の継続的な発展に伴い、ログ分析は企業ビジネス、ネットワーク セキュリティ、およびシステム最適化プロセスに不可欠な部分になりました。これまでのログ分析手法は主に手動での読み取り、フィルタリング、分析に依存していましたが、大量のデータの場合は困難でした。ログ分析プラットフォームの登場により、ログデータを効率的かつ正確に処理できるようになり、データの価値がさらに高まります。この記事では、PHP を使用して実装されたオープンソースの ELK ログ分析プラットフォームを紹介します。

1. ELK の概要

ELK は、Elasticsearch、Logstash、Kibana の 3 つのオープン ソース ソフトウェアの略称です。 Elasticsearch は、大量のデータを処理して迅速にクエリを実行できる Lucene ベースの検索エンジンです。Logstash は、さまざまなログを収集、解析、フィルタリング、変換できるオープンソースのログ収集および処理ツールです。Kibana は、データ処理ツールです。さまざまなチャートやダッシュボードを迅速に生成できる対話型ツールも含まれます。

ELK は、簡単な使用、効率的なパフォーマンス、強力な拡張性などの特徴を持ち、複数のデータ ソースをサポートします。これは、企業がシステムやアプリケーションの実行ステータスを監視するための強力なログ分析プラットフォームを迅速に構築するのに役立ちます。

2. PHP は ELK を実装します

ELK を使用するプロセスでは、通常、Logstash を使用してログを収集、解析、変換し、データを Elasticsearch に保存します。画面。一般的なサーバーサイド スクリプト言語である PHP は、Logstash および Elasticsearch ライブラリを使用してログを収集および保存することもできます。

1. Logstash のインストール

Logstash のインストールは非常に簡単で、公式 Web サイトのダウンロード ページから該当するバージョンを選択し、指定したディレクトリに解凍します。たとえば、次のコマンドを使用して Linux システムにインストールできます:

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 {} }'

上記のコマンドを実行した後、標準入力を介して Logstash が正常にインストールされたかどうかをテストできます。もちろん、ログを収集するための PHP の使用をより適切に導入するには、関連ライブラリもインストールする必要があります。

2. Elasticsearch ライブラリをインストールする

PHP ライブラリの依存関係を管理するために Composer を使用します。 Logstash をインストールした後、次のコマンドを使用して Elasticsearch 依存ライブラリをインストールできます:

composer require elasticsearch/elasticsearch

3. Logstash の設定

Logstash をログ収集に使用する前に、関連するパラメータを設定する必要もあります。ログスタッシュ。まず、Logstash への入力を定義する必要があります。入力設定では、次のような非常に便利なプラグインを使用できます。

  • file: ファイル内のログを読み取るために使用されます。
  • udp、tcp: UDP を読み取るために使用され、 TCP プロトコル ログ
  • syslog: システム Syslog ログの読み取りに使用されます
  • beats: Beats プロトコル ログを直接受信できます

ここでは、ファイル プラグインを使用して読み取りますサーバー上のログ ファイルを解析し、処理します。例:

input {
  file {
    path => "/var/log/apache2/access.log"
    type => "apache_access"
  }
}

次に、Logstash フィルタリングを構成する必要があります。フィルタリングでは、特定のフィールドの抽出、IP アドレスや URL アドレスの解析など、ログを分析および処理できます。以下は単純なフィルターです:

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

    date {
      match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
    }
  }
}

次に、Logstash 出力を定義できます。出力では、処理されたデータを Elasticsearch またはデータベース、ファイルなどの他のデータ ストレージ メディアに出力できます。出力構成は次のとおりです:

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

4. PHP を使用してログを収集する

上記の構成を完了すると、PHP を使用してログを収集できます。以下は、Linux またはその他の UNIX に似た環境で実行できる単純な PHP スクリプトです:

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

上記のコードでは、最初に Elasticsearch クライアント ライブラリを使用してクライアント インスタンスを作成します。次に、$log_path 変数を定義して、読み取るログ ファイルのパスを指定します。次に、file_exists() 関数を使用してファイルが存在するかどうかを確認し、filesize() 関数を使用してファイル サイズを取得し、file() 関数を使用してファイルの内容を読み取ります。

foreach ループでは、ファイル内の各行を走査し、ログの各行の形式を $log 配列に保存します。ここでは、ログの種類と現在のタイムスタンプも $log 配列に保存します。最後に、Elasticsearch の Index() メソッドを使用して、$log 配列を Elasticsearch に送信します。

3. 概要

上記の紹介を通じて、ELK ログ分析プラットフォームのワークフローを理解することができます。 Logstash を使用してログを収集、解析、変換し、そのデータを Elasticsearch に保存し、Kibana を使用してデータを視覚化し、インタラクティブに表示することで、ログ データを迅速かつ効率的に分析できます。同時に、PHP は一般的なサーバーサイド スクリプト言語として、ログの収集と保存に Logstash ライブラリと Elasticsearch ライブラリを使用することもできます。

以上がPHP はオープンソース ELK ログ分析プラットフォームを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHP依存性噴射コンテナ:クイックスタートPHP依存性噴射コンテナ:クイックスタートMay 13, 2025 am 12:11 AM

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

PHPの依存噴射対サービスロケーターPHPの依存噴射対サービスロケーターMay 13, 2025 am 12:10 AM

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

PHPパフォーマンス最適化戦略。PHPパフォーマンス最適化戦略。May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPメールの検証:電子メールが正しく送信されるようにしますPHPメールの検証:電子メールが正しく送信されるようにしますMay 13, 2025 am 12:06 AM

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

PHPアプリケーションをより速くする方法PHPアプリケーションをより速くする方法May 12, 2025 am 12:12 AM

tomakephpapplicationsfaster、followthesesteps:1)useopcodecachinglikeopcacheTostoredscriptbytecode.2)最小化abasequeriesecachingingindexing.3)leveragephp7機能forbettercodeefficiency.4)

PHP依存性インジェクション:コードのテスト可能性を改善しますPHP依存性インジェクション:コードのテスト可能性を改善しますMay 12, 2025 am 12:03 AM

依存性注入(DI)は、明示的に推移的な依存関係によりPHPコードのテスト可能性を大幅に改善します。 1)DI分離クラスと特定の実装により、テストとメンテナンスが柔軟になります。 2)3つのタイプのうち、コンストラクターは、状態を一貫性に保つために明示的な式依存性を注入します。 3)DIコンテナを使用して複雑な依存関係を管理し、コードの品質と開発効率を向上させます。

PHPパフォーマンスの最適化:データベースクエリの最適化PHPパフォーマンスの最適化:データベースクエリの最適化May 12, 2025 am 12:02 AM

DatabaseQueryoptimizationInpholvesseveralstrategESTOEnhancePerformance.1)selectonlynlynlyndorycolumnStoredatedataTransfer.2)useindexingtospeedupdataretrieval.3)revenmecrycachingtostoreres sultsoffrequent queries.4)

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター