ELK部署安裝以及配置


一可很、什么是ELK

?????????ELK是Elasticsearch + Logstash + Kibana 這種架構(gòu)的簡(jiǎn)寫。這是一種日志分平臺(tái)析的架構(gòu)藐守。從前我們用shell三劍客(grep, sed, awk)來(lái)分析日志, 雖然也能對(duì)付大多數(shù)場(chǎng)景荸频,但當(dāng)日志量大留晚,分析頻繁印蔗,并且使用者可能不會(huì)shell三劍客的情況下扒最, 配置方便,使用簡(jiǎn)單华嘹,并且分析結(jié)果更加直觀的工具(平臺(tái))就誕生了吧趣,它就是ELK。 ELK是開源的耙厚,并且社區(qū)活躍强挫,用戶眾多。當(dāng)然國(guó)內(nèi)也有一些收費(fèi)的薛躬,比較好用的日志分析平臺(tái)纠拔,比如日志易(日志易的同事趕緊給我打錢,畢竟這廣告打的好)泛豪。?


二稠诲、ELK常見的幾種架構(gòu)

1 Elasticsearch + Logstash + Kibana

這是一種最簡(jiǎn)單的架構(gòu)。這種架構(gòu)诡曙,通過(guò)logstash收集日志臀叙,Elasticsearch分析日志,然后在Kibana(web界面)中展示价卤。這種架構(gòu)雖然是官網(wǎng)介紹里的方式劝萤,但是往往在生產(chǎn)中很少使用。

2?Elasticsearch + Logstash + filebeat + Kibana

與上一種架構(gòu)相比慎璧,這種架構(gòu)增加了一個(gè)filebeat模塊床嫌。filebeat是一個(gè)輕量的日志收集代理,用來(lái)部署在客戶端胸私,優(yōu)勢(shì)是消耗非常少的資源(較logstash)厌处, 所以生產(chǎn)中,往往會(huì)采取這種架構(gòu)方式岁疼,但是這種架構(gòu)有一個(gè)缺點(diǎn)阔涉,當(dāng)logstash出現(xiàn)故障, 會(huì)造成日志的丟失捷绒。

3 Elasticsearch + Logstash + filebeat + redis(也可以是其他中間件瑰排,比如kafka) + Kibana

這種架構(gòu)是上面那個(gè)架構(gòu)的完善版,通過(guò)增加中間件暖侨,來(lái)避免數(shù)據(jù)的丟失椭住。當(dāng)Logstash出現(xiàn)故障,日志還是存在中間件中字逗,當(dāng)Logstash再次啟動(dòng)京郑,則會(huì)讀取中間件中積壓的日志显押。目前我司使用的就是這種架構(gòu),我個(gè)人也比較推薦這種方式傻挂。

架構(gòu)圖:


ELK架構(gòu)圖

說(shuō)明: logstash節(jié)點(diǎn)和elasticsearch節(jié)點(diǎn)可以根據(jù)日志量伸縮數(shù)量乘碑, filebeat部署在每臺(tái)需要收集日志的服務(wù)器上。


三金拒、安裝部署

1. redis安裝部署

? ? 這個(gè)不做介紹兽肤,但是因?yàn)閞edis在這里充當(dāng)中間件,所以最好先安裝redis绪抛,并且啟動(dòng)

2. filebeat安裝部署

? ? ?filebeat是一款輕量級(jí)的數(shù)據(jù)采集器资铡,需要部署在每臺(tái)需要收集日志的機(jī)器上。安裝和配置過(guò)程很方便幢码,如果機(jī)器很多笤休,可以配合使用批量部署工具進(jìn)行安裝。

1) 安裝

linux 平臺(tái)使用 rpm安裝

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.2.2-x86_64.rpmsudo rpm -vi filebeat-5.2.2-x86_64.rpm

?上面安裝的是5.2.2版本症副。這個(gè)版本要和后面的其他組件版本保持一致店雅,否則可能會(huì)出現(xiàn)兼容性問(wèn)題。其他平臺(tái)的安裝方法贞铣,可以在官方文檔中找到?filebeat安裝

2) 配置

配置文件是yml格式的闹啦,對(duì)格式有嚴(yán)格的要求,因?yàn)楹?jiǎn)書排版的問(wèn)題辕坝,我就直接貼圖片了窍奋。


