ELK入門及搭建 (親測有效)

一   ELK是什麼?

在項目初期的時候,大家都是趕着上線,一般來說對日誌沒有過多的考慮,當然日誌量也不大,所以用log4j就夠了,隨着應用的越來越多,日誌散落在各個服務器的logs文件夾下,確實有點不大方便。

當我們需要日誌分析的時候你大概會這麼做:直接在日誌文件中 grep、awk 就可以獲得自己想要的信息。

那你們想過這種方式的問題嗎?

1.日誌量太大如何歸檔、文本搜索太慢怎麼辦、如何多維度查詢

2.應用太多,面臨數十上百臺應用時你該怎麼辦

3.隨意登錄服務器查詢log對系統的穩定性及安全性肯定有影響

4.如果使用人員對Linux不太熟練那面對龐大的日誌簡直要命。

ELK因此就應運而生,那麼爲什麼要用ELK呢?ELK又能給我們解決哪些問題呢?

1.日誌統一收集,管理,訪問。查找問題方便安全:收集放到搜索引擎中。也就就是ELK中的E表示es:分佈式搜索引擎存儲庫。是一個Nosql。其核心是倒排索引庫。可存TB級的數據。

2.使用簡單,可以大大提高定位問題的效率:一個頁面搞定所有查詢。K:kibana。

3.可以對收集起來的log進行分析。L:Logstash,就是用收集日誌。會部署到應用服務器上面。還可以提供過濾功能。

4.能夠提供錯誤報告,監控機制。

 

二   ELK架構設計

ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件

1. LogStash

     它可以流放到各自的服務器上收集Log日誌,通過內置的ElasticSearch插件解析後輸出到ES中

2.ElasticSearch

   這是一個基於Lucene的分佈式全文搜索框架,可以對logs進行分佈式存儲,有點像hdfs。此爲ELK的核心組件,日誌的分析以及存儲全部由es完成,因此在後面的課程中我們還會對此進行重點講解。

3. Kibana:論壇。大屏展示

   它可以多維度的展示es中的數據。可提供圖表展示,造出一些非常炫酷的頁面。這也解決了用mysql存儲帶來了難以可視化的問題。他提供了豐富的UI組件,簡化了使用難度,數據在es中的展示是比較讓人蛋疼的,後面再講es的時候讓大家看看。

目前ELK主要有兩種框架:

1.普通框架:這一套框架不會影響生成應用。唯一形象的就是logstash會耗一點系統資源。

2.個性化擴展框架(針對日誌數據需要二次處理以及多方使用的場景):kafka(不建議用,除非針對TB數據):

Filebeat:

 

三、如何快速搭建一套穩定的ELK環境

1.官方下載(鏈接如下,該鏈接可以選各種es插件和版本)

       https://www.elastic.co/downloads/past-releases

 

2.建議版本:elasticsearch 2.4.6, lucene版本. 5.x。 6. 7.(我搭的2.4.6,注意:es5.+版本,比較麻煩,2.4.6夠用了)

                                              單機版EKL的安裝(集羣和單機差不多,按上邊架構搭就ok了)

1  下載好,elasticsearch 2.4.6,kibana4.6.1 ,logstash2.4.0 (注意一定要安裝JDK7+,tomcat 運行一個項目)

2  把這些插件上傳到centos上

3 在/home目錄下建一個soft文件夾,用於裝這個機械上的插件,命令:cd /home/        mkdir soft

 

4 在soft文件夾中新建一個elk文件夾,裝es2.4.6和logstash和kibana

5 把上傳的e,l,k cp到soft/elk目錄下:cp /home/xxx/elasticsearch 2.4.6.tar.gz kibana4.6.1.tar.gz logstash2.4.0.tar.gz /home/soft/elk/

6 切換到elk 目錄  :cd /home/soft/elk/     然後分別解壓:tar -zxvf elasticsearch 2.4.6.tar.gz  ,其他的同理。一一解壓就好

7.1 安裝es2.4.6,先cd /elasticsearch 2.4.6  在cd /config  在修改elasticsearch.yml     vim elasticsearch.yml

