基于Docker搭建ELK 日志系統(tǒng)的方法
背景需求:
業(yè)務(wù)發(fā)展越來越龐大,服務(wù)器越來越多 各種訪問日志、應(yīng)用日志、錯(cuò)誤日志量越來越多,導(dǎo)致運(yùn)維人員無法很好的去管理日志 開發(fā)人員排查問題,需要到服務(wù)器上查日志,不方便 運(yùn)營人員需要一些數(shù)據(jù),需要我們運(yùn)維到服務(wù)器上分析日志。
ELK介紹:
ELK是三個(gè)開源軟件的縮寫,分別為:Elasticsearch 、 Logstash以及Kibana , 它們都是開源軟件。 目前由于原本的ELK Stack成員中加入了 Beats 工具所以已改名為Elastic Stack。 Beats,它是一個(gè)輕量級的日志收集處理工具(Agent),占用資源少,適合于在各個(gè)服務(wù)器上搜集日志后傳輸給Logstash,官方也推薦此工具。
搭建步驟:
經(jīng)過上述描述,大家也應(yīng)該稍微有點(diǎn)了解了,想要搭建這個(gè)平臺至少是需要3/4個(gè)軟件的(可以沒有filebeat)。
- kibana 用于展示
- elasticsearch 用于檢索
- logstash 用于過濾
- filebeat 用于收集日志
本篇文章假定你已經(jīng)有了docker環(huán)境,并且有基本的docker使用經(jīng)驗(yàn)
拉取鏡像(統(tǒng)一版本可以避免很多坑):
docker pull kibana:6.8.2 docker pull elasticsearch:6.8.2 docker pull mobz/elasticsearch-head:5 # es的一個(gè)插件 docker pull logstash:6.8.2 docker pull docker.elastic.co/beats/filebeat:6.8.2 # 很慢 可以嘗試設(shè)置代理或者更改docker鏡像源
Docker 設(shè)置代理在linux中可以使用ClashX 訂閱url,然后docker 連到代理。有桌面的可以直接更改,沒有的也可以創(chuàng)建配置文件進(jìn)行更改 ⇒ 傳送門
另外把docker的內(nèi)存給多一點(diǎn)兒,避免到時(shí)候卡頓。
構(gòu)建ES:
docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch -e "discovery.type=single-node" elasticsearch:6.8.2
瀏覽器訪問(curl也行):localhost:9200 出現(xiàn)下面的結(jié)果則說明啟動成功:
若出現(xiàn)錯(cuò)誤,請查錯(cuò)誤日志。
創(chuàng)建ES-HEAD:
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5
同樣訪問localhost:9100,看到下面的結(jié)果即為成功:
在es-head連接es可能是連不上的,是因?yàn)閑s沒有開啟跨域,進(jìn)入es容器內(nèi)部 找到config文件下的elasticsearch.yml,在此文件中增加:
http.cors.enabled: true http.cors.allow-origin: "*"
然后重啟es后es-head就可以連接上es。
開啟Kibana:
docker run -d -p 5601:5601 --link elasticsearch -e ELASTICSEARCH_URL=http://elasticsearch:9200 kibana:6.8.2
這里就是http://elasticsearch:9200,不要更改,前面使用了–link,會在kibana容器hosts文件中加入elasticsearch ip地址,這樣我們就直接通過定義的name來訪問es服務(wù)了。
容器啟動成功后,es-head里面應(yīng)該就能看到下面的信息:
訪問localhost:5601會出現(xiàn)下面的結(jié)果:
至此我們的kibana已經(jīng)成功跑起來了,es也已經(jīng)跑起來了,接下來就是收集日志的服務(wù)了。
構(gòu)建filebeat 和 logstash:
首先聲明,這兩兄弟需要點(diǎn)兒配置文件,我們想整個(gè)文件夾統(tǒng)一存放這兩份配置文件:
mkdir elktest # 在主目錄下 即:~/elktest 路徑 cd elktest touch filebeat.yml touch logstash.conf
添加配置文件
vim filebeat.yml
filebeat.prospectors: - paths: - /home/elk/logs/user/a.log multiline: pattern: ^\d{4} negate: true match: after fields: doc_type: user - paths: - /home/elk/logs/service/a.log multiline: pattern: ^\d{4} negate: true match: after fields: doc_type: service output.logstash: # 輸出地址 hosts: ["logstash:5044"]
vim logstash.conf
input { beats { port => "5044" } } filter { json { source => "message" } } output { stdout { codec => rubydebug } elasticsearch { hosts => [ "elasticsearch:9200" ] index => "%{[fields][doc_type]}-%{+YYYY.MM.dd}" } }
當(dāng)前你應(yīng)該還在elktest目錄下,由于我們沒有日志來源,所以本片的方式是手動創(chuàng)建日志,建立一個(gè)日志文件夾:
mkdir logdir
自己構(gòu)建一些日志,隨便寫什么,文件及文件夾名稱不要改動,已經(jīng)在配置文件中對應(yīng)好了,構(gòu)建完成之后你的目錄結(jié)構(gòu)應(yīng)該長這個(gè)樣子:
創(chuàng)建容器:
docker run -it --name logstash --link elasticsearch -d -p 5044:5044 -v ~/elktest/logstash.conf:/usr/share/logstash/pipeline/logstash.conf logstash:6.8.2 docker run --name filebeat --link logstash -d -v ~/elktest/filebeat.yml:/usr/share/filebeat/filebeat.yml -v ~/elktest/logdir/user/:/home/elk/logs/user/ -v ~/elktest/logdir/service/:/home/elk/logs/service/ docker.elastic.co/beats/filebeat:6.8.2
此時(shí)你的es-head應(yīng)該長這個(gè)樣子:
如果不是這個(gè)樣子,可以查看容器是否運(yùn)行,是否有錯(cuò)誤日志,另外也可以到logstash容器中ping elasticsearch,filebeat容器中ping logstash,檢查路徑是否有問題。
Kibana顯示: 創(chuàng)建索引向:
創(chuàng)建完成后去查看,添加自己想要查看的字段,內(nèi)容在message里(剛好就是我們在a.log中的內(nèi)容):
到此為止,我們的elk已經(jīng)搭建完成了,成功搭建的小伙伴晚飯給自己加個(gè)雞腿!?。?!
以上就是基于Docker搭建ELK 日志系統(tǒng)的方法的詳細(xì)內(nèi)容,更多關(guān)于Docker搭建ELK日志系統(tǒng)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Docker創(chuàng)建openresty容器的實(shí)現(xiàn)步驟
OpenResty可以用來構(gòu)建高性能的Web應(yīng)用和服務(wù),本文主要介紹了Docker創(chuàng)建openresty容器的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03解決docker pull被復(fù)位出現(xiàn)的問題
這篇文章主要介紹了解決docker pull被復(fù)位出現(xiàn)的問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09Docker使用的個(gè)人學(xué)習(xí)總結(jié)
最近時(shí)不時(shí)會用到很多開發(fā)工具,無奈裝了太多無用軟件,所以不想安裝太多開發(fā)軟件在電腦上,所以想到了用docker容器來配置開發(fā)環(huán)境適應(yīng)不同開發(fā)內(nèi)容,這篇文章主要給大家總結(jié)了關(guān)于Docker使用的一些個(gè)人學(xué)習(xí)知識點(diǎn),需要的朋友們下面來一起看看吧。2017-06-06docker部署nginx并且實(shí)現(xiàn)https的方法步驟
啟用HTTPS可以提高網(wǎng)站的安全性、可信度,同時(shí)符合法規(guī)要求,本文主要介紹了docker部署nginx并且實(shí)現(xiàn)https的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07Docker鏡像構(gòu)建之docker commit的使用
本文主要介紹了Docker鏡像構(gòu)建之docker commit的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04