ELKログ解析システムの導入と構築(超詳細)

目次

1. ELKログ解析システムの紹介

2. Elasticsearch の概要

2.1 Elasticsearchの概要

3. Logstash の概要

4. Kibana の概要

五、ELKの動作原理

6.ELKログ分析システムの導入

 6.1 ELK Elasticsearch クラスターのデプロイ (Node1、Node2 ノードで動作)

6.2 Elasticsearch ソフトウェアのデプロイ

6.3. データストレージパスの作成と認証

6.4 elasticsearchが正常に起動するかどうか  

6.5 ノード情報の表示  

 6.6 Elasticsearch-head プラグインのインストール

6.6.1 ノードのコンパイルとインストール

6.6.2 phantomjs(フロントエンドフレームワーク)のインストール

6.6.3 Elasticsearch-head データ視覚化ツールのインストール

6.6.4 Elasticsearch メイン設定ファイルの変更

6.6.5 elasticsearch-head サービスの開始

6.6.6 Elasticsearch-head を介して Elasticsearch 情報を表示する

6.6.7 インデックスの挿入

6.7 ELK Logstash デプロイメント (Apache ノード上で動作)

6.7.1 ホスト名の変更

6.7.2 Apache サービス (httpd) のインストール

6.7.3 Java環境のインストール

6.7.4 logstash のインストール

6.7.5 Logstash のテスト

6.7.6 logstash 構成ファイルの定義


1. ELKログ解析システムの紹介

ELK は、Elasticsearch (略して es)、Logstash、Kibana を含む (ただしこれらに限定されない) 3 つのオープン ソース ソフトウェアで構成される全体です。これら 3 つのソフトウェアは ELK を合成します。データ抽出(Logstash)、検索分析(Elasticsearch)、データ表示(Kibana)のソリューション一式であるため、ELKスタックとも呼ばれます。

ELK は、無料でオープンソースのログ分析アーキテクチャ技術スタックの総称であり、公式 Web サイト https://www.elastic.co/cn です。Elasticsearch、Logstash、Kibana という 3 つの基本コンポーネントが含まれています。

2. Elasticsearch の概要

2.1 Elasticsearchの概要

分散ユーザー向けに全文検索エンジンを提供します。

 ElasticSearch: Lucene (全文検索エンジン アーキテクチャ) に基づいて開発された分散ストレージおよび検索エンジンであり、さまざまなログを保存するために使用されます。Elasticsearch は Java で開発されており、ブラウザを介して RESTful Web インターフェイスを通じて Elasticsearch と通信できます。Elasticsearch は、フルテキストの構造化検索を可能にする、リアルタイムの分散型スケーラブルな検索エンジンです。通常、大量のログ データのインデックス作成と検索に使用され、さまざまな種類のドキュメントの検索にも使用できます。 

3. Logstash の概要

データ収集エンジンとして。さまざまなデータ ソースからのデータの動的な収集をサポートし、データのフィルタリング、分析、強化、形式の統一などの操作を実行して、ユーザーが指定した場所にデータを保存し、通常は Elasticsearch に送信します。Logstash は Ruby 言語で記述され、Java Virtual Machine (JVM) 上で動作し、データ送信、フォーマット処理、フォーマット出力を実現できる強力なデータ処理ツールです。Logstash には強力なプラグイン機能があり、ログ処理によく使用されます。

相対入力(データ収集) フィルタ(データフィルタリング) 出力(データ出力)

4. Kibana の概要

Kibana は、通常、Elasticsearch と一緒にデプロイされます。Kibana は、Elasticsearch の強力なデータ視覚化ダッシュボードです。Kibana は、重要なデータの要約、分析、検索に使用できる Elasticsearch ログ データを参照するためのグラフィカル Web インターフェイスを提供します。

五、ELKの動作原理

(1) ログを収集する必要があるすべてのサーバーに Logstash を展開するか、最初にログ サーバーでログの管理を集中管理してから、ログ サーバーに Logstash を展開します。

(2) Logstash はログを収集し、フォーマットして Elasticsearch クラスターに出力します。