典型filebeat.yml配置

1) 日志輸入:

filebeat.prospectors模塊用來(lái)指定日志文件的來(lái)源。在這個(gè)配置文件中酱畅, 總共接收三個(gè)日志文件琳袄,分別是

/data/logs/php/errors.log? ?/data/logs/nginx/www_error.log /data/logs/php/www.slow.log

input_type 指定日志類型,在這里是log纺酸, 應(yīng)該也可以是json窖逗。

paths指定日志文件路徑。

document_type:這個(gè)字段是用來(lái)給日志打標(biāo)記的吁峻。?

fields: 也是打標(biāo)記滑负,主要為了后面日志分析查找的方便,存儲(chǔ)的時(shí)候也會(huì)根據(jù)fields分類存儲(chǔ)用含,相同fields的數(shù)據(jù)存在同一個(gè)redis key中

fields_under_root: 如果該選項(xiàng)設(shè)置為true, 則該fields會(huì)存儲(chǔ)在top-level中帮匾。

tail_files: 這個(gè)選項(xiàng)如果設(shè)置為true啄骇,則讀取日志文件的新內(nèi)容,而忽略原有的內(nèi)容瘟斜,一般要設(shè)置為true


2)日志輸出

output.redis:指定輸出到redis

hosts:指定redis主機(jī)缸夹,可以指定多臺(tái)痪寻。

password:redis密碼,redis默認(rèn)沒(méi)有密碼虽惭,在這里設(shè)為空就行

fields_under_root: 和前面對(duì)應(yīng)橡类,top-level的存儲(chǔ)key

tail_files: 和前面對(duì)應(yīng)

keys:指定存入redis中的key, 在這個(gè)配置文件中芽唇,不同的日志文件被存到不同的key顾画。

db: 指定存在redis中的db編號(hào)(redis默認(rèn)安裝有16個(gè)databases,0~15匆笤, 默認(rèn)是存儲(chǔ)在db0中的)


3) 啟動(dòng)

配置完成后研侣,就可以啟動(dòng)filebeat了,但是如果日志量很大的話炮捧,千萬(wàn)要注意redis可能會(huì)被撐爆庶诡,因?yàn)楝F(xiàn)在還未配置Logstash,即現(xiàn)在只有filebeat往redis中寫數(shù)據(jù)咆课,有生產(chǎn)者末誓,沒(méi)有消費(fèi)者,就會(huì)造成數(shù)據(jù)積壓书蚪。所以如果日志量很大基显,先不要啟動(dòng)。

我們生產(chǎn)環(huán)境是用supervisor管理fielbeat的善炫,配置好supervisisor之后撩幽,執(zhí)行

supervisorctl start filebeat

啟動(dòng)filebeat 。如果你對(duì)supervisor不熟箩艺,又想用它的話窜醉,可以去了解下,這是一個(gè)不錯(cuò)的任務(wù)管理工具艺谆。supervisor的配置

[program:filebeat]

command=/data/app/filebeat/filebeat -e -c filebeat.yml

directory=/data/app/filebeat

logfile=/data/app/filebeat/run.log

autorestart=true


3 logstash 安裝配置

1) 環(huán)境準(zhǔn)備

? ? 安裝logstash需要依賴于java環(huán)境榨惰,具體需要安裝哪個(gè)版本的jdk,請(qǐng)參考官方文檔静汤。 我這邊logstash版本是5.2. 查看官方文檔琅催,需要的是jdk1.8.0


jdk環(huán)境

如何安裝jdk,不在這里介紹虫给,網(wǎng)上一大堆教程藤抡。

2)? 安裝

先下載指定版本

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.2.2.tar.gz? ? ?

解壓到指定目錄

tar xf logstash-5.2.0.tar.gz -C /data/app/

值得一提的是,這種安裝方式無(wú)需編譯抹估,解壓后就可以使用缠黍。你也可以使用yum安裝。

解壓后查看一下目錄結(jié)構(gòu)


logstash目錄結(jié)構(gòu)

其中config一般用來(lái)存放日志文件药蜻, bin用來(lái)存放logstash啟動(dòng)文件或者二進(jìn)制文件瓷式。

logstash啟動(dòng)方式

bin/log -f? config/你的配置文件

-f用來(lái)指定配置文件替饿。ok, 那接下來(lái)我們來(lái)寫一個(gè)配置文件贸典。


