Logstash の概要

Logstash の概要

導入

        Logstash は、複数のソースから同時にデータを取り込み、変換し、お気に入りのリポジトリ (もちろん、私たちのものは ElasticSearch) に送信できる、オープン ソースのサーバー側データ処理パイプラインです。

ここに画像の説明を挿入します

       ElasticStack アーキテクチャ図に戻ると、Logstash がデータ処理のニーズを満たしていることがわかります。データを処理する必要がある場合は、処理のために Logstash に送信され、そうでない場合は ElasticSearch に直接送信されます。
ここに画像の説明を挿入します

使用

       Logstash は、ドキュメント、グラフ、データベースからのさまざまな入力を処理し、処理後に Elasticsearch に送信できます。

ここに画像の説明を挿入します

導入とインストール

       Logstash は主にデータ ソースのデータを 1 行ずつ処理し、データを直接フィルタリングして切り取ります。

ここに画像の説明を挿入します

まず公式 Web サイトにアクセスして logstash をダウンロードします:ポータル

ダウンロードする必要があるバージョンを選択してください:

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムが存在する可能性があります。画像を保存して直接アップロードすることをお勧めします (img-f0xO5Pzn-1687342729987) (C:\Users\XIA\AppData\Roaming\Typora\) typora-user-images\ image-20230616195125119.png)]

wgetを使用して直接ダウンロードする

#检查jdk环境,要求jdk1.8+
java -version
# 下载
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.8.1-linux-x86_64.tar.gz
#解压安装包
tar -xvf logstash-8.8.1-linux-x86_64.tar.gz
mv logstash-8.8.1 logstash
#第一个logstash示例--定义标准输入和输出
bin/logstash -e 'input { stdin { } } output { stdout {} }'

テスト

       コンソールに「hello」と入力すると、出力情報がすぐに表示されます。

ここに画像の説明を挿入します

詳細な構成

       Logstash の構成は、以下に示すように 3 つの部分で構成されます。

input {
    
     #输入
stdin {
    
     ... } #标准输入
}
filter {
    
     #过滤,对数据进行分割、截取等处理
...
}
output {
    
     #输出
stdout {
    
     ... } #标准输出
}

入力

  • さまざまなスタイル、サイズ、ソースのデータを収集する データは多くのシステムにさまざまな形式で分散または集中して存在することがよくあります。
  • Logstash は、多くの一般的なソースからイベントを同時にキャプチャするためのさまざまな入力オプションをサポートしています。ログ、メトリクス、ウェブアプリケーション、データストア、さまざまな AWS サービスから継続的なストリーミング方式でデータを簡単に収集します。
    ここに画像の説明を挿入します

フィルター

  • リアルタイムでデータを解析して変換する
  • データがソースからリポジトリに移動すると、Logstash フィルターは個々のイベントを解析し、構造を構築するための名前付きフィールドを特定し、それらを共通形式に変換して、より簡単かつ迅速な分析とビジネス価値を実現します。
    ここに画像の説明を挿入します

出力

       Logstash は、必要な場所にデータを送信するための多数の出力オプションを提供し、多数のダウンストリーム ユース ケースを可能にする柔軟性を備えています。
ここに画像の説明を挿入します

カスタムログを読む

       先ほど、Filebeat を通じて nginx ログを読み取りました。カスタム構造のログの場合は、使用する前に読み取って処理する必要があります。したがって、現時点では Logstash を使用する必要があります。Logstash には強力な処理機能があり、さまざまな種類のログを処理し、さまざまなシナリオを実現します。

ログ構造

2023-06-17 21:21:21|ERROR|1 读取数据出错|参数:id=1002

       ご覧のとおり、ログの内容は「|」で分割されていますが、これを利用して処理時にもデータを分割する必要があります。

設定ファイルの書き込み

vim shengxia-pipeline.conf

次に、次のコンテンツを追加します

input {
    
    
    file {
    
    
        path => "/opt/elk/logs/app.log"
        start_position => "beginning"
    }
}
filter {
    
    
    mutate {
    
    
    	split => {
    
    "message"=>"|"}
    }
}
output {
    
    
	stdout {
    
     codec => rubydebug }
}

起動する

#启动
./bin/logstash -f ./mogublog-pipeline.conf

次に、テストデータを挿入します

echo "2023-06-17 21:21:21|ERROR|读取数据出错|参数:id=1002" >> app.log

次に、logstash が挿入したばかりのデータをキャプチャし、データも分割されることがわかります。

ここに画像の説明を挿入します

Elasticsearchへの出力

       設定ファイルを変更して、ログ記録を ElasticSearch に出力できます。

input {
    
    
    file {
    
    
        path => "/opt/elk/logs/app.log"
        start_position => "beginning"
    }
}
filter {
    
    
    mutate {
    
    
    	split => {
    
    "message"=>"|"}
    }
}
output {
    
    
	elasticsearch {
    
    
		hosts => ["192.168.40.150:9200","192.168.40.137:9200","192.168.40.138:9200"]
	}
}

次に、logstash を再起動します

./bin/logstash -f ./shenngxia-pipeline.conf

次に、ログ レコードに 2 つのデータを挿入します。

echo "2023-06-17 21:57:21|ERROR|读取数据出错|参数:id=1002" >> app.log
echo "2023-06-17 21:58:21|ERROR|读取数据出错|参数:id=1003" >> app.log

最後に、挿入したデータが表示されます。

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_52589631/article/details/131332764