(3) Elasticsearch は、フォーマットされたデータにインデックスを付けて保存します。

(4) Kibana は ES クラスターからデータをクエリしてチャートを生成し、フロントエンド データを表示します。

概要: logstash はログ コレクターとして、データ ソースからデータを収集し、データをフィルター処理してフォーマットして Elasticsearch に保存し、kibana はログを視覚化します。

6.ELKログ分析システムの導入

ノード 1 ノード (2C/4G): ノード 1/192.168.237.21 Elasticsearch Kibana

ノード 2 ノード (2C/4G): ノード 2/192.168.237.22 Elasticsearch

Apache ノード: apache/192.168.237.23 Logstash Apache

 6.1 ELK Elasticsearch クラスターのデプロイ (Node1、Node2 ノードで動作)

两台node都做
vim /etc/hosts
192.168.10.13 node1 
192.168.10.14 node2   

注: バージョンの問題

java -version #インストールされていない場合は、

yum -y java openjdk バージョン「1.8.0_131」をインストールします

OpenJDK ランタイム環境 (ビルド 1.8.0_131-b12)

OpenJDK 64 ビット サーバー VM (ビルド 25.131-b12、混合モード)  

jdkを使用することをお勧めします

6.2 Elasticsearch ソフトウェアのデプロイ

(1)安装elasticsearch—rpm包
#上传elasticsearch-5.5.0.rpm到/opt目录下
cd /opt
rpm -ivh elasticsearch-5.5.0.rpm 

(2)加载系统服务
systemctl daemon-reload    
systemctl enable elasticsearch.service

(3)修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1
--33--取消注释,指定数据存放路径
path.data: /data/elk_data
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

grep -v "^#" /etc/elasticsearch/elasticsearch.yml

6.3. データストレージパスの作成と認証

mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

6.4 elasticsearchが正常に起動するかどうか  

systemctl start elasticsearch.service
netstat -antp | grep 9200

6.5 ノード情報の表示  

ブラウザアクセス

http://192.168.237.21:9200/

http://192.168.237.22:9200/

ノード Node1、Node2 を表示する 

http://192.168.237.21:9200/_cluster/health?pretty

http://192.168.237.22:9200/_cluster/health?pretty

 クラスターの正常性ステータスを表示すると、ステータス値が緑色 (緑色) であり、ノードが正常に実行されていることを示していることがわかります。

 #上記の方法でクラスタの状態を確認するのは使いにくいですが、Elasticsearch-headプラグインをインストールするとより便利にクラスタを管理できるようになります。

 6.6 Elasticsearch-head プラグインのインストール

Elasticsearch バージョン 5.0 以降では、Elasticsearch-head プラグインを独立したサービスとしてインストールする必要があり、npm ツール (NodeJS のパッケージ管理ツール) を使用してインストールする必要があります。
Elasticsearch-headをインストールするには、依存するソフトウェアノードとphantomjsを事前にインストールする必要があります。
node: は、Chrome V8 エンジンに基づく JavaScript ランタイム環境です。
phantomjs: は Webkit ベースの JavaScript API であり、目に見えないブラウザとして理解でき、Webkit ベースのブラウザで実行できることはすべて実行できます。

6.6.1 ノードのコンパイルとインストール

#上传软件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y

cd /opt
tar zxvf node-v8.2.1.tar.gz

cd node-v8.2.1/
./configure
make && make install

6.6.2 phantomjs(フロントエンドフレームワーク)のインストール

#上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

6.6.3 Elasticsearch-head データ視覚化ツールのインストール

#上传软件包 elasticsearch-head.tar.gz 到/opt
cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

6.6.4 Elasticsearch メイン設定ファイルの変更

vim /etc/elasticsearch/elasticsearch.yml 
...... --末尾添加以下内容-- 
http.cors.enabled: true                  #开启跨域访问支持,默认为
 false http.cors.allow-origin: "*"       #指定跨域访问允许的域名地址为所有

systemctl restart elasticsearch

6.6.5 elasticsearch-head サービスの開始

#必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
cd /usr/local/src/elasticsearch-head/
npm run start &


netstat -natp |grep 9100