logstash典型配置

logstash配置文件最基本的需要指定日志的輸入和日志的輸出视卢。可以把logstash理解成一個(gè)處理日志的中間件廊驼,所以需要input和output

在這個(gè)配置文件里:

input是redis据过, 需要指定redis的host 和port以及db,還要指明數(shù)據(jù)的類型蔬充,list表示這是一個(gè)redis的list對(duì)象蝶俱。key指明redis中的key名稱。

output 是elasticsearch饥漫, hosts指明elasticsearch的ip和端口榨呆,index指明這個(gè)日志存在elasticsearch中的索引名稱。

這是最簡(jiǎn)單的配置庸队,這樣配置即可啟動(dòng)logstash积蜻,但如果你想針對(duì)日志做一些預(yù)處理,或者一些信息的過(guò)濾彻消,可以使用logstash提供的模塊竿拆,具體參見官方文檔。

這里介紹下filter模塊


帶filter的logstash配置文件

input和output和上面一樣宾尚,不做介紹丙笋。 filter模塊中有個(gè)grok,可以用來(lái)匹配日志煌贴。根據(jù)你日志的格式來(lái)編寫match規(guī)則御板。怎么書寫規(guī)則,可以參考官方文檔牛郑,這里大概講下怠肋。 使用%{} 這種形式匹配一個(gè)變量,DATA匹配任何字符淹朋, 比如上面的 %{DATA:timestamp} 表示這個(gè)日志第一域是時(shí)間笙各, 大括號(hào)后面有個(gè)空格,空格前面表示第一域) 將時(shí)間賦值給timestamp變量(名稱可以自定義)础芍, 后面同理杈抢, 第二域是代表告警級(jí)別(賦值給level), 第三域是告警信息(賦值給msg), 第四域是客戶ip地址(賦值給client_ip)...

這個(gè)匹配規(guī)則剛開始寫起來(lái)可能有些費(fèi)勁,需要調(diào)試者甲。我當(dāng)時(shí)調(diào)試也花了不少時(shí)間春感。


ok,現(xiàn)在我們有了配置文件虏缸,即可啟動(dòng)logstash鲫懒。?

./bin/logstash -f ./config/conf.d/error.log.nginx

建議使用supervisor管理進(jìn)程。


supervisor中的logstash配置

如果啟動(dòng)有報(bào)錯(cuò)刽辙,根據(jù)報(bào)錯(cuò)一步步解決問(wèn)題窥岩。

4 elasticsearch安裝

1)依賴

和logstash一樣,elasticsearch 同樣需要依賴jdk宰缤,因?yàn)榍懊嬉呀?jīng)安裝jdk環(huán)境颂翼,所以這一步可以跳過(guò)。

2)下載安裝包并解壓

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz

tar -xvf elasticsearch-5.2.2.tar.gz -C? /data/app/

和logstash一樣慨灭,不需要編譯朦乏,解壓后既可以使用。但需要配置文件

3)配置


elasticsearch典型配置文件


配置文件說(shuō)明:

cluster.name: 指定elasticsearch 集群的名稱氧骤,集群內(nèi)的所有elasticsearch需要配置相同的cluster.name

node.name: 當(dāng)前節(jié)點(diǎn)名稱呻疹,需要集群內(nèi)唯一。

path.data: 數(shù)據(jù)存放位置

path.logs: elasticsearch的日志存放位置

http.port: 端口

discovery.zen.ping.unicast.hosts: elasticsearch節(jié)點(diǎn)筹陵。

下面兩個(gè)應(yīng)該是elasticsearch處理相關(guān)的配置刽锤,可以參考官方文檔。

關(guān)于elasticsearch節(jié)點(diǎn)朦佩,這里說(shuō)明下并思,最好配置成單數(shù),且數(shù)量要大于等于3. 因?yàn)榧盒枰x舉主從语稠。

4)啟動(dòng)

配置完之后宋彼,啟動(dòng)elasticsearch。 注意仙畦,如果你使用root用戶啟動(dòng)elasticsearch输涕,就會(huì)報(bào)錯(cuò),啟動(dòng)失敗议泵,這是因?yàn)閑lasticsearch不允許用root用戶啟動(dòng)占贫。可以創(chuàng)建一個(gè)用戶先口,用來(lái)啟動(dòng)elasticsearch

