【Linux運用保守アーキテクチャ】 ------ ELKログ解析システムの構築

1. ELK ログ分析システムの概要:

ログサーバー:

  • セキュリティを向上させる。
  • ログを一元的に保存します。
  • 欠点:ログの解析が難しい

ELK ログの処理手順:

  • ログを一元的にフォーマットします。
  • ログ (logstash) をフォーマットし、Elasticsearch に出力します。
  • フォーマットされたデータにインデックスを付けて保存します (Elasticsearch)。
  • フロントエンドデータの表示(Kibana)

ここに画像の説明を挿入

ELK:Elasticsearch + Logstash + Kibana

ELK は Elasticsearch、Logstash、Kibana の略称で、これら 3 つはコア スイートですが、すべてではありません。

(1) Elasticsearchは、データの収集、分析、保存の 3 つの主要な機能を提供するリアルタイム全文検索分析エンジンであり、オープンな REST と JAVA API 構造により効率的な検索機能を提供するスケーラブルな分散システムです。これは、Apache Lucene 検索エンジン ライブラリの上に構築されています。

(2) Logstash は、ログを収集、分析、フィルタリングするためのツールです。システム ログ、エラー ログ、カスタム アプリケーション ログなど、ほぼすべての種類のログをサポートします。syslog、メッセージング (RabbitMQ など)、JMX などの多くのソースからログを受信でき、電子メール、WebSocket、Elasticsearch などのさまざまな方法でデータを出力できます。

(3) Kibana は、 Elasticsearch インジケーターに保存されたログ データを検索、分析、視覚化するための Web ベースのグラフィカル インターフェイスです。Elasticsearch の REST インターフェイスを利用してデータを取得するため、ユーザーは自分のデータのカスタム ダッシュボード ビューを作成するだけでなく、アドホックな方法でデータのクエリやフィルタリングを行うこともできます。

関数:

  • Elasticsearch のシームレスな統合。
  • データの統合、複雑なデータ分析。
  • 柔軟なインターフェースで共有が簡単。
  • シンプルな構成で、複数のデータソースを視覚化します。
  • シンプルなデータエクスポート。
  • より多くのチームメンバーに利益をもたらしましょう。

2. ELK ログ分析システムを構築します。

役割 メインソフトウェア
ノード1(192.168.220.136) Elasticsearch、Kibana
ノード2(192.168.220.137) Elasticsearch、Kibana
アパッチ(192.168.220.135) ログスタッシュ

ステップ 1: 最初に elasticsearch 環境を構成する

(1) 2 つのホスト名、つまり、node1 と node2 を変更します。

(2) hosts ファイルを変更します。

vim /etc/hosts
添加以下主机名和主机IP地址(两台node都需要):
192.168.220.129 node1
192.168.220.130 node2

(3) ファイアウォールが閉じられている

systemctl stop firewalld.service 
setenforce 0

ステップ 2: elasticsearch ソフトウェアをデプロイしてインストールする (両方のノードが必要)

(1) インストール:

rpm -ivh elasticsearch-5.5.0.rpm        //安装
systemctl daemon-reload                 //重新加载服务配置文件
systemctl enable elasticsearch.service   //设置为开机自启动
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak

(2) 連携ファイルを変更します。

注: 2 番目のノード サーバーの構成は最初のノード サーバーの構成と同じですが、ノード名と IP アドレスを変更するだけです。

vim /etc/elasticsearch/elasticsearch.yml

cluster.name: my-elk-cluster           //集群名字(自定义)
node.name: node-1                      //节点名字
path.data: /data/elk_data               //数据存放路径
path.logs: /var/log/elasticsearch/     //日志存放路径
bootstrap.memory_lock: false           //不在启动的时候锁定内存
network.host: 192.168.220.136          //提供服务绑定的IP地址(本机地址)
http.port: 9200            //端口
discovery.zen.ping.unicast.hosts: ["node1", "node2"]  //集群发现通过单播实现

(3) データストレージパスを作成し、以下を許可します。

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

(4) サービスを開始します。

systemctl start elasticsearch.service
netstat -natp | grep 9200

ここに画像の説明を挿入

1. ブラウザに次の URL を入力して、クラスターの健全性ステータスを確認します。

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

ここに画像の説明を挿入

2. クラスターのステータス情報を確認します。

http://192.168.220.136:9200/_cluster/state?pretty

ここに画像の説明を挿入

ステップ 3: elasticsearch-head プラグインをインストールする

(1) 依存パッケージをインストールします。

yum install gcc gcc-c++ make -y

(2) ノード コンポーネントをコンパイルしてインストールします。

tar zvxf node-v8.2.1.tar.gz -C /opt/
cd /opt/node-v8.2.1/
./configure 
make -j3     //这步耗时较长,耐心等待
make install

(3) phantomjs フロントエンド フレームワークをインストールします。

tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /opt/
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin/

(4) elasticsearch-head データ視覚化ツールをインストールします。

tar zvxf elasticsearch-head.tar.gz -C /opt/
cd /opt/elasticsearch-head/
npm install

