一般提到監(jiān)控,很多人就會(huì)想到監(jiān)控服務(wù)器運(yùn)行狀態(tài),網(wǎng)絡(luò)運(yùn)行狀態(tài)。其實(shí)由于業(yè)務(wù)需要,服務(wù)器和網(wǎng)絡(luò)設(shè)備每時(shí)每刻產(chǎn)生的海量日志也同樣的重要。

為什么選用ELK?
- 首先我們來了解一下ELK:
ELK是Elasticsearch、Logstash、Kibana的簡(jiǎn)稱,這三者是核心套件,但并非全部。
Elasticsearch是實(shí)時(shí)全文搜索和分析引擎,提供搜集、分析、存儲(chǔ)數(shù)據(jù)三大功能;是一套開放REST和JAVA API等結(jié)構(gòu)提供高效搜索功能,可擴(kuò)展的分布式系統(tǒng)。它構(gòu)建于Apache Lucene搜索引擎庫(kù)之上。
Logstash是一個(gè)用來搜集、分析、過濾日志的工具。它支持幾乎任何類型的日志,包括系統(tǒng)日志、錯(cuò)誤日志和自定義應(yīng)用程序日志。它可以從許多來源接收日志,這些來源包括 syslog、消息傳遞(例如 RabbitMQ)和JMX,它能夠以多種方式輸出數(shù)據(jù),包括電子郵件、websockets和Elasticsearch。
Kibana是一個(gè)基于Web的圖形界面,用于搜索、分析和可視化存儲(chǔ)在 Elasticsearch指標(biāo)中的日志數(shù)據(jù)。它利用Elasticsearch的REST接口來檢索數(shù)據(jù),不僅允許用戶創(chuàng)建他們自己的數(shù)據(jù)的定制儀表板視圖,還允許他們以特殊的方式查詢和過濾數(shù)據(jù)。
- ELK的優(yōu)勢(shì)
1.開源免費(fèi)
ELK是屬于免費(fèi)開源軟件,在初期使用階段無需承擔(dān)高額的軟件費(fèi)用。
2.分布式部署以及擴(kuò)容方便
Elasticsearch的高度擴(kuò)展性,這一點(diǎn)類似于Ceph,能夠在新節(jié)點(diǎn)加入以后,索引index會(huì)自動(dòng)在新節(jié)點(diǎn)平衡。擺脫了以往單節(jié)點(diǎn)性能瓶頸。
3.用途
ELK開源解決方案開源用在故障排查、監(jiān)控預(yù)警、關(guān)聯(lián)事件、數(shù)據(jù)分析等等,用途及其廣泛。
linux部署ELK
本次Linux采用centos7.6來部署ELK。
[root@elk ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
和之前文章類似,這次我還是采用Docker,(原因就是無需部署各種環(huán)境)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 安裝Elasticsearch
先去docker官網(wǎng)獲取最新的Elasticsearch鏡像,如下圖最新版本是7.9.3

拉取最新的Elasticsearch鏡像:
docker pull elasticsearch:7.9.3
創(chuàng)建網(wǎng)絡(luò),讓其他組件運(yùn)行在同一個(gè)網(wǎng)絡(luò)下:
docker network create yunweichongzi

運(yùn)行elasticsearch容器:
docker run -d --name elasticsearch --net yunweichongzi -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.9.3

瀏覽器或者用curl訪問IP+9200端口,出現(xiàn)如下圖的提示代表elasticsearch安裝成功。

2.安裝Kibana
同樣拉取kibana鏡像,注意一定要和elasticsearch的版本一致。
docker pull kibana:7.9.3

運(yùn)行kibana容器。
docker run -d --name kibana --net yunweichongzi -p 5601:5601 kibana:7.9.3
通過瀏覽器訪問ip+5601,訪問到下面的頁(yè)面代表安裝成功。

3.安裝Logstash
拉取同版本的鏡像
docker pull logstash:7.9.3
創(chuàng)建兩個(gè)文件一個(gè)是logstash.yml,另一個(gè)是test.conf
cat logstash.yml
path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash
cat conf.d/test.conf
input {
beats {
port => 5044
codec => "json"
}
}
output {
elasticsearch { hosts => ["172.18.0.2:9200"] }
stdout { codec => rubydebug }
}
cat conf.d/test.conf
input {
beats {
port => 5044
codec => "json"
}
}
output {
elasticsearch { hosts => ["172.18.0.2:9200"] }
stdout { codec => rubydebug }
}

啟動(dòng)kibana容器:
docker run -it -d -p 5044:5044 --name logstash --network yunweichongzi --privileged=true -v /root/elk/logstash.yml:/usr/share/logstash/config/logstash.yml -v /root/elk/conf.d/:/usr/share/logstash/conf.d/ logstash:7.9.3
最后檢查一下容器運(yùn)行情況。到此ELK就安裝完成了,但是還缺一個(gè)filebeat(這個(gè)等下一篇文章檢索日志的時(shí)候安裝)。


出現(xiàn)上圖界面以后就可以了。
windows安裝了ELK
是不是覺得Linux太麻煩,Windows版的就簡(jiǎn)單了。這里為了篇幅就不詳細(xì)一步一步截圖了。
Windows版的elk安裝官網(wǎng)有詳細(xì)的教程:

下載圖中的軟件,進(jìn)行安裝,然后按照官網(wǎng)的提示即可運(yùn)行ELK

總結(jié)
無論是通過Linux還是windows安裝,都是可以達(dá)到對(duì)日志進(jìn)行監(jiān)控的目的。下一篇文章就會(huì)詳細(xì)的介紹如何使用ELK對(duì)服務(wù)器日志,網(wǎng)站日志,服務(wù)日志進(jìn)行監(jiān)控與告警。

希望大家能夠多多關(guān)注,多年致力于互聯(lián)網(wǎng)搬磚,各種互聯(lián)網(wǎng)技術(shù)都稍有涉獵。如果大家遇到一些問題可以私信或者留言給我。我們可以一起討論!