ELK+Kafka 企業日誌收集平臺(一)

背景:

最近線上上了ELK,可是隻用了一臺Redis在中間做爲消息隊列,以減輕前端es集羣的壓力,Redis的集羣解決方案暫時沒有接觸過,而且Redis做爲消息隊列並非它的強項;因此最近將Redis換成了專業的消息信息發佈訂閱系統Kafka, Kafka的更多介紹你們能夠看這裏:傳送門  ,關於ELK的知識網上有不少的哦, 此篇博客主要是總結一下目前線上這個平臺的實施步驟,ELK是怎麼跟Kafka結合起來的。好吧,動手!html

ELK架構拓撲:

然而我這裏的整個日誌收集平臺就是這樣的拓撲:
1前端

1,使用一臺Nginx代理訪問kibana的請求;
2,兩臺es組成es集羣,而且在兩臺es上面都安裝kibana;(如下對elasticsearch簡稱es)
3,中間三臺服務器就是個人kafka(zookeeper)集羣啦; 上面寫的消費者/生產者這是kafka(zookeeper)中的概念;
4,最後面的就是一大堆的生產服務器啦,上面使用的是logstash,固然除了logstash也可使用其餘的工具來收集你的應用程序的日誌,例如:Flume,Scribe,Rsyslog,Scripts……java

角色:node

11111

軟件選用:linux

部署步驟:nginx

1.ES集羣安裝配置;git

2.Logstash客戶端配置(直接寫入數據到ES集羣,寫入系統messages日誌);github

3.Kafka(zookeeper)集羣配置;(Logstash寫入數據到Kafka消息系統);web

4.Kibana部署;redis

5.Nginx負載均衡Kibana請求;

6.案例:nginx日誌收集以及MySQL慢日誌收集;

7.Kibana報表基本使用;

ES集羣安裝配置;

es1.example.com:

1.安裝java-1.8.0以及依賴包

2.獲取es軟件包

3.修改配置文件

4.建立相關目錄

5.獲取es服務管理腳本

6.啓動es ,並檢查其服務是否正常

訪問http://192.168.2.18:9200/ 若是出現如下提示信息說明安裝配置完成啦,

2

7.es1節點好啦,咱們直接把目錄複製到es2

8.安裝es的管理插件

es官方提供一個用於管理es的插件,可清晰直觀看到es集羣的狀態,以及對集羣的操做管理,安裝方法以下:

安裝好以後,訪問方式爲: http://192.168.2.18:9200/_plugin/head,因爲集羣中如今暫時沒有數據,因此顯示爲空,

3

      此時,es集羣的部署完成。

Logstash客戶端安裝配置;

在webserve1上面安裝Logstassh

1.downloads  軟件包 ,這裏注意,Logstash是須要依賴java環境的,因此這裏仍是須要yum install -y java-1.8.0.

2.提供logstash管理腳本,其中裏面的配置路徑可根據實際狀況修改

3.Logstash 向es集羣寫數據

(1)編寫一個logstash配置文件

(2)檢查配置文件是否有語法錯

(3)既然配置ok咱們手動啓動它,而後寫點東西看可否寫到es

4.png

ok.上圖已經看到logstash已經能夠正常的工做啦.

4.下面演示一下如何收集系統日誌

將以前的配置文件修改以下所示內容,而後啓動logstash服務就能夠在web頁面中看到messages的日誌寫入es,而且建立了一條索引

啓動logstash後,咱們來看head這個插件的web頁面

5

ok,系統日誌咱們已經成功的收集,而且已經寫入到es集羣中,那上面的演示是logstash直接將日誌寫入到es集羣中的,這種場合我以爲若是量不是很大的話直接像上面已將將輸出output定義到es集羣便可,若是量大的話須要加上消息隊列來緩解es集羣的壓力。前面已經提到了我這邊以前使用的是單臺redis做爲消息隊列,可是redis不能做爲list類型的集羣,也就是redis單點的問題無法解決,因此這裏我選用了kafka ;下面就在三臺server上面安裝kafka集羣

Kafka集羣安裝配置;

在搭建kafka集羣時,須要提早安裝zookeeper集羣,固然kafka已經自帶zookeeper程序只須要解壓而且安裝配置就好了

kafka1上面的配置:

1.獲取軟件包.官網:http://kafka.apache.org

2.配置zookeeper集羣,修改配置文件

3.建立zookeeper所須要的目錄

4.在/data/zookeeper目錄下建立myid文件,裏面的內容爲數字,用於標識主機,若是這個文件沒有的話,zookeeper是無法啓動的哦

以上就是zookeeper集羣的配置,下面等我配置好kafka以後直接複製到其餘兩個節點便可

