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. ノード情報の表示
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.訪問:
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"]} }'
結果の表示:
見れない場合は更新してください!!!
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. キバナにアクセスします。
最初の訪問ではインデックスを追加する必要があります。前に追加したインデックスを追加します: 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-* を作成してください!