(5) メイン構成ファイルを変更します。

vim /etc/elasticsearch/elasticsearch.yml
末尾插入以下两行代码:
http.cors.enabled: true
http.cors.allow-origin: "*"

ここに画像の説明を挿入
(6) elasticsearch-headの起動

cd /opt/elasticsearch-head/
npm run start &  //放在后台运行

この時点で、2 つのポート 9100 と 9200 のステータスを確認できます。

netstat -lnupt |grep 9100

netstat -lnupt |grep 9200

ノード1:
ここに画像の説明を挿入
ノード2:
ここに画像の説明を挿入

ステップ 4: インデックスを作成する

新しいインデックスを直接作成できます。
ここに画像の説明を挿入
次のコマンドを入力してインデックスを作成することもできます。

curl -XPUT '192.168.220.136:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
//索引名为 index-demo,类型为test

ここに画像の説明を挿入
ブラウザを更新すると、先ほど作成したインデックス情報が表示され、デフォルトではインデックスが5つに分割されており、コピーが存在していることがわかります。
ここに画像の説明を挿入
ここに画像の説明を挿入

ステップ 5: logstash をインストールし、ログ収集を実行して elasticsearch に出力する

(1) ホスト名を変更する

hostname apache

(2) Apache サービスをインストールします。

systemctl stop firewalld.service
setenforce 0
yum install httpd -y
systemctl start httpd.service

(3) logstashをインストールする

rpm -ivh logstash-5.5.1.rpm
systemctl start logstash
systemctl enable logstash
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/    //创建软连接到bin目录下

(4) logstash (Apache) と elasticsearch (node) の機能が正常であるかどうか、ドッキング テストを実行します。

  • logstash コマンドを使用して以下をテストできます。
[root@apache bin]# logstash
-f:可以指定 logstash的配置文件,根据配置文件配置 logstash
-e:后面跟着字符串,该字符串可以被当做 logstash 的配置(如果是“”,则默认使用stdin作为输入、stdout作为输出)
-t:测试配置文件是否正确,然后退出

(5) 入力には標準入力が使用され、出力には標準出力が使用されます。

logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.220.136:9200"] } }'

この時点で、ブラウザーは http://192.168.220.136:9200/ にアクセスしてインデックス情報を表示します。さらに logstash-2019.12.17 が表示されます
ここに画像の説明を挿入
ここに画像の説明を挿入
(6) Apache ホストにログインし、ドッキング構成を実行します。

  • logstash 設定ファイルは主に、入力、出力、フィルターの 3 つの部分で構成されます (これは状況によって異なります)。
给日志文件授权:
chmod o+r /var/log/messages

创建并编辑配置文件:
vim /etc/logstash/conf.d/system.conf
input {
    
    
      file{
    
    
        path => "/var/log/messages"
	    type => "system"
	    start_position => "beginning"
          }
       }
output {
    
    
        elasticsearch {
    
    
         hosts => ["192.168.220.136:9200"]
         index => "system-%{+YYYY.MM.dd}"
         }
 }

サービスを再起動します。

systemctl restart logstash.service

(7) ブラウザビューインデックス情報: システムがさらに増加し​​ます-2019.12.17
ここに画像の説明を挿入
ここに画像の説明を挿入

ステップ6: kibanaをnode1ホストにインストールする

rpm -ivh kibana-5.5.1-x86_64.rpm
cd /etc/kibana/
cp kibana.yml kibana.yml.bak

vim kibana.yml
修改,开放以下功能:
server.port: 5601        //开发端口
server.host: "0.0.0.0"    //监听所有
elasticsearch.url: "http://192.168.220.136:9200"  
kibana.index: ".kibana"

重启服务:
systemctl start kibana.service 

(1)

ブラウザアクセス: 192.168.220.136:5601
次に、ビジュアルインターフェイスでインデックス名を作成します: system-* (システムログファイルに接続)
ここに画像の説明を挿入
ここに画像の説明を挿入
(2) Apache ホストの Apache ログファイルに接続します (通常のアクセスとエラーを含む)

cd /etc/logstash/conf.d/

vim 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 => ["192.168.220.136:9200"]
             index => "apache_access-%{+YYYY.MM.dd}"
            }
        }
         if [type] == "error"{
    
    
        elasticsearch {
    
    
             hosts => ["192.168.220.136:9200"]
             index => "apache_error-%{+YYYY.MM.dd}"
            }
        }
}

サービスを再起動します。

/usr/share/logstash/bin/logstash -f apache_log.conf

ビジュアル インターフェイスで、2 つのインデックスを作成します

1. apache_access-*
2. apache_error-*
ここに画像の説明を挿入
しばらくすると、Discover で次の 2 つのログ ファイルが表示されます。
ここに画像の説明を挿入
ここに画像の説明を挿入
以前にノードの同期バックアップを作成しており、災害復旧機能も強化されているため、ダウンタイムによるデータ損失は発生しません。 。

おすすめ

転載: blog.csdn.net/weixin_45409371/article/details/103568636