ELK入門及搭建使用

ELK入門及搭建使用

一、ELK是什么?

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

1、Elasticsearch

這是一個基于Lucene的分布式全文搜索框架,可以對logs進行分布式存儲。此為ELK的核心組件,日志的處理以及存儲全部由Elasticsearch 完成。

2、Logstash

主要是用來日志的搜集、分析、過濾日志的工具,用來部署到各自的服務器上收集Log日志,通過內置的ElasticSearch插件解析后輸出日志到ElasticSearch中。

3、kibana

可以多維度的展示Elasticsearch 中的數據。提供了豐富的UI組件,簡化了使用難度。

二、ELK為什么用以及解決什么問題?

項目初期的時候,服務器數量較少,一般來說對日志沒有過多的考慮,隨著應用的越來越多,日志散落在各個服務器的logs文件夾下,想要查找日志需要在眾多服務器上去逐一查找,效率非常低而且確實有很大的不方便。

當線上出現問題我們需要日志分析的時候大概會這么做:直接在日志文件中 grep ‘xx’ order.log就可以獲得自己想要的信息。

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

1.日志量太大文本搜索太慢怎么辦、如何多維度查詢

2.應用太多,面臨數十上百臺應用時你該怎么辦(難道只能一臺一臺的去服務器上找?)

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

4.如果開發人員對Linux不太熟練,會造一定的困擾

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

1.日志統一收集,管理,訪問。查找問題方便安全

2.使用簡單,可以大大提高定位問題的效率

3.可以對收集起來的log進行分析(建立日志可視化界面,使得日志分析更加便捷)

4.能夠提供錯誤報告,監控機制(當異常觸發時能夠及時通過短信、郵件等方式通知相關負責人員)

三、ELK架構

3.1 Logstash作為日志收集器

這種架構是比較原始的部署架構,在各應用服務器端分別部署一個Logstash組件,作為日志收集器,然后將Logstash收集到的數據過濾、分析、格式化處理后發送至Elasticsearch存儲,最后使用Kibana進行可視化展示,這種架構不足的是:

Logstash比較耗服務器資源,所以會增加應用服務器端的負載壓力。

圖片4.png

3****.2 Filebeat作為日志收集器****(****目前使用最多的是****這****種部署架構****,如果不需要logstash做過濾和監控告警等特殊處理,可以直接棄用logstash****)

該架構與第一種架構唯一不同的是:應用端日志收集器換成了Filebeat,Filebeat輕量,占用服務器資源少,將日志數據發送到Logstash或者Elasticsearch時,Filebeat 使用背壓敏感協議,以應對更多的數據量。如果 Logstash 或者Elasticsearch正在忙于處理數據,則會告訴 Filebeat 減慢讀取速度。一旦擁堵得到解決,Filebeat 就會恢復到原來的步伐并繼續傳輸數據,所以使用Filebeat作為應用服務器端的日志收集器,一般Filebeat會配合Logstash一起使用(logstash主要是對日志消息進行過濾和傳輸及監控告警),這種部署方式也是目前最常用的架構。

圖片3.png

3****.3 引入緩存隊列的部署架構

該架構在第二種架構的基礎上引入了Redis緩存隊列(還可以是其他消息隊列例如Kafka),將Filebeat收集到的數據發送至Redis,然后在通過Logstasth讀取Redis中的數據,這種架構主要是解決大數據量下的日志收集方案,使用緩存隊列主要是解決數據安全與均衡Logstash與Elasticsearch負載壓力。

圖片2.png

3****.4 以上三種架構的總結

第一種部署架構由于資源占用問題,現已很少使用,目前使用最多的是第二種部署架構,至于第三種部署架構除非是第二種架構不能滿足性能要求或者有其他需求,因為在數據量較大的情況下,Filebeat 使用壓力敏感協議向 Logstash 或 Elasticsearch 發送數據。如果 Logstash 正在繁忙地處理數據,它會告知 Filebeat 減慢讀取速度。擁塞解決后,Filebeat 將恢復初始速度并繼續發送數據。

四、搭建ELK

  1. 官方下載 :<u>https://www.elastic.co/cn/products</u>

版本:elasticsearch 5.6.12,logstash5.6.9,kibana5.3.0,filebeat5.6.3 四個版本(JDK需要1.8)

2、安裝filebeat

(1)解壓filebeat:tar zxvf filebeat-5.6.3-linux-x86_64

(2)filebeat-5.6.3-linux-x86_64目錄下編輯filebeat.yml文件