groupadd elasticsearch

useradd -g elasticsearch elasticsearch

上面命令用來(lái)創(chuàng)建elasticsearch組和用戶型奥。創(chuàng)建完之后,因?yàn)槟J(rèn)對(duì)剛才的elasticsearch安裝目錄沒(méi)有相關(guān)權(quán)限碉京,還需要權(quán)限賦值(更改目錄所屬組和用戶)厢汹。

chown -R elasticsearch:elasticsearch? /data/app/elasticsearch/

ok,現(xiàn)在可以啟動(dòng)了谐宙。

/data/app/elasticsearch/bin/elasticsearch -d

-d 表示后臺(tái)運(yùn)行烫葬。

還是一樣,如果有報(bào)錯(cuò),就解決報(bào)錯(cuò)搭综。

5 kibana安裝配置

1) 下載安裝包并解壓

和上面的logstash以及elasticsearch一樣垢箕,無(wú)需編譯,下載并解壓即可使用兑巾。

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.2.2-linux-x86_64.tar.gz

tar -xzf kibana-5.2.2-linux-x86_64.tar.gz -C /data/app/

2) 配置

解壓后条获,進(jìn)入到kibana目錄,修改配置文件


kibana典型配置

server.host:指明服務(wù)運(yùn)行的地址

elasticsearch.uri: 指明elasticsearch運(yùn)行的地址和端口

kibana.index: 指明kibana使用的索引蒋歌,這個(gè)是自定義的帅掘。

tilemap.uri:指明了使用地圖api, 在這里使用了高德地圖的api


配置完成堂油。

3) 啟動(dòng)

/data/app/kibana/bin/kibana

如果正常啟動(dòng)修档,則可以通過(guò)默認(rèn)的5601端口訪問(wèn)kibana 的web界面。


6 nginx?

上一步府框,當(dāng)kibana安裝啟動(dòng)之后吱窝,并且可以正常訪問(wèn),ELK的架構(gòu)算是完成了寓免。但是癣诱,如果是生產(chǎn)環(huán)境,我的建議是用nginx代理kibana web袜香。 nginx安裝配置很簡(jiǎn)單撕予,網(wǎng)上一大堆,請(qǐng)自行安裝配置蜈首。

至此实抡,我們完成了filebeat + redis + logstash + elasticsearch + kibana + nginx 的這種架構(gòu)。通過(guò)訪問(wèn)網(wǎng)頁(yè)欢策, 即可查詢相關(guān)日志吆寨。

至于kibana怎么使用,如何創(chuàng)建索引踩寇,這個(gè)該教程就不作介紹了啄清,可以參考網(wǎng)上的一些資料,或者如果你英文水平過(guò)關(guān)俺孙,直接看官方文檔吧辣卒。


kibana截圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市睛榄,隨后出現(xiàn)的幾起案子荣茫,更是在濱河造成了極大的恐慌,老刑警劉巖场靴,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啡莉,死亡現(xiàn)場(chǎng)離奇詭異港准,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)咧欣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門浅缸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人该押,你說(shuō)我怎么就攤上這事疗杉≌笱瑁” “怎么了蚕礼?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)梢什。 經(jīng)常有香客問(wèn)我奠蹬,道長(zhǎng),這世上最難降的妖魔是什么嗡午? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任囤躁,我火速辦了婚禮,結(jié)果婚禮上荔睹,老公的妹妹穿的比我還像新娘狸演。我一直安慰自己,他們只是感情好僻他,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布宵距。 她就那樣靜靜地躺著,像睡著了一般吨拗。 火紅的嫁衣襯著肌膚如雪满哪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天劝篷,我揣著相機(jī)與錄音哨鸭,去河邊找鬼。 笑死娇妓,一個(gè)胖子當(dāng)著我的面吹牛像鸡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哈恰,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼只估,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蕊蝗?” 一聲冷哼從身側(cè)響起仅乓,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蓬戚,沒(méi)想到半個(gè)月后夸楣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年豫喧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了石洗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡紧显,死狀恐怖讲衫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情孵班,我是刑警寧澤涉兽,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站篙程,受9級(jí)特大地震影響枷畏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虱饿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一拥诡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧氮发,春花似錦渴肉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扇售,卻和暖如春前塔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背承冰。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工华弓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人困乒。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓寂屏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親娜搂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子迁霎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容