ELKログ収集システム

I. 概要

1. ELK は 3 つのコンポーネントで構成されます

2.機能

            ログ収集 ログ分析 ログの可視化

3. なぜそれを使用するのですか?

    ログはシステムやアプリケーションの状態を分析するために非常に重要ですが、一般にログの量は比較的多く、分散しています。

        管理するサーバーやプログラムの数が少ない場合は、各サーバーに 1 つずつログインして表示および分析することもできます。  

         ただし、サーバーまたはプログラムの数が比較的多い場合、この方法は無力であるように見えます。これに基づいて、いくつかの集中ログ システムも適用されます。

        現在、より有名で成熟したものは、Splunk (商用)、FaceBook の Scribe、Apache の Chukwa、Cloudera の Fluentd、ELK などです。

2. コンポーネント

1.弾性検索

ログ分析        

オープンソースのログ収集・分析・保存プログラム

特徴

    分散、ゼロ構成、自動検出、インデックス自動シャーディング

    インデックス コピー メカニズム レストフル スタイル インターフェイス 複数のデータ ソース 自動検索ロード

2.ログスタッシュ

ログ収集

ログを収集、分析、フィルタリングするためのツール

作業過程

         一般的な作業方法は C/S アーキテクチャで、クライアントはログを収集する必要があるサーバーにインストールされ、サーバーは各ノードで受信したログをフィルタリングして変更し、Elasticsearch に送信する役割を担います。

        入力 → フィルター → 出力

        入力 --> フィルタ --> 出力

入力

ファイル: tail -f コマンドと同様に、ファイル システム内のファイルから読み取ります。
Syslog: ポート 514 でシステム ログ メッセージをリッスンし、RFC3164 標準に従ってそれらを解析します。
Redis: Redis サービスからの読み取り
Beats: ファイルビートから読み取る

フィレ

Grok: 任意のテキスト データを解析する Grok は、Logstash の最も重要なプラグインです。その主な機能は、テキスト形式の文字列を特定の構造化データに変換し、正規表現で使用することです。
公式 grok 表現: logstash-patterns-core/patterns (メイン logstash-plugins/logstash-patterns-core GitHub)
Grok オンライン デバッグ: Grok デバッガー
Mutate: フィールドを変換します。たとえば、フィールドの削除、置換、変更、名前変更などです。
ドロップ: 一部のイベントを処理せずにドロップします。
クローン: イベントをコピーします。このプロセス中にフィールドを追加または削除することもできます。
Geoip: 地理情報を追加します (フロント kibana グラフィカル表示用)

出力

Elasticsearch: データを効率的に保存し、便利かつ簡単にクエリできます。
ファイル: イベント データをファイルに保存します。
Graphite: イベント データをグラフィカル コンポーネントに送信します。これは、一般的なオープン ソース ストレージのグラフィカル表示コンポーネントです。

3.キバナ

                        ログの視覚化は、Logstash と ElasticSearch が収集および保存されたログに基づいて分析するための使いやすい Web インターフェイス
                であり、重要なデータ ログの要約、分析、検索に役立ちます。

3. アーキテクチャの種類

エルク

                es ログスタッシュ キバナ

エルク

                エス・ログスタシュ・カフカ・キバナ

エルフク

    es logstash (重いものはより多くのシステム リソースを消費します) filebeat (軽いものはより少ないシステム リソースを消費します) kibana

エルフク

        es logstash ファイルビート カフカ キバナ

4. ケース

ELKログ収集システムクラスタ実験

1. 実験的なトポロジー

2. 環境構築

各ホストの IP アドレスをトポロジ内の静的 IP として設定し、2 つのノードのホスト名ノード 1 とノード 2 を変更して、ホスト ファイルを設定します。

ノード1:

hostnamectl set-ホスト名ノード1

vim /etc/hosts

192.168.2.4 ノード1

192.168.2.3 ノード2

ノード2:

hostnamectl set-ホスト名ノード2

vim /etc/hosts

192.168.2.4 ノード1

192.168.2.3 ノード2

3. ノード 1 とノード 2 の elasticsearch をインストールします

1. インストール

 Mv エルク パッケージ エルク

 それぞれCD

 rpm -ivh elasticsearch-5.5.0.rpm

2. 構成

ノード1:

vim /etc/elasticsearch/elasticsearch.yml

cluster.name:my-elk-cluster //クラスター名   

node.name:node1 //ノード名

path.data:/var/lib/elasticsearch //データストレージパス

path.logs: /var/log/elasticsearch/ //ログ保存パス

bootstrap.memory_lock: false //起動時にメモリをロックしません

network.host:0.0.0.0 //サービスによってバインドされた IP アドレスを指定します。0.0.0.0 はすべてのアドレスを表します

http.port:9200 //リスニングポートは9200です

Discovery.zen.ping.unicast.hosts: ["node1", "node2"] //クラスター検出はユニキャストを通じて実現されます

ノード2:

vim /etc/elasticsearch/elasticsearch.yml

cluster.name:my-elk-cluster //クラスター名   

node.name:node2 //ノード名

path.data:/var/lib/elasticsearch //データストレージパス

path.logs: /var/log/elasticsearch/ //ログ保存パス

bootstrap.memory_lock: false //起動時にメモリをロックしません

network.host:0.0.0.0 //サービスによってバインドされた IP アドレスを指定します。0.0.0.0 はすべてのアドレスを表します

http.port:9200 //リスニングポートは9200です

Discovery.zen.ping.unicast.hosts: ["node1", "node2"] //クラスター検出はユニキャストを通じて実現されます