filebeat.prospectors:

  • type: log

    enabled: true

    Paths that should be crawled and fetched. Glob based paths.

    paths:

    • /var/log/*.log

----------------------------- Logstash output --------------------------------

output.logstash:

The Logstash hosts

hosts: ["192.168.97.3:5044"] #logstash服務iP和端口,如果有多個logstash,可以寫多個。

bin目錄下啟動filebeat,啟動命令:./filebeat -e -c filebeat.yml

3.安裝logstash

(1)解壓logstash:tar zxvf logstash-5.6.9.tar.gz

(2)在config目錄創建配置文件:logstash.conf

(3)logstash.conf 做好input ,filter,output三大塊, 其中input是吸取logs文件下的所有log后綴的日志文件,filter是一個過濾函數,這里不用配置,output配置了導入到

hosts為192.168.97.3:9200的elasticsearch中,每天建一個索引。

input {

 #file {

 #   type => "log"

 #   path => "/logs/*.log"

 #   start_position => "beginning"

 #}

 beats {

    port => 5044

 }

}

output {

stdout {

codec => rubydebug { }

}

elasticsearch {

hosts => "192.168.97.3:9200"

index => "log-%{+YYYY.MM.dd}"

}

}

(4)bin目錄下啟動logstash,啟動命令:./logstash -f ../config/logstash.conf,如果想要后臺運行啟動:./logstash -f ../config/logstash.conf &

4、安裝elasticSearch

elasticSearch啟動的時候需要注意,elasticSearch不能以root賬號啟動,所以還需要添加一個新賬戶。

4.1 解壓:tar zxvf elasticsearch-5.6.4.tar.gz

4.2 添加新賬戶:useradd es,

對新賬戶授權:chown -R es:es /usr/local/soft/elasticsearch-5.6.4

4.3安裝過程中可能會遇到如下幾個問題:

(1)max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解決方法:vi /etc/security/limits.conf

user hard nofile 65536

user soft nofile 65536

(2)max number of threads [1024] for user [apps] is too low, increase to at least [2048]

解決辦法:vi /etc/security/limits.d/90-nproc.conf

修改如下內容:

  • soft nproc 1024

修改為

  • soft nproc 2048

(3)max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解決辦法:vi /etc/sysctl.conf

添加下面配置:

vm.max_map_count=655360

并執行命令:

sysctl -p

4.4 切換用戶角色:su es ,在bin 目錄下啟動elasticSearch,啟動命令:./elasticsearch ,如果需要后臺啟動:./elasticsearch -d

以上elasticsearch只是單機安裝,集群安裝如下:

4.5 同一臺機器安裝三臺elasticsearch集群:cp -r elasticsearch-5.6.12 elasticsearch-n1、cp -r elasticsearch-5.6.12 elasticsearch-n2、cp -r elasticsearch-5.6.12 elasticsearch-n3。

elasticsearch-n1 目錄的config目錄下elasticsearch.yml文件編輯

cluster.name: my-es #集群名稱

node.name: node-01 # 節點名稱

node.master: true #主節點(候選)

node.data: true #存儲數據

network.host: 192.168.97.3

http.port: 9200 #es對外提供訪問的端口

transport.tcp.port: 9300 #es集群之間通信的端口

單播(unicast)協議,指定要發現的節點信息了,可以不指定端口[默認9300]

discovery.zen.ping.unicast.hosts: ["192.168.97.3","192.168.97.3:8300","192.168.97.3:7300"]

默認是1看到的具有master節點資格的最小數量,然后才能在集群中做操作。官方的推薦值是(N/2)+1,如果只有2個節點設為1

discovery.zen.minimum_master_nodes: 2

====================================================================

elasticsearch-n2 目錄的config目錄下elasticsearch.yml文件編輯

cluster.name: my-es

node.name: node-02

node.master: false

node.data: true

network.host: 192.168.97.3

http.port: 8200

transport.tcp.port: 8300

discovery.zen.ping.unicast.hosts: ["192.168.97.3","192.168.97.3:8300","192.168.97.3:7300"]

discovery.zen.minimum_master_nodes: 2

======================================================================

elasticsearch-n3 目錄的config目錄下elasticsearch.yml文件編輯

cluster.name: my-es

node.name: node-03

node.master: true

node.data: true

network.host: 192.168.97.3

http.port: 7200

transport.tcp.port: 7300

discovery.zen.ping.unicast.hosts: ["192.168.97.3","192.168.97.3:8300","192.168.97.3:7300"]

discovery.zen.minimum_master_nodes: 2

5.安裝kibana

(1)解壓:tar zxvf kibana-5.3.0-linux-x86_64.tar.gz

(2)在config目錄下的kibana.yml文件中指定一下你需要讀取的elasticSearch地址和可供外網訪問的bind地址就可以了

elasticsearch.url: "http://192.168.97.3:9200"

server.host: 0.0.0.0

(3)bin目錄下啟動kibana,啟動命令:./kibana ,如果想要后臺啟動 :./kibana &

注意:

在es和logstash都安裝成功后,一定要先往logstash里面寫入日志,直到es的索引創建成功再來啟動kibana。訪問:<u>http://localhost:5601</u> 此時會進入配置界面,如下所示:其中紅框的內容是es的索引名字正則表達式,和logstash里面(index => "log-%{+YYYY.MM.dd}")的一致。這里用log-*就可以匹配

圖片1.png
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內容