ELK 實作分散式log採集系統 - LUFOR129
文章推薦指數: 80 %
ELK 是由三個工具組成,Elasticsearch (E) 、Logstash (L) 、Kibana (K) 組成的Log 過濾、儲存、分析、視覺化系統,另外我們還需要一個叫Beat的工具來擔任 ...
GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWriteELK實作分散式log採集系統這禮拜恰好修的一門叫做企業電腦網路的課,正要報告ELK。
恰好上個禮拜台積電IT來我們學校徵才,給出了一張GGIT進入會用到的工具一覽圖,那碩士期間這些應該就是我們碩班的必修了。
台積IT技術圖,未來我就把這些工具一點一點的寫成文章吧!那今天先來講圖片中間的ELK,這篇會講解ELK的安裝、配置文件、使用方法。
ELK組成ELK是由三個工具組成,Elasticsearch(E)、Logstash(L)、Kibana(K)組成的Log過濾、儲存、分析、視覺化系統,另外我們還需要一個叫Beat的工具來擔任Log的採集工具。
ElasticSearch是整體系統的核心部分,是一個非關聯式資料庫以JSON格式儲存資料,擁有一個非常厲害的索引功能,默認為9200portLogstash是一個過濾器(不過其實本身也可以作為採集器),會把所有採集到的Log傳遞到logstash中。
logstash可以依照規則將Log分割並傳遞到ElasticSearch(文章之後用ES表示),默認是5044port。
Kibana是圖形化展示工具,將儲存在ES內的資料用各式各樣圖表呈現出來,默認是5601port。
Beats是Log採集工具,負責將本台電腦的Log檔取出傳遞到logstash做過濾,或是直接傳遞到ES儲存器起來。
整體流程如下:為何用ELK那為什麼會需要ELK來採集Log呢?過去系統不優嗎?來看看過去怎麼做,假如我今天想要採集Nginx的成功access的log,那通常會放在/var/log/nginx/access.log。
如果我們想要查詢baidu是否有來爬我們網站,那麼可以通過簡單的grep來達成。
但是用在現今的大型系統會發現三個問題,一個是一旦流量過大會使log檔爆量,當log檔爆量後會自動壓縮成gz檔這使得查找困難。
另一個是在現代的分散式系統,所有的log檔散布在各個分散式機台中,當我們需要查找特定Log時會很費力。
最後是爬取出來都是文字資料,要轉成老闆看得懂的圖表還要自己寫,很不方便。
知道ELK的好處後我們來說說如何安裝吧!一、ELK的安裝其實ELK安裝都大同小異,就是去官方網站下載。
DownloadElasticProducts|ElasticDownloadElasticsearch,Logstash,Kibana,andBeatsforfree,andgetstartedwithElasticAPM,ElasticAppSearch…www.elastic.co進入官網你可以選擇使用deb安裝或是直接下載linux_x86_64壓縮包解壓縮。
把ES、logstash、Kibana、beats都安裝下來,要注意的是beats分成很多種beats,如果想要採集log檔那麼應該選擇filebeat,因為log本質就是file。
在安裝ES之前,ES是基於JRE來撰寫的所以要確保系統內有JAVA並加入了系統變數,安裝JAVA。
#檢查有沒有javajava-version#安裝javasudoaptinstalldefault-jre#安裝JDKsudoaptinstalldefault-jdk#確認JDKjavac-version具體安裝方式我寫完後發現篇幅太長了,所以我就放在這裡給大家看吧ELK-HackMDOnascaleof0-10,howlikelyisitthatyouwouldrecommendHackMDtoyourfriends,familyorbusinessassociates?hackmd.io二、ELK+Filebeat配置文件我們舉一個實際的分散式系統的例子,今天我有兩台伺服器一台是在140.127開頭(高雄大學的),一台是140.115開頭(中央大學的)。
我想將中央大學與高雄大學的log檔都抓進中央大學的logstash並保存在中央大學的ES中。
詳細流程如下:1.Filebeat首先先來看filebeat的配置文件,如果你是用deb安裝那應該可以在/etc/filebeat/filebeat.yml上看到他,如果你是用解壓縮方式那文件應該在解壓縮後資料夾底下,修改yml。
記得開啟enable,還有你的paths是爬取log的目標支援使用通配符,比如你想匹配所有nginx下的accesslog檔,你可以寫/var/log/nginx/access.*。
然後tags是為了在傳送到logstash後這個log檔是從哪裡來的。
接著是output,output默認是直接輸出到ES中,不過我們這裡要改成output到中央的logstash中(默認5044port),因此將ESoutput都註解掉並在logstash中改為outputhost完成後就開始執行吧,執行指令如果你是deb安裝那就/usr/share/filebeat/filebeat-e-c/etc/filebeat/filebeat.yml,如果你用解壓縮方式,那麼filebeat執行檔與yml配置檔都在同一個資料夾內,直行即可
2.logstashlogstash就是過濾beats進來的東西,過濾規則遵循grok清理規則,具體是如何清理的可以看這一篇:ELK教學-LogstashGrokFilter建立欄位Logstash在ELK架構中,是負責把收到的純文字資料,做特定的規則處理,就可以變成指定的欄位。
建立欄位的好處是可以方便搜尋,而且也能做到比全文檢索更好的分析,可說是欄位切的好,查詢沒煩惱。
我個人認為Logstash…blog.johnwu.cc修改/etc/logstash/logstash-sample.conf,如果你是解壓縮方式安裝則在
logstash-sample.conf包含了logstash的input、filter、output。
舉個例子,假如今天beat爬取log檔為Alice|HELLOWORLD|33,我想經過清理將Alice放在name欄位、HELLOWORLD放在talk欄位、33放在age欄位。
依據grok規則在name欄位接受.*的正則表達,其他也相同。
最後會得到{name:"ALICE",talk:"HELLOWORLD",age:"33"}。
接著我們要輸出到ES(默認為9200port),ES本質是一個資料庫,因此我們需要建立table,只是要注意的是,ES的TABLE被稱作index。
我們需要對index取名字如下就是filebeat-2020.11.6-demo1,作為資料庫的表。
接著要將logstash打開,如果你是用解壓縮的方式安裝,開啟logstash的方式就是
ES、Kibana如果你是用deb安裝則開啟方式就是serviceelasticsearchstart、servicekibanastart。
如果你是解壓縮安裝則
你可以用localhost:5601來開啟kibana,或是如果你有調整service.host那就使用那個IPhost的5601來開啟kibana吧。
三、Kibana視覺化如果以上配置文件與安裝都成功,現在對目標logappend一些資料應該能夠在kibana上發現了。
不果你一進去肯定是發現什麼都看不到的,那是因為你尚未將ES內的index匯入進kibana。
方法如下,進入stackmanagement:這麼一來就可以在Discover看到傳入的清理過的log檔了。
記住要調整右上角的時間區間喔。
接下來是圖表,打開Visualize,隨便選一張圖,在bucket的aggregration選擇terms作為聚合方式。
大致上ELK的過程就算是完成了。
MorefromLUFOR129Follow中央大學資管碩二Lovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedLUFOR129182Followers中央大學資管碩二FollowMorefromMediumHackingSkillsBufferoverflowusingImmunityDebuggerICTFellaHowtoRetrievetheBitLockerRecoveryKeyfromAzureAD — ICTFellaTusharjadhavNAGIOSCLIENTINSTALATIONSCRIPTAnandMaragurAzureDevOps:CI/CDtodeployaPythonwebapptoAzureAppServiceonLinuxHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1【Day01】ELK環境建置與介紹
什麼是ELK. ELK其實不是一個software (「・ω・)「 ELK是由elastic這間公司所開發的三個software(Elastic search、Logstash、Kibana) ...
- 2ELK Stack - AWS
ELK Stack 是一個縮略字,用於描述由三個熱門專案組成的堆疊:Elasticsearch、Logstash 和Kibana。ELK Stack 通常稱為Elasticsearch,可讓您彙...
- 3ELK Stack:Elasticsearch 的开发者倾心打造
那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和Kibana。Elasticsearch 是一个搜索和分析引擎。
- 410 分鐘帶你了解Elastic (ELK) 是什麼? | 歐立威科技
ELK 是取自三個開源產品的字首作為縮寫分別為:Elasticsearch、Logstash 和Kibana。ELK 提供中心化的日誌功能,協助用戶發現伺服器與應用程式中的 ...
- 5The ELK Stack: From the Creators of Elasticsearch | Elastic
"ELK" is the acronym for three open source projects: Elasticsearch, Logstash, and Kibana. Elastic...