3. elasticsearch サービスを開始します

ノード1とノード2

systemctl は elasticsearch を開始します

4. ノード情報の表示

http://192.168.2.3:9200

http://192.168.2.4:9200

3. elasticsearch-head プラグインをノード 1 にインストールします。

1. ノードのインストール

それぞれCD

tar xf ノード v8.2.1.tar.gz

cd ノード v8.2.1

./configure && make && make install

インストールが完了するまで待ちます。

2. コピーコマンド

それぞれCD

tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2

cd phantomjs-2.1.1-linux-x86_64/bin

cp phantomjs /usr/local/bin

3. elasticsearch-head をインストールする

それぞれCD

tar xf elasticsearch-head.tar.gz

cd elasticsearch-head

npmインストール

4. elasticsearch 構成ファイルを変更する

vim /etc/elasticsearch/elasticsearch.yml

 # インデックスを削除する場合は明示的な名前が必要です:

#

#action.destructive_requires_name:true

http.cors.enabled: true //クロスドメイン アクセスのサポートを有効にします。デフォルトは false です。

http.cors.allow-origin: "*" //クロスドメイン アクセスが許可されるドメイン アドレス

サービスを再起動します: systemctl restart elasticsearch

5. elasticsearch-head を開始します

cd /root/elk/elasticsearch-head

npm 実行開始 &

監視の表示: netstat -anput | grep :9100

6.訪問:

http://192.168.2.3:9100

7. テスト

node1 のターミナルに次のように入力します。

curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"} '

ブラウザを更新すると、対応する情報が表示されます

4. logstash をノード 1 サーバーにインストールします

それぞれCD

rpm -ivh logstash-5.5.1.rpm

systemctl は logstash.service を開始します

-s /usr/share/logstash/bin/logstash /usr/local/bin/ 内

テスト 1: 標準入出力

logstash -e '入力{ stdin{} }出力 { stdout{} }'

テスト 2: Rubydebug を使用したデコード

logstash -e '入力 { stdin{} } 出力 { stdout{ codec=>rubydebug }}'

テスト 3: elasticsearch への出力

logstash -e '入力 { stdin{} } 出力 { elasticsearch{ hosts=>["192.168.2.3:9200"]} }'

  結果の表示:

http://192.168.2.3:9100

見れない場合は更新してください!

5. Logstash ログ収集ファイルの形式 (デフォルトでは /etc/logstash/conf.d に保存されます)

Logstash 構成ファイルは基本的に、入力、出力、フィルター (必要に応じて) の 3 つの部分で構成されます。標準の設定ファイルの形式は次のとおりです。

入力 (...) 入力

フィルタ {...} フィルタ

出力 {...} 出力

各セクション内で、複数のアクセス方法を指定することもできます。たとえば、2 つのログ ソース ファイルを指定する場合、形式は次のようになります。

入力 {

ファイル{パス =>"/var/log/messages" タイプ =>"syslog"}

ファイル { パス =>"/var/log/apache/access.log" タイプ =>"apache"}

}

ケース: logstash を使用してシステム情報ログを収集する

chmod o+r /var/log/messages

vim /etc/logstash/conf.d/system.conf

入力 {

ファイル{

パス =>「/var/log/messages」 

タイプ => 「システム」

start_position => "始まり"

}

}

出力 {

エラスティックサーチ{

ホスト =>["192.168.1.1:9200"]

インデックス => "システム-%{+YYYY.MM.dd}"

}

}

ログ サービスを再起動します: systemctl restart logstash

ログの表示: http://192.168.2.3:9100

6、node1 ノードのインストール kibana

それぞれCD

rpm -ivh kibana-5.5.1-x86_64.rpm

1. キバナの設定

vim /etc/kibana/kibana.yml

server.port: 5601 //Kibana によって開かれたポート

server.host: "0.0.0.0" //Kibana がリッスンするアドレス

elasticsearch.url: "http://192.168.8.134:9200"  

//Elasticsearchとの接続を確立します

kibana.index: ".kibana" //Elasticsearch に .kibana インデックスを追加します

2.キバナを起動する

systemctl キバナを開始します

3. キバナにアクセスします。

http://192.168.1.1:5601

最初の訪問ではインデックスを追加する必要があります。前に追加したインデックスを追加します: system-*

7. 企業のケース:

1. httpdアクセスログ情報を収集する

2. httpd サーバーに logstash をインストールし、上記のインストール プロセスをパラメータ化します。テストする必要はありません。

3. logstash は httpd サーバー上のエージェント (エージェント) として機能するため、起動する必要はありません。

4. httpdログ収集設定ファイルの書き込み

vim /etc/logstash/conf.d/httpd.conf

入力 {

ファイル{

path=>"/var/log/httpd/access_log" //Apacheのアクセスログを収集する

type => "access" //タイプはaccessとして指定されます

start_position => "beginning" // 先頭から収集します

}

出力{

エラスティックサーチ {

hosts =>["192.168.8.134:9200"] // elasticsearch のリスニング アドレスとポート

Index => "httpd_access-%{+YYYY.MM.dd}" //インデックス形式を指定

}

}

5. logstash コマンドを使用して構成をインポートします。

logstash -f /etc/logstash/conf.d/httpd.conf

kibanaを使ってご覧ください!http://192.168.2.3:5601   閲覧時に管理タブにインデックス httpd_access-* を作成してください!


おすすめ

転載: blog.csdn.net/lsqaa/article/details/132554514