ELK 日誌分析系統 ----------- 部署ElasticSearch群集

量子黑洞丶發表於2020-10-29

ELK日誌分析系統簡介

  • 伺服器中產生的日誌是龐大的,通常我們想要從日誌中查詢自己想要的資訊時時通過 grep、awk等來實現,但在那些龐大規模的web、機構面前,就不夠看了。像那些大型電商網站,動則上百億PV的日誌產生,如何快速歸檔、快速定位、查詢成為問題。
  • 這時候我們就可以用到ELK日誌分析系統,ELK提供了一整套解決方案。它是由ElasticSearch(群集) 、logstash(日誌蒐集)、Kibana(展現相關的分析的日誌資訊、資料資訊、索引資訊在web頁面上)這些開源軟體,相互作用配合,對日誌進行集中化管理的一種架構系統。

ELK的工作原理

  • 前端產生了各種web日誌被Logstash代理端蒐集到,(Lofstash會指定這些Web服務的路徑定時去檢索日誌裡面的內容,然後進行蒐集),然後將這些日誌轉化成es所能識別的格式,傳輸給es,接著es會將這些日誌進行儲存,並做相應的索引以便快速定位,當需要讓它展示相關的日誌資訊時,Kibana會將es傳輸給它的資料在web頁面上以柱狀圖、餅狀圖、分析圖以及相關的複製索引資訊展現給管理者或使用者.

Elasticsearch 群集介紹

  • Elasticsearch是個開源分散式搜尋引擎,提供蒐集、分析、儲存資料三大功能。它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等

部署ElasticSearch群集

部署規劃

1、2臺CentOS7.4 版本的Linux作業系統
2、node1:20.0.0.101
node2:20.0.0.102
3、所需軟包請到官網下載

安裝ES群集
  • 分別在兩臺節點上執行下列操作
1、 安裝環境設定
systemctl stop firewalld
setenforce 0
hostnamectl set-hostname node1        ###另一臺node2

vi /etc/hosts
20.0.0.101 node1
20.0.0.102 node2

java -version                ####確認java版本

openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)


2、將elasticsearch-5.5.0.rpm軟體包上傳到家目錄中並安裝

3、過載系統引數,並設定為開機自啟
systemctl daemon-reload
systemctl enable elasticsearch.service

4、修改lasticsearch主配置檔案
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak                  ###將檔案做個備份

vi /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"]


5、建立資料存放目錄,並授權
mkdir -p /data/elk_data

[root@node2 ~]# id elasticsearch                  ####rpm預設會建立程式使用者elasticsearch,這個使用者專門管理es的
uid=990(elasticsearch) gid=985(elasticsearch)=985(elasticsearch)

chown elasticsearch:elasticsearch /data/elk_data                 ####給資料存放目錄授權,要不然無法存入資料
[root@node2 ~]# ll /data/                        ####確認授權
總用量 0
drwxr-xr-x. 2 elasticsearch elasticsearch 6 1028 14:49 elk_data


6、開啟服務並確認服務是否開啟
systemctl start elasticsearch.service

[root@node2 ~]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      54162/java

7、真機網頁輸入:  http://20.0.0.101:9200   和  http://20.0.0.102:9200    分別檢視節點資訊
101{
  "name" : "node1",
  "cluster_name" : "my-elk-cluster",
  "cluster_uuid" : "J3Jom7kbS4GqpTw1KSGUQg",
  "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}


102{
  "name" : "node2",
  "cluster_name" : "my-elk-cluster",
  "cluster_uuid" : "J3Jom7kbS4GqpTw1KSGUQg",
  "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}


網頁輸入:    http://20.0.0.101:9200/_cluster/health?pretty    檢視健康狀態
101102{
  "cluster_name" : "my-elk-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}



在網頁輸入: http://20.0.0.102:9200/_cluster/state?pretty    檢查群集狀態資訊

{
  "cluster_name" : "my-elk-cluster",
  "version" : 3,
  "state_uuid" : "IM53qDZaTneZVZW7Ujo6bg",
  "master_node" : "GnH2gHnqSVC4GlpcZLUrSw",
  "blocks" : { },
  "nodes" : {
    "CgH_iSNLSXiex70Q4vRErw" : {
      "name" : "node2",
      "ephemeral_id" : "1pfVovCVQhWuzrDgsuMxrg",
      "transport_address" : "20.0.0.102:9300",
      "attributes" : { }
    },
    "GnH2gHnqSVC4GlpcZLUrSw" : {
      "name" : "node1",
      "ephemeral_id" : "_GYOm0SwRsWzmH-eQ3EQtw",
      "transport_address" : "20.0.0.101:9300",
      "attributes" : { }
    }
  },
  "metadata" : {
    "cluster_uuid" : "J3Jom7kbS4GqpTw1KSGUQg",
    "templates" : { },
    "indices" : { },
    "index-graveyard" : {
      "tombstones" : [ ]
    }
  },
  "routing_table" : {
    "indices" : { }
  },
  "routing_nodes" : {
    "unassigned" : [ ],
    "nodes" : {
      "CgH_iSNLSXiex70Q4vRErw" : [ ],
      "GnH2gHnqSVC4GlpcZLUrSw" : [ ]
    }
  }
}


8、 編譯安裝 node 元件依賴包
上傳node-v8.2.1.tar.gz軟體包到家目錄中並解壓
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make -j4      (等待時間較長,加 -j4 選項)
make install


9、安裝 phantomjs 前端框架
上傳phantomjs-2.1.1-linux-x86_64.tar.bz2軟體包到家目錄中並解壓
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 


10、安裝 elasticsearch-head 資料視覺化工具
上傳elasticsearch-head.tar.gz安裝包到家目錄
tar zxvf elasticsearch-head.tar.gz
cd elasticsearch-head/
npm install


11、修改主配置檔案
vi /etc/elasticsearch/elasticsearch.yml                      ####在檔案末尾插入下面二條
http.cors.enabled: true                       ####開啟跨域訪問支援,預設為false
http.cors.allow-origin: "*"                   ####跨域訪問允許的域名地址

systemctl restart elasticsearch


12、啟動 elasticsearch-head 工具
cd elasticsearch-head/
npm run start &

確認埠是否啟動:
netstat -lnupt | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      101486/grunt

netstat -lnupt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      101335/java   



13、 真機測試
輸入網址:    http://20.0.0.101:9100     ;   進入之後修改 連線localhost 為本機IP地址,就可以進行節點連線,健康值為綠色
★node1
●node2


虛擬機器節點中輸入:
  curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
  (重新整理下真機網頁頁面,點選索引選項,即可看到儲存值)

到此結束,感謝瀏覽

相關文章