企業級日誌分析系統——ELK

tanwenlong01發表於2020-11-19

1.ELK日誌分析系統簡介

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-8S8fRerm-1605746105940)(C:\Users\譚文龍\AppData\Roaming\Typora\typora-user-images\image-20201117181639589.png)]

日誌伺服器
	提高安全性
	集中存放日誌
	缺陷:對日誌分析困難
ELK日誌分析系統
	Elasticsearch
	Logstash
	Kibana
日誌處理步驟
	將日誌進行集中化管理
	將日誌格式化(Logstash)並輸出到(Elasticsearch)
	對格式化後的資料進行索引和儲存(Elasticsearch)
	前端資料的展示(Kibana)

2.Elasticsearch介紹

Elasticsearch的概述
	提供了一個分散式多使用者能力的全文搜尋引擎
Elasticsearch核心概念
	接近實時
	叢集
	節點
	索引
		索引(庫)--->型別(表)--->文件(記錄)
	分片和副本

3.Logstash介紹

Logstash介紹
	一款強大的資料處理工具
	可實現資料傳輸、格式處理、格式化輸出
	資料輸入、資料加工(如過濾、改寫等)以及資料輸出
LogStash主要元件
	Shipper		//日誌收集者。負責監控本地日誌檔案的變化,即時收集最新的日誌檔案內容
	Indexer		//日誌儲存者。負責接收日誌並寫入到本地檔案
	Broker		//日誌Hub。負責連線多個Shipper和多個Indexer
	Search and Storage	//允許對事件進行搜尋和儲存
	Web Interface		//基於Web的展示介面

//在Logstash中,包括了三個階段,分別是輸入(Input)、處理(Filter,非必需)和輸出(Output)

4.Kibana介紹

Kibana介紹
	一個針對Elasticsearch的開源分析及視覺化平臺
	搜尋、檢視儲存在Elasticsearch索引中的資料
	通過各種圖表進行高階資料分析及展示
Kibana主要功能
	Elasticsearch無縫之整合
	整合資料,複雜資料分析
	讓更多團隊成員受益
	介面靈活,分享更容易
	配置簡單,視覺化多資料來源
	簡單資料匯出

5.部署ELK日誌分析系統

困境
1:開發人員不能登入線上伺服器檢視日誌
2:各個系統都有日誌,日誌分散難以查詢
3:日誌資料量大,查詢慢,資料不夠實時

Elastic Search  分散式搜尋引擎
LogStash  日誌收集
Kibana   日誌展示 

日誌收集最好的開發語言就是java 因為有JVM

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-Kn13mjRG-1605746105947)(C:\Users\譚文龍\AppData\Roaming\Typora\typora-user-images\image-20201117184200855.png)]

1.安裝elasticsearch

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

cd /etc/yum.repos.d/
vim elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

yum list

yum install elasticsearch -y

yum install java -y  (1.8版本)

java -version

//顯示
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

cd /etc/elasticsearch/

vim elasticsearch.yml

17行 叢集名稱
cluster.name: abner

23行 節點名稱
node.name: linux-node1

33行 工作目錄
path.data: /data/es-data
path.logs: /var/log/elasticsearch/

43行 防止交換swap分割槽
bootstrap.memory_lock: true

54行 監聽網路
network.host: 0.0.0.0

58行 埠
http.port: 9200


mkdir -p /data/es-data

chown -R elasticsearch:elasticsearch /data/es-data/

systemctl start elasticsearch.service

netstat -ntap | grep 9200

測試
http://192.168.100.11:9200

安裝ES外掛
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

測試
http://192.168.100.11:9200/_plugin/head/

在第二臺伺服器上同時安裝ES服務同上
17行 叢集名稱
cluster.name: abner

23行 節點名稱
node.name: linux-node2

69行 自動發現機制
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.100.11"]

啟動elasticsearch

同樣在linux-node1中配置

69行 單播列表自動發現機制
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.100.12"]


測試
http://192.168.100.12:9200/_plugin/head/
會看到主分片和副本分片

//node-01和node-02日誌提示不讓鎖記憶體
less /var/log/elasticsearch/abner.log
...
[2018-08-19 22:01:12,224][WARN ][bootstrap                ] 
These can be adjusted by modifying /etc/security/limits.conf, for example: 
	# allow user 'elasticsearch' mlockall
	elasticsearch soft memlock unlimited
	elasticsearch hard memlock unlimited
...

vim /etc/security/limits.conf
//末尾插入
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

systemctl stop elasticsearch.service
systemctl start elasticsearch.service

--------------生產環境中必須要修改(注意)------------------
ulimit -a
open files                      (-n) 1024
方法:
/etc/security/limits.conf

* soft nofile 65535        

* hard nofile 65535
//重啟生效
--------------------------------------------------
//監控元件
github.com  中查詢 kopf

/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf

http://192.168.100.11:9200/_plugin/kopf/#!/cluster

2.安裝logstash

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
cd /etc/yum.repos.d/
vim logstash.repo

[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

yum install logstash -y

------------------logstash收集系統日誌--------------------------
ln -s /opt/logstash/bin/logstash /usr/bin/

[root@localhost ~]# vim file.conf

input {

      file {
          path => "/var/log/messages"
          type => "system"
          start_position => "beginning"
      }     
      file {
          path => "/var/log/elasticsearch/yun.log"
          type => "es-error"
          start_position => "beginning"   
          codec => multiline {
          pattern => "^\["
          negate => true
          what => "previous"
        }
      }
}

output {
    
     if [type] == "system" {
         elasticsearch {
             hosts => ["192.168.100.11:9200"]
             index => "system-%{+YYYY.MM.dd}"
         }
     } 

     if [type] == "es-error" {
         elasticsearch {
             hosts => ["192.168.100.11:9200"]
             index => "es-error-%{+YYYY.MM.dd}"
         }
     } 
}

//新增多行日誌內容進行驗證
logstash -f /root/file.conf

3.安裝kibana

tar zxvf kibana-4.3.1-linux-x64.tar.gz -C /opt/

mv kibana-4.3.1-linux-x64/ /usr/local/

mv kibana-4.3.1-linux-x64/ kibana

vim /usr/local/kibana/config/kibana.yml

//2行 
server.port: 5601

//5行
server.host: "0.0.0.0"


//12行 ES地址
elasticsearch.url: "http://192.168.175.132:9200"

//20行
kibana.index: ".kibana"


yum install screen -y

//啟動監聽
/usr/local/kibana/bin/kibana

ctrl+a+d  進行丟入後臺

http://192.168.175.132:5601/

es-error-*

相關文章