6.6.6 Elasticsearch-head を介して Elasticsearch 情報を表示する

6.6.7 インデックスの挿入

#通过命令插入一个测试索引,索引为 index-demo,类型为 test。

//输出结果如下:curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

ブラウザでhttp://192.168.237.21:9100/にアクセスしてインデックス情報を表示すると、デフォルトでインデックスが 5 つのフラグメントに分割されており、コピーがあることがわかります。「データ参照」をクリックすると、node1にindex-demoとして作成されたインデックスと、type testの関連情報が表示されます。

6.7 ELK Logstash デプロイメント (Apache ノード上で動作)

6.7.1 ホスト名の変更

hostnamectl set-hostname apache

6.7.2 Apache サービス (httpd) のインストール

yum -y install httpd
systemctl start httpd

6.7.3 Java環境のインストール

yum -y install java
java -version

6.7.4 logstash のインストール

#上传软件包 logstash-5.5.1.rpm 到/opt目录下
cd /opt
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/

6.7.5 Logstash のテスト

Logstash コマンドの共通オプション: -f: このオプションにより、Logstash の構成ファイルを指定し、その構成ファイルに従って Logstash の入力ストリームと出力ストリームを構成できます。-e: コマンド ラインから取得され、入力と出力の後に Logstash の構成として使用できる文字列が続きます (空の場合、デフォルトで stdin が入力として使用され、stdout が出力として使用されます)。-t: 構成ファイルが正しいかどうかをテストして終了します。

入力ストリームと出力ストリームを定義します。 #Input は標準入力を使用し、output は標準出力を使用します (パイプと同様)

logstash -e 'input { stdin{} } output { stdout{} }'
......
www.baidu.com										#键入内容(标准输入)
2020-12-22T03:58:47.799Z node1 www.baidu.com		#输出结果(标准输出)
www.sina.com.cn										#键入内容(标准输入)
2017-12-22T03:59:02.908Z node1 www.sina.com.cn		#输出结果(标准输出)

//执行 ctrl+c 退出

#使用 rubydebug 输出详细格式显示,codec 为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
......
www.baidu.com										#键入内容(标准输入)


//結果は標準出力には表示されませんが、Elasticsearch に送信されます。ブラウザでhttp://192.168.10.13:9100/にアクセスしてインデックス情報を表示したり、データを参照したりできます。

#使用 Logstash 将信息写入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.10.13:9200"] } }'
			 输入				输出			对接
......
www.sina.com.cn										#键入内容(标准输入)

 

6.7.6 logstash 構成ファイルの定義

Logstash 構成ファイルは基本的に、入力、出力、フィルター (オプション、必要に応じて使用) の 3 つの部分で構成されます。

input: データ ソース、Kafka などの一般的なデータ ソース、ログ ファイルなどからデータを収集することを示します。

filter: データフォーマット、データ型変換、データフィルタリングなどを含むデータ処理層を示し、正規表現をサポートします。

出力: Logstash によって収集されたデータがフィルターによって処理され、Elasticsearch に出力されることを示します。

#フォーマットは次のとおりです。

入力 {...}

フィルター {...}

出力 {...}

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

input { file { path =>"/var/log/messages" type =>"syslog"}

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

Logstash 設定ファイルを変更して、システム ログ /var/log/messages を収集し、elasticsearch に出力します。

chmod +r /var/log/messages					#让 Logstash 可以读取日志

vim /etc/logstash/conf.d/system.conf
input {
    file{
        path =>"/var/log/messages"						#指定要收集的日志的位置
        type =>"system"									#自定义日志类型标识
        start_position =>"beginning"					#表示从开始处收集
    }
}
output {
    elasticsearch {										#输出到 elasticsearch
        hosts => ["192.168.10.13:9200"]					#指定 elasticsearch 服务器的地址和端口
        index =>"system-%{+YYYY.MM.dd}"					#指定输出到 elasticsearch 的索引格式
    }
}

systemctl restart logstash 

ブラウザでhttp://192.168.237.22:9100/にアクセスしてインデックス情報を表示します

おすすめ

転載: blog.csdn.net/m0_71888825/article/details/132054574