5.kafka配置

6.將kafka(zookeeper)的程序目錄所有拷貝至其餘兩個節點

7.修改兩個借點的配置,注意這裏除了如下兩點不一樣外,都是相同的配置

8.修改完畢配置以後咱們就能夠啓動了,這裏先要啓動zookeeper集羣,才能啓動kafka

咱們按照順序來,kafka1 –> kafka2 –>kafka3

注意,若是zookeeper有問題 nohup的日誌文件會很是大,把磁盤佔滿,這個zookeeper服務能夠經過本身些服務腳原本管理服務的啓動與關閉。

後面兩臺執行相同操做,在啓動過程中會出現如下報錯信息

因爲zookeeper集羣在啓動的時候,每一個結點都試圖去鏈接集羣中的其它結點,先啓動的確定連不上後面還沒啓動的,因此上面日誌前面部分的異常是能夠忽略的。經過後面部分能夠看到,集羣在選出一個Leader後,最後穩定了。

其餘節點也可能會出現相似的狀況,屬於正常。

9.zookeeper服務檢查

ok.  這時候zookeeper集羣已經啓動起來了,下面啓動kafka,也是依次按照順序啓動

注意,跟zookeeper服務同樣,若是kafka有問題 nohup的日誌文件會很是大,把磁盤佔滿,這個kafka服務一樣能夠經過本身些服務腳原本管理服務的啓動與關閉。

此時三臺上面的zookeeper及kafka都已經啓動完畢,來檢測如下吧

(1)創建一個主題

(2)查看有哪些主題已經建立

(3)查看summer這個主題的詳情

(4)發送消息,這裏使用的是生產者角色

(5)接收消息,這裏使用的是消費者角色

若是可以像上面同樣可以接收到生產者發過來的消息,那說明基於kafka的zookeeper集羣就成功啦。

10,下面咱們將webserver1上面的logstash的輸出改到kafka上面,將數據寫入到kafka中

(1)修改webserver1上面的logstash配置,以下所示:各個參數能夠到官網查詢.

(2)配置檢測

(2)啓動Logstash,這裏我直接在命令行執行便可

(3)驗證數據是否寫入到kafka,這裏咱們檢查是否生成了一個叫system-messages的主題

能夠看出,這個主題生成了16個分區,每一個分區都有對應本身的Leader,可是我想要有10個分區,3個副本如何辦?仍是跟咱們上面同樣命令行來建立主題就行,固然對於logstash輸出的咱們也能夠提早先定義主題,而後啓動logstash 直接往定義好的主題寫數據就行啦,命令以下:

好了,咱們將logstash收集到的數據寫入到了kafka中了,在實驗過程當中我使用while腳本測試了若是不斷的往kafka寫數據的同時停掉兩個節點,數據寫入沒有任何問題。

那如何將數據從kafka中讀取而後給咱們的es集羣呢?那下面咱們在kafka集羣上安裝Logstash,安裝步驟再也不贅述;三臺上面的logstash 的配置以下,做用是將kafka集羣的數據讀取而後轉交給es集羣,這裏爲了測試我讓他新建一個索引文件,注意這裏的輸入日誌仍是messages,主題名稱仍是「system-messages」

在三臺kafka上面啓動Logstash,注意我這裏是在命令行啓動的;

在webserver1上寫入測試內容,即webserver1上面利用message這個文件來測試,我先將其清空,而後啓動

下圖爲我在客戶端寫入到kafka集羣的同時也將其輸入到終端,這裏寫入了三條內容

6

而下面三張圖側能夠看出,三臺Logstash 很平均的從kafka集羣當中讀取出來了日誌內容

7

9

8

再來看看咱們的es管理界面

10

ok ,看到了吧,

流程差很少就是下面 醬紫咯

111

因爲篇幅較長,我將

4.Kibana部署;

5.Nginx負載均衡Kibana請求;

6.案例:nginx日誌收集以及MySQL慢日誌收集;

7.Kibana報表基本使用;

放到下一篇博客。

 
    分享到:
 
 碼字很辛苦,轉載請註明來自Daemon's blog《ELK+Kafka 企業日誌收集平臺(一)》

評論

  1. Tiantiandas#1

     

    [root@es1 ~]#
    set.default.ES_HOME=/usr/local/elasticsearch #安裝路徑
    set.default.ES_HEAP_SIZE=1024 #jvm內存大小,根據實際環境調整便可

    您好,請問這個設置是在哪一個文件裏面? 謝謝!

     

    回覆
    2016-06-17
  2. 表弟#2

     

    表哥大神,已進入膜拜狀態,

     

    回覆
    2016-12-14
相關文章
相關標籤/搜索