記事ディレクトリ
1.ELKログ分析システムの概要
1.1ELKログ分析システムの概要
ELKログ分析システムは、Logstash、Elasticsearch、およびKibanaオープンソースソフトウェアのコレクションです。ログ管理システムのオープンソースソリューションであり、任意のソースから任意の形式でログを検索、分析、および視覚化できます。
1.2。ログ処理手順
1.ログの一元管理
2.ログ(Logstash)をフォーマットし、Elasticsearchに出力します
3.フォーマットされたデータにインデックスを付けて保存します(Elasticsearch)
4.フロントエンドデータの表示(キバナ)
1.3ElasticSearchの概要
ElasticsearchはJavaで開発され、分散マルチユーザー機能を備えたフルテキスト検索エンジンを提供します。クラウドコンピューティングで使用するように設計されており、リアルタイム検索、安定性、信頼性、高速性、インストールと使用の容易さを実現できます。
Elasticsearchの基本的なコアコンセプト:
(1)ほぼリアルタイム(NRT)
elasticsearchは、ほぼリアルタイムの検索プラットフォームです。つまり、ドキュメントのインデックス作成からドキュメントが検索できるようになるまでにわずかな遅延があります(通常は1秒)。
(2)クラスター(クラスター)
クラスターには複数のノードが含まれます。各ノードが属するクラスターは、構成(クラスター名、デフォルトではelasticsearch)によって決定されます。中小規模のアプリケーションの場合、クラスターの先頭にノードは1つだけです。正常、
(3)ノード(ノード)
クラスター内のノード。ノードにも名前があり(デフォルトはランダムに割り当てられます)、ノード名は非常に重要です(運用および保守管理操作を実行する場合)。デフォルトのノードは「elasticsearch」という名前の名前を追加します。多数のノードを直接開始すると、それらは自動的にelasticsearchクラスターを形成します。もちろん、ノードはelasticsearchクラスターを形成することもできます。
(4)インデックス(インデックス)
インデックスは、やや類似した特性を持つドキュメントのコレクションです。たとえば、顧客データのインデックス、製品カタログの別のインデックス、および注文データのインデックスを作成できます。インデックスは名前(すべて小文字である必要があります)で識別され、このインデックスに対応するドキュメントのインデックス作成、検索、更新、および削除を行う場合は、この名前を使用する必要があります。クラスターでは、必要な数のインデックスを定義できます。
インデックスは、リレーショナルデータベースライブラリに関連しています。
(5)インデックス(インデックス)
ElasticSearchは、そのデータを1つ以上のインデックス(インデックス)に格納します。SQLフィールドの観点から見ると、インデックスはデータベースのようなものです。インデックスにドキュメントを書き込んだり、インデックスからドキュメントを読み取ったり、Luceneを使用してインデックスにデータを書き込んだり、ElasticSearchを介してインデックスからデータを取得したりできます。
(6)ドキュメント(ドキュメント)
ドキュメント(ドキュメント)は、ElasticSearchの主要なエンティティです。ElasticSearchを使用するすべてのケースで、最終的にはドキュメントの検索に起因する可能性があります。ドキュメントはフィールドで構成されています。
(7)シャード
はインデックスシャードを表します。esは完全なインデックスを複数のシャードに分割できます。これの利点は、大きなインデックスを複数に分割して異なるノードに分散できることです。分散検索を形成します。シャードの数は、インデックスの作成前にのみ指定でき、インデックスの作成後に変更することはできません。5.Xのデフォルトの断片化は構成ファイルで定義できません
(8)レプリカ
はインデックスレプリカを表します。esは複数のインデックスレプリカを設定できます。レプリカの最初の機能は、システムの耐障害性を向上させることです。特定のノードが損傷または失われた場合、レプリカから回復できます。2つ目は、esのクエリ効率を向上させることです。これにより、esは検索要求の負荷を自動的に分散します。
1.4Logstashの概要
Logstashは、ログを収集、フィルタリング、フォーマット、出力し、後で使用するために保存できる完全にオープンソースのツールです(検索など)。
Logstashは、単純なメッセージベースのアーキテクチャに基づいてJRuby言語で記述され、Java仮想マシン(JVM)で実行されます。個別のエージェントやサーバーとは異なり、LogStashは、単一のエージェントを他のオープンソースソフトウェアと組み合わせて構成し、さまざまな機能を実現できます。
Logstashの哲学は非常に単純で、3つのことしか行いません。
収集:データ入力
エンリッチ:フィルタリング、書き換えなどのデータ処理。
トランスポート:データ出力
(1)LogStashの主なコンポーネント:
配送業者:ログコレクター。ローカルログファイルの変更を監視し、ログファイルの最新のコンテンツを時間内に収集する責任があります。通常、リモートエージェント(エージェント)はこのコンポーネントを実行するだけで済みます。
インデクサー:ログストア。ログの受信とローカルファイルへの書き込みを担当します。
ブローカー:ログハブ。複数の荷送人と複数のインデクサーを接続する責任があります
検索と保存:イベントの検索と保存を可能にします。
Webインターフェイス:Webベースの表示インターフェイス
上記のコンポーネントをLogStashアーキテクチャに個別にデプロイできるため、クラスターのスケーラビリティが向上します。
(2)LogStashホスト分類:
エージェントホスト:イベントの配送者として、さまざまなログデータを中央ホストに送信します。Logstashエージェントプログラムを実行するだけで済みます。
中央ホスト:ブローカー、インデクサー、検索とストレージ、Webインターフェイスなどのさまざまなコンポーネントを実行してログデータを実現できます受信、処理、保管
1.5キアバナ入門
Kibanaは、Elasticsearchのオープンソース分析および視覚化プラットフォームです。
Elasticsearchインデックスに保存されているインタラクティブデータを検索して表示する
高度なデータ分析と表示は、さまざまなチャートを介して実行できます
キアバナの主な機能:
Elasticsearchのシームレスな統合
統合データ、複雑なデータ分析
より多くのチームメンバーに利益をもたらす
柔軟なインターフェース、共有しやすい
シンプルな構成、複数のデータソースの視覚化
簡単なデータエクスポート
2.実験システムの構築
2.1、実験環境
VMware仮想マシン
centos7.4仮想マシン、IPアドレス:20.0.0.21、ホスト名:node1、Elasticsearchを提供する必要があります
centos7.4仮想マシン、IPアドレス:20.0.0.22、ホスト名:node2、Elasticsearch、Kibanaにサービスを提供する必要があります
centos7.4仮想マシン、IPアドレス:20.0.0.23、ホスト名:apache、Logstash、Apacheを提供する必要があります
ファイアウォール、コア保護はオフです
2.2、Elasticsearch環境を構成します
(1)20.0.0.21にログインし、ホスト名を変更し、ドメイン名の解決を構成し、Java環境を確認します(使用できない場合)。
hostnamectl set-hostname node1
vi /etc/hosts
20.0.0.21 node1
20.0.0.22 node2
java -version
(2)Elasticsearchをインストールし
、準備したパッケージをドラッグして解凍します
rpm -ivh elasticsearch-5.5.0.rpm
systemctl daemon-reload
systemctl enable elasticsearch.service
(3)構成ファイルを変更します
cp -p /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: my-elk-cluster
23 node.name: node1
33 path.data: /data/elk_data
37 path.logs: /var/log/elasticsearch/
43 bootstrap.memory_lock: false
55 network.host: 0.0.0.0
59 http.port: 9200
68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]
(4)データストレージパスを作成し、承認します
mkdir -p /data/elk_data/
chown elasticsearch:elasticsearch /data/elk_data/
(5)Elasticsearchを開始します
systemctl start elasticsearch.service
netstat -antp | grep 9200
(6)実機ブラウザを20.0.0.21:9200で開き
ます。(7)node2:20.0.0.22を設定します。Elasticsearch環境は上記とほぼ同じです。
ホスト名はnode2に設定され、
変更設定ファイルは23 node.name:node2に設定され
、実機ブラウザが開きます。 20.0.0.22:9200(8
)クラスターのヘルスチェックとステータス
。実マシンのブラウザーで20.0.0.21:9200 / _cluster / health?prettyと入力します(20.0.0.22:9200 / _cluster / health?prettyに変更することもできます)。
2.3.node1とnode2にelasticsearch-headプラグインをインストールします
上記のインストールが成功した後、表示は非常に直感的ではないため、elasticsearch-headプラグインをインストールして、クラスターの状況をより直感的に表示し、管理を容易にします。以下は、node1の操作のみを示しています。
(1)ノードコンポーネントの依存関係パッケージをコンパイルしてインストールします。
パッケージをホームにアップロードします。
yum -y install gcc-c++ make gcc
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make -j3 编译时间较长约半个小时
make install
(2)phantomjs(フロントエンドフレームワーク)をインストール
し、パッケージを/ usr / local / src /にアップロードします。
cd /usr/local/src/
tar jxvf 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(データ視覚化ツール)をインストール
し、パッケージを/ usr / local / src /にアップロードします。
cd /usr/local/src/
tar zxvf elasticsearch-head.tar.gz
cd elasticsearch-head/
npm install
(4)メイン構成ファイルを変更します
vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
systemctl restart elasticsearch.service
(5)elasticsearch-headを開始します
cd /usr/local/src/
cd elasticsearch-head/
npm run start &
netstat -lnupt |grep 9100
插入索引
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
(6)実機のブラウザに20.0.0.21:9100と入力します
2.4、Apacheサーバー展開logstash
(1)オープニングの最適化
hostnamectl set-hostname apache
yum -y install httpd
systemctl start httpd
java -version 没有java环境需安装
(2)logstash
アップロードパッケージを/ potにインストールします
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service
systemctl enable logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
(3)
elasticsearch (ノード)Logstashコマンドテストでドッキングテストを実行します
フィールドの説明説明:
●-fこのオプションを使用すると、logstashの構成ファイルを指定し、構成ファイルに従ってlogstashを構成できます
●-eの後に文字列が続く場合、文字列は次のように見なされます。 logstashの構成(「」の場合、デフォルトでstdinが入力として使用され、stdoutが出力として使用されます)
●-t構成ファイルが正しいかどうかをテストして、終了します。
入力は標準入力を採用し、出力はテスト用の標準出力を採用します
[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{} }'
The stdin plugin is now waiting for input:
11:33:17.455 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {
:port=>9600}
www.baidu.com 输入网址
2020-10-29T03:33:26.424Z apache www.baidu.com
テスト:rubydebugを使用して詳細な出力を表示します。codecはcodecです
[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
The stdin plugin is now waiting for input:
11:30:32.066 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {
:port=>9600}
www.baidu.com 输入网址
{
"@timestamp" => 2020-10-29T03:30:59.822Z,
"@version" => "1",
"host" => "apache",
"message" => "www.baidu.com"
logstashを使用してelasticsearchに情報を書き込みます
[root@apache opt]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.21:9200"] } }'
The stdin plugin is now waiting for input:
11:43:46.129 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {
:port=>9600}
www.baidu.com 输入网址
(4)実機ブラウザはnode1ノードにアクセスしてインデックス情報を表示します。
(5)ドッキング構成
Logstash構成ファイルは、主に入力、出力、およびフィルターの3つの部分で構成されます(必要に応じて処理されます)。
chmod o+r /var/log/messages
[root@apache opt]# vi /etc/logstash/conf.d/system.conf
input {
file{
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["20.0.0.21:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
[root@apache opt]# systemctl restart logstash.service
実機ビュー
2.5、node2ホストにkibanaをインストールします
パッケージを/ usr / local / src /にアップロードします
cd /usr/local/src/
rpm -ivh kibana-5.5.1-x86_64.rpm
cd /etc/kibana/
cp -p kibana.yml kibana.yml.bak
[root@node2 kibana]# vi kibana.yml
2 server.port: 5601
7 server.host: "0.0.0.0"
21 elasticsearch.url: "http://20.0.0.21:9200"
30 kibana.index: ".kibana"
[root@node2 kibana]# systemctl start kibana.service
[root@node2 kibana]# systemctl enable kibana.service
実機ビュー
2.6.Apacheホストに接続されているApacheログファイル
cd /etc/logstash/conf.d/
touch apache_log.conf
[root@apache conf.d]# vi apache_log.conf
input {
file{
path => "/etc/httpd/logs/access_log"
type => "access"
start_position => "beginning"
}
file{
path => "/etc/httpd/logs/error_log"
type => "error"
start_position => "beginning"
}
}
output {
if [type] == "access" {
elasticsearch {
hosts => ["20.0.0.21:9200"]
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["20.0.0.21:9200"]
index => "apache_error-%{+YYYY.MM.dd}"
}
}
}
[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf
まず、実機でapacheのWebサイト20.0.0.23にアクセスして、ログを生成します。
次に、http://20.0.0.21:9100にアクセスして、2つのインデックス情報を見つけます
。kibanaインターフェイスに入ってインデックスを作成すると、
プラットフォームが正常に構築されます。