使用プロファイルフィールドデータの前処理:学びの場
FilebeatはElasticsearchにログを通過しました
弾性スタックは、ELK(Elasticsearch、LogstashとKibana)と呼ばれます。ビートを追加し、そして今、多くの人が言うので、ELKはELKBになります。ここでBはビートを表現することです。ビートは、中Elasticsearchで非常に重要な役割を果たしています。
ビートは、私たちの収集データを手助けし、ElasticsearchまたはLogstashにそれを渡すことができます。データを送信する前にビートもいくつかの単純なデータ処理を行うために私たちを助けることができます。
ビートは、囲碁の言語でプログラムすることになっています。これは、クライアント上で直接実行することができ非常に軽量なアプリケーションです。
Filebeatは何ですか
ELKスタックを分析するために、さまざまな種類のデータを転送するためのホストにインストールされている軽量荷主のセット - Filebeat荷主はビートシリーズに属するログです。異なる種類の情報を伝えるために設計された各ビート - たとえば、WindowsのイベントログのWinlogbeatリリース、Metricbeatは、ホストの指標などを公開。名前が示すように、Filebeatは、ログファイルを提供しています。
、コンピュータで生成されたログファイルにインストールされ、それらを追跡し、転送するデータをLogstashに、より高度な治療のために、またはElasticsearchインデックスに直接転送 - ELKベースのロギングパイプラインは、Filebeatはログエージェントの役割を果たしています。したがって、Filebeat Logstashない代替が、しかし同時に、ほとんどの場合に使用されなければならないことができます。
JVMを実行するLogstash必要、Rubyでこの依存性と実装は、より高度なフィルタやパイプに来る場合は特に、メモリ消費量の多くの根本的な原因になるために組み合わせます。
ビートは、小さなフットプリントを目的とした囲碁言語、大量のデータ、暗号化のサポートとランバージャック契約に基づき、効果的に背圧力に対処されます。ネットワークの問題または送信中断は、Filebeatが再確立接続中断位置に覚えていますので、たとえば、Filebeatインデックスは、最後の行の成功のためのレジストリに記録します。出力した場合、問題Logstash摂取またはElasticsearchは、Filebeatファイルの読み出し速度が遅くなりますがあります。
Filebeatの選択でまたはそれはあるLogstash
簡単な答えは - 少なくとも、ログファイルに、あなたはほとんど常にFilebeatとLogstashの組み合わせを使用する必要があります。なぜ?あなたは「T」の唯一の興味タイムスタンプとメッセージフィールド、またはETL(変換)のためにまだ必要Logstashであり、複数のログレコードアグリゲータのコンジットとして機能していない限りので。
Filebeatトランスミッタは、今日の最高のログファイルの一つである - それの軽量、サポートのSSLおよびTLS暗号化、サポート背圧、内蔵の回復メカニズム良いを持っており、非常に信頼性の高いです。しかし、ほとんどの場合、それは構造簡単な分析に強化されたフィルタログログログメッセージのために使用することはできません。これはLogstashが果たす役割です。
Logstashアグリゲータとして機能する - データは、パイプにプッシュ典型的elasticsearch、より大きなバッファアセンブリ本番環境とすることができるされる前に、様々なソースからデータを抽出するには。Logstashの最新バージョンは、キューキュー永続メッセージ用のディスク・ストレージ・サポートに含まれていることを言及する価値があります。
他のメンバーFilebeatとビートシリーズは、軽量プロキシのエッジに配備ホストとして機能、データをフィルタリングし、集約のためLogstashを汲み上げ、そして豊か。
インストールFilebeat
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-linux-x86_64.tar.gz
tar xzvf filebeat-7.3.1-linux-x86_64.tar.gz
だから、私たちのFilebeatは、現在インストールされていること。してください注:原因ELKの反復が速くなり、私たちはバージョン7.3.1に上記のバージョンを置き換えることができ、我々が必要とすることができます。私たちは、Fliebeatを実行しないでください。
デフォルトの場合、我々はfilebeat直接実行、それはデフォルトの設定ファイルは現在のディレクトリ内のファイルfilebeat.ymlで選択します。
filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- ./sample.log
output.logstash:
hosts: ["localhost:5044"]
私たちは、の実装を見て、テストコマンドの結果を入力することができます。
./filebeat test output
結果を表示します:
logstash: localhost:5044...
connection...
parse host... OK
dns lookup... OK
addresses: ::1, 127.0.0.1
dial up... ERROR dial tcp 127.0.0.1:5044: connect: connection refused
戻り値の情報表示、logstashは動作していない、ポート5044が開いていません。使用されていませんLogstash、ElasticsearchでFilebeatから収集されたデータから直接送信。
テストデータの準備
URL https://logz.io/sample-dataのapache-日常のaccess.logという名前のログファイルをダウンロードしてください。アトムエディタでこのファイルを開き、17279データのショーがあります。
各データ形式は、ようなものです:
20.168.183.41 - - [11/Sep/2019:00:00:05 +0000] "GET /category/health HTTP/1.1" 200 132 "/item/software/623" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7"
設定Filebeat
このログデータを送信することができるようにするには、次のプロファイルを使用して、Elasticsearchにfilebeat。filebeat_es.ymlという名前のファイルを作成します。
filebeat.inputs:
- type: log
enabled: true
paths:
- /Users/liuxg/data/apache-daily-access.log
output:
elasticsearch:
hosts: ["localhost:9200"]
ここでの設定は非常に簡単です。私たちの記憶装置に上記のパスで、ログファイルのことを指します。あなたはこの演習を自分で行うと、ファイルのパスを変更してください。私たちは、filebeat直接実行することができます。
$ ./filebeat -c filebeat_es.yml
我々はまた、書くことができます。
filebeat.inputs:
- type: log
enabled: true
fields:
apache: true
paths:
- /Users/liuxg/data/apache-daily-access.log
output.elasticsearch:
hosts: ["localhost:9200"]
ここoutput.elasticsearchますのでご注意ください。上記の文言とは若干異なります。個人的な好みに依存します。上記では、我々は、フィールドでのソースは「:真appach」と呼ばれる追加されました。
{
"_index" : "filebeat-7.3.0-2019.09.11-000001",
"_type" : "_doc",
"_id" : "637VIG0BJD_DqHjgqvC5",
"_score" : 1.0,
"_source" : {
"@timestamp" : "2019-09-11T14:58:55.902Z",
"message" : """144.228.123.71 - - [11/Sep/2019:01:52:35 +0000] "GET /category/games HTTP/1.1" 200 117 "/search/?c=Books+Software" "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"""",
"input" : {
"type" : "log"
},
"fields" : {
"apache" : true
},
"ecs" : {
"version" : "1.0.1"
},
"host" : {
"name" : "localhost"
},
"agent" : {
"hostname" : "localhost",
"id" : "c88813ba-fdea-4a98-a0be-468fb53566f3",
"version" : "7.3.0",
"type" : "filebeat",
"ephemeral_id" : "ec3328d6-f7f0-4134-a2b6-8ff0c5141cc5"
},
"log" : {
"offset" : 300352,
"file" : {
"path" : "/Users/liuxg/data/apache-daily-access.log"
}
}
}
}
あなたはまた、いくつかのタグを追加することができます。
filebeat.inputs:
- type: log
enabled: true
fields:
apache: true
tags: ["my-service", "hardware", "test"]
paths:
- /Users/liuxg/data/apache-daily-access.log
output.elasticsearch:
hosts: ["localhost:9200"]
これは、中_sourceにいくつかのタグになります。
{
"_index" : "filebeat-7.3.0-2019.09.11-000001",
"_type" : "_doc",
"_id" : "HIHyIG0BJD_DqHjgm0uL",
"_score" : 1.0,
"_source" : {
"@timestamp" : "2019-09-11T15:30:33.163Z",
"agent" : {
"id" : "c88813ba-fdea-4a98-a0be-468fb53566f3",
"version" : "7.3.0",
"type" : "filebeat",
"ephemeral_id" : "6fc482b2-fac8-4d79-8ca1-b27ef39cea3d",
"hostname" : "localhost"
},
"log" : {
"file" : {
"path" : "/Users/liuxg/data/apache-daily-access.log"
},
"offset" : 11497
},
"message" : """164.51.31.185 - - [11/Sep/2019:00:04:15 +0000] "GET /item/giftcards/232 HTTP/1.1" 200 130 "/category/electronics" "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"""",
"tags" : [
"my-service",
"hardware",
"test"
],
"input" : {
"type" : "log"
},
"fields" : {
"apache" : true
},
"ecs" : {
"version" : "1.0.1"
},
"host" : {
"name" : "localhost"
}
}
}
だから、私たちのKibanaに、我々はfilebeat-7.3.0-2019.09.11-000001と呼ばれるインデックスファイルを生成していることがわかります。
Filebeatプロセッサ
Logstashとして強く、強力ではないが、しかしFilebeatは、お好みの宛先にデータを転送する前に、ベースのアプリケーションの拡張を処理し、データのデータを記録することができます。あなたは(例えばドッカー、Kubernetes)などに、特定のフィールドを削除し、JSON文字列をデコードするメタデータのさまざまなを追加することができます。
これは、各プロセッサ・プロスペクターFilebeatプロファイルに定義されています。あなたはルール・アプリケーションの処理を定義するために条件文を使用することができます。ここでは、Apacheのアクセスログからフィールドdrop_fieldsプロセッサの削除の一部の例は以下のとおりです。
filebeat.inputs:
- type: log
enabled: true
fields:
apache: true
tags: ["my-service", "hardware", "test"]
paths:
- /Users/liuxg/data/apache-daily-access.log
processors:
- drop_fields:
fields: ["ecs"]
output.elasticsearch:
hosts: ["localhost:9200"]
上記、我々は削除ECSフィールドでは、結果が表示されます。
{
"_index" : "filebeat-7.3.0-2019.09.11-000001",
"_type" : "_doc",
"_id" : "m4H8IG0BJD_DqHjgZ47a",
"_score" : 1.0,
"_source" : {
"@timestamp" : "2019-09-11T15:41:15.306Z",
"host" : {
"name" : "localhost"
},
"agent" : {
"type" : "filebeat",
"ephemeral_id" : "d32d0cea-966a-48d7-8728-dad5fc276b3a",
"hostname" : "localhost",
"id" : "c88813ba-fdea-4a98-a0be-468fb53566f3",
"version" : "7.3.0"
},
"log" : {
"offset" : 11497,
"file" : {
"path" : "/Users/liuxg/data/apache-daily-access.log"
}
},
"message" : """164.51.31.185 - - [11/Sep/2019:00:04:15 +0000] "GET /item/giftcards/232 HTTP/1.1" 200 130 "/category/electronics" "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"""",
"tags" : [
"my-service",
"hardware",
"test"
],
"input" : {
"type" : "log"
},
"fields" : {
"apache" : true
}
}
}
明らかに以前のソースに比べて、我々はアイテムが消失したECSを見ることができます。
リストされているもので、すべてのプロセッサ:
add_cloud_metadata
add_locale
decode_json_fields
drop_event
drop_fields
include_fields
add_kubernetes_metadata
add_docker_metadata
Filebeaデバッグ
デフォルトでは、すべてのsyslogへの出力のFilebeat。フォアグラウンドFilebeatでは、標準エラー出力に出力をリダイレクトする-eコマンドラインフラグを使用することができます。例えば:
filebeat -e
デフォルト設定ファイルはfilebeat.yml(ファイルの場所は、プラットフォームによって異なります)です。あなたは、-cフラグを指定することにより、他の設定ファイルを使用することができます。例えば:
filebeat -e -c myfilebeatconfig.yml
あなたは、一の以上のセレクタを有効にデバッグを介してデバッグメッセージの冗長性を高めることができます。たとえば、次のようにトランザクションがリリースされている表示し、あなたが、公開セレクタ開始Filebeatを使用することができます。
filebeat -e -d "publish"
あなたが(それはかなり公正な警告です)、すべてのデバッグ出力をしたい場合は、使用することができ*
、このように、:
filebeat -e -d "*"
参考ます。https://www.elastic.co/guide/en/beats/filebeat/current/enable-filebeat-debugging.html