vim elasticsearch.ym

cluster.name: my-es#注意一個集羣裏面的機器一定要保持一致

node.name: node-01 #集羣需要改名字 同一個集羣裏面的名字不能相同(這是節點名字可以自己隨便寫)

node.master: true#儘量配置機器差作爲主節點 注意只有兩個節點的話第二個請配置爲false

node.data: true

network.host: 192.168.0.15(這個最好配置0.0.0.0  這樣就是外網可以訪問了)

http.port: 9200  (http端口,將來訪問就是這個端口)

transport.tcp.port: 9300 (數據傳輸端口)

端口9300 需要想防火牆開放,防火牆關了也需要開放    命令:

     firewall-cmd --zone=public --add-port=9200/tcp --permanent

     firewall-cmd --reload

8   可以啓動了,(注意root無法啓動,可以新建一個用戶 elk  ,並且把soft這個文件的所有者改成elk,這樣elk就可以操作          soft文件夾下的所有文件了,)root啓動權限太高,不允許,elk用戶啓動需要又寫和執行的權限操作,所以直接把soft文件      夾一次性把所有者改成elk    命令:cd /home/     chown -R elk soft  這樣就把soft文件夾的所有者改成elk了,這樣就可以去      啓動了

     命令:cd /home/soft/elk/       cd elasticsearch-2.4.6/    ./bin/elasticsearch(前臺啓動)  ./bin/elasticsearch -d (後臺啓動)

打開谷歌瀏覽器 在地址欄輸入xxxx.xxx.xxxx:9200

 

9   安裝es 的head插件   命令:在bin目錄下:./ plugin install mobz/ elasticsearch-head

     輸入  http://192.168.0.xxx:9200/_plugin/head/  驗證  出現下面界面成功

 

2    安裝logstash  

      1   剛剛在soft裏的elk中已經解壓了logstash了,直接修改配置文件就好

      2   先cd logstash-2.4.0/   ,再mkdir config   再cd config/   再 touch  log.conf 文件 再vim  log,conf

        

       

input {
        file {
                type => "log" 
                path => ["/export/home/tomcat/domains/*/*/logs/*.out"]
                start_position => "end"
		ignore_older => 0
		codec=> multiline {             //配置log換行問題
                        pattern => "^%{TIMESTAMP_ISO8601}"
                        negate => true
                        what => "previous"
                }
        }
        beats {
            port => 5044
        }
}
output {
        if [type] == "log" {
		elasticsearch {
			hosts => ["http://127.0.0.1:9200"]
			index => "log-%{+YYYY.MM}"
		}	
	}
}

  og,conf 的配置賦值上邊即可,就是改一改input中的path  你的項目運行的日誌生產目錄

3 logstash 就搞好了  然後啓動    再logstash-2.4.0的目錄下執行:./bin/logstash -f config/log.config(前臺啓動)

   後臺啓動:nohup ./bin/logstash -f config/log.conf > log.log &

4 啓動完成後   刷新剛剛的鏈接就多處一個索引庫

 

三  安裝kibana4.6.1

1  kibana4.6.1剛剛也在soft文件夾中解壓了,直接進入kibana4.6.1 的config目錄下修改kibana.yml

   目錄vim  kibana.yml

2 啓動kibana  命令:./bin/kibana(前臺) nohup ../bin/kibana &(後臺啓動)

3 驗證  再谷歌瀏覽器中  輸入  http://xxx.xxx.xxx:5601

4 記住  es 的端口,和logstash和kibana的端口dou'都要開放,並且logstash中的日誌生成的文件夾的所有者必須是是一個人  elk  用戶,不然  logstash讀不到 項目產生的日誌,權限不夠   改文件所有者就用   chown -R 用戶名 wen'文件夾  這條命令吧

總結:es logstash  kibana  解壓,修改各自的配置文件,開放端口。啓動,測試,和所有的或日誌生成目錄所有者是一個人,就ok了,其實前面說的大部分都是廢話,歡迎大家技術交流,小弟是初學蟄,勿見笑

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章