企业日志分析ELK(Logstash+Elasticsearch+Kibana)介绍及搭建
目錄
- 一、ELK概述
- 1、ELK日志分析系統(tǒng)
- 2、ELK中日志處理步驟
- 二、Elasticsearch介紹
- 1、Elasticsearch的基礎(chǔ)核心概念
- 2、分片和副本
- 三、LogStash概述
- 1、LogStash的主要組件
- 2、LogStash主機(jī)分類
- 四、Kibana概述
- 五、部署ELK日志分析系統(tǒng)
- 1、配置elasticsearch環(huán)境
- 2、部署elasticsearch軟件
- 3、安裝elasticsearch-head插件
- 4、安裝logstash
- 5、安裝kibana
- 總結(jié)
- elk 是什么 ?
- 為什么要用elk?
一、ELK概述
1、ELK日志分析系統(tǒng)
ELK是由Elasticsearch、Logstash、Kiban三個(gè)開源軟件的組合。在實(shí)時(shí)數(shù)據(jù)檢索和分析場(chǎng)合,三者通常是配合共用,而且又都先后歸于 Elastic.co 公司名下,故有此簡稱。
2、ELK中日志處理步驟
- 1、將日志進(jìn)行集中化管理(beats)
- 2、將日志格式化(Logstash),然后將格式化后的數(shù)據(jù)輸出到Elasticsearch
- 3、對(duì)格式化后的數(shù)據(jù)進(jìn)行索引和存儲(chǔ)(Elasticsearch)
- 4、前端數(shù)據(jù)的展示(Kibana)
二、Elasticsearch介紹
- Elasticsearch是一個(gè)基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是第二流行的企業(yè)搜索引擎。設(shè)計(jì)用于云計(jì)算能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定、可靠,快速,安裝使用方便。
1、Elasticsearch的基礎(chǔ)核心概念
- 1、接近實(shí)時(shí)(NRT)
- 2、集群(cluster)
- 3、節(jié)點(diǎn)(node)
- 4、索引(index) 索引相對(duì)于關(guān)系型數(shù)據(jù)庫的庫
- 類型(type) 類型相當(dāng)于關(guān)系型數(shù)據(jù)庫的表
- 文檔(document) 文檔相當(dāng)于關(guān)系型數(shù)據(jù)庫的列
2、分片和副本
在上述特性中,最重要的就是分片和副本,也是讓es數(shù)據(jù)庫(Elasticsearch)成為百度這些主流搜索引擎的主要原因,理論上能提升4倍的性能。
結(jié)合實(shí)際情況分析:索引存儲(chǔ)的數(shù)據(jù)可能超過單個(gè)節(jié)點(diǎn)的硬件限制,如一個(gè)10億文檔需1TB空間可能不適合存儲(chǔ)在單個(gè)節(jié)點(diǎn)的磁盤上,或者從單個(gè)節(jié)點(diǎn)搜索請(qǐng)求太慢了,為了解決這個(gè)問題,elasticsearch提供將索引分成多個(gè)分片的功能,當(dāng)在創(chuàng)建索引時(shí),可以定義想要分片的數(shù)量。每個(gè)分片就是一個(gè)全功能的獨(dú)立索引,可以位于集群中任何節(jié)點(diǎn)上。
- 分片的最主要的原因:
- 水平分割擴(kuò)展,增大存儲(chǔ)量
- 分布式并行跨分片操作,提供性能和吞吐量
分布式分片的機(jī)制和搜索請(qǐng)求的文檔如何匯總完全是有elasticsearch控制的,這些對(duì)用戶而言是透明的。
網(wǎng)絡(luò)問題等等其他問題可以在任何時(shí)候不期而至,為了健壯性,強(qiáng)烈建議要有個(gè)故障切換機(jī)制,無論何種故障以防止分片或者節(jié)點(diǎn)不可用,為此,elasticsearch讓我們將索引分片復(fù)制一份或多份,稱為分片副本或副本
- 副本也有兩個(gè)最主要的原因:
- 高可用性,以應(yīng)對(duì)分片或者節(jié)點(diǎn)故障,出于這個(gè)原因,分片副本要在不同的節(jié)點(diǎn)上
- 性能加強(qiáng),增加吞吐量,搜索可以并行在所有副本上執(zhí)行
總之,每個(gè)索引可以被分成多個(gè)分片。一個(gè)索引也可以被復(fù)制0次(意思是沒有復(fù)制)或多次。一旦復(fù)制了,每個(gè)索引就有了主分片(作為復(fù)制源的原來的分片)和復(fù)制分片(主分片的拷貝)之別。分片和副本的數(shù)量可以在索引創(chuàng)建的時(shí)候指定。在索引創(chuàng)建后,你可以在任何時(shí)候動(dòng)態(tài)地改變副本的數(shù)量,但是你事后不能改變分片的數(shù)量。
默認(rèn)情況下,Elasticsearch中的每個(gè)索引被分片5個(gè)主分片和1個(gè)副本,這意味著,如果你的集群中至少有兩個(gè)節(jié)點(diǎn),你的索引將會(huì)有5個(gè)主分片和另外5個(gè)副本分片(1個(gè)完全拷貝),這樣的話每個(gè)索引總共就有10個(gè)分片。
三、LogStash概述
- 一款強(qiáng)大的數(shù)據(jù)處理工具
- 可實(shí)現(xiàn)數(shù)據(jù)傳輸、格式處理、格式化輸出
- 數(shù)據(jù)輸入、數(shù)據(jù)加工(如過濾,改寫等)以及數(shù)據(jù)輸出
- 常用插件:Input、Filter Plugin、Output
- Input:收集源數(shù)據(jù)(訪問日志、錯(cuò)誤日志等)
- Filter Plugin:用于過濾日志和格式處理
- Output:輸出日志
1、LogStash的主要組件
- shipper:日志收集者:負(fù)責(zé)監(jiān)控本地日志文件的變化,及時(shí)把日志文件的最新內(nèi)容收集起來。通常,遠(yuǎn)程代理瑞(agent〉只需要運(yùn)行這個(gè)組件即可;
- Indexer:日志存儲(chǔ)者。負(fù)責(zé)接收日志并寫入到本地文件。
- Broker:日志Hub。負(fù)責(zé)連接多個(gè)shipper和多個(gè)Indexer
- search and storage:允許對(duì)事件進(jìn)行搜索和存儲(chǔ);
- web Interface:基于web的展示界面
正是由于以上組件在Logstash架構(gòu)中可獨(dú)立部署,才提供了更好的集群擴(kuò)展性
2、LogStash主機(jī)分類
- 代理主機(jī)(agent host):作為事件的傳遞者(shipper),將各種日志數(shù)據(jù)發(fā)送至中心主機(jī);只需運(yùn)行Logstash代理(agent)程序
- 中心主機(jī)(central host):可運(yùn)行包括中間轉(zhuǎn)發(fā)器(Broker)、索引器(Indexer)、搜索和存儲(chǔ)器(Search andstorage ) 、web界面端(web Interface)在內(nèi)的各個(gè)組件,以實(shí)現(xiàn)對(duì)日志數(shù)據(jù)的接收、處理和存儲(chǔ)
四、Kibana概述
- 一個(gè)針對(duì)Elasticsearch的開源分析及可視化平臺(tái)
- 搜索、查看存儲(chǔ)在Elasticsearch索引中的數(shù)據(jù)
- 通過各種圖表進(jìn)行高級(jí)數(shù)據(jù)分析及展示
- Kibana主要功能
- Elasticsearch無縫之集成
- Kibana架構(gòu)為Elasticsearch定制,可以將任何結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)加入Elasticsearch索引。Kibana還充分利用了Elasticsearch強(qiáng)大的搜索和分析功能。
- 整合數(shù)據(jù)
- Kibana能夠更好地處理海量數(shù)據(jù),并據(jù)此創(chuàng)建柱形圖、折線圖、散點(diǎn)圖、直方圖、餅圖和地圖。
- 復(fù)雜數(shù)據(jù)分析
- Kibana提升了Elasticsearch分析能力,能夠更加智能地分析數(shù)據(jù),執(zhí)行數(shù)學(xué)轉(zhuǎn)換并且根據(jù)要求對(duì)數(shù)據(jù)切割分塊。
- 讓更多團(tuán)隊(duì)成員收益
- 強(qiáng)大的數(shù)據(jù)庫可視化接口讓各業(yè)務(wù)崗位都能夠從數(shù)據(jù)集合受益。
- 接口靈活,分享更容易
- 使用Kibana可以更加方便地創(chuàng)建、保存、分享數(shù)據(jù),并將可視化數(shù)據(jù)快速交流。
- 配置簡單
- Kibana的配置和啟用非常簡單,用戶體驗(yàn)非常友好。Kibana自帶Web服務(wù)器,可以快速啟動(dòng)運(yùn)行。
- 可視化多數(shù)據(jù)源
- Kibana可以非常方便地把來自Logstash、ES-Hadoop、Beats或第三方技術(shù)的數(shù)據(jù)整合到Elasticsearch,支持的第三方技術(shù)包括Apache flume、 Fluentd 等。
- 簡單數(shù)據(jù)導(dǎo)出
- Kibana可以方便地導(dǎo)出感興趣的數(shù)據(jù),與其它數(shù)據(jù)集合并融合后快速建模分析,發(fā)現(xiàn)新結(jié)果。
- Elasticsearch無縫之集成
五、部署ELK日志分析系統(tǒng)
- 配置ELK日志分析集群
- 使用Logstash收集日志
- 使用Kibana查看分析日志
案例環(huán)境
| node1 | CentOS7 | 192.168.172.10 | Elasticsearch/Kibana |
| node2 | CentOS7 | 192.168.172.20 | Elasticsearch |
| apache | CentOS7 | 192.168.172.30 | httpd / Logstash |
| 客戶機(jī)(宿主機(jī)) | Windows10 | 192.168.172.1 |
關(guān)防火墻和系統(tǒng)安全機(jī)制
更改主機(jī)名
1、配置elasticsearch環(huán)境
node1(192.168.172.10)
node2(192.168.172.20)
2、部署elasticsearch軟件
node1(192.168.172.10)
node2(192.168.172.20)
(1)安裝elasticsearch—rpm包
上傳elasticsearch-5.5.0.rpm到/opt目錄下
(2)加載系統(tǒng)服務(wù)
systemctl daemon-reload systemctl enable elasticsearch.service(3)更改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bakvim /etc/elasticsearch/elasticsearch.yml #17行;取消注釋,修改;集群名字 cluster.name: my-elk-cluster #23行;取消注釋,修改;節(jié)點(diǎn)名字(node2修改成node2) node.name: node1 #33行;取消注釋,修改;數(shù)據(jù)存放路徑 path.data: /data/elk_data #37行;取消注釋,修改;日志存放路徑 path.logs: /var/log/elasticsearch #43行;取消注釋,修改;不在啟動(dòng)的時(shí)候鎖定內(nèi)存 bootstrap.memory_lock: false #55行;取消注釋,修改;提供服務(wù)綁定的IP地址,0.0.0.0代表所有地址 network.host: 0.0.0.0 #59行;取消注釋;偵聽端口為9200(默認(rèn)) http.port: 9200 #68行;取消注釋,修改;集群發(fā)現(xiàn)通過單播實(shí)現(xiàn),指定要發(fā)現(xiàn)的節(jié)點(diǎn) node1、node2 discovery.zen.ping.unicast.hosts: ["node1", "node2"]
(4)創(chuàng)建數(shù)據(jù)存放路徑并授權(quán)
mkdir -p /data/elk_data chown elasticsearch:elasticsearch /data/elk_data/(5)啟動(dòng)elasticsearch是否成功開啟
systemctl start elasticsearch netstat -antp |grep 9200(6)查看節(jié)點(diǎn)信息
在宿主機(jī)192.168.172.1訪問
(7)檢驗(yàn)集群健康狀態(tài)
在宿主機(jī)192.168.172.1訪問
(8)查看集群狀態(tài)
在宿主機(jī)192.168.172.1訪問
3、安裝elasticsearch-head插件
- 上述查看集群的方式,及其不方便,我們可以通過安裝elasticsearch-head插件后,來管理集群
(1)編譯安裝node組件依賴包
node1(192.168.172.10)
node2(192.168.172.20)
(2)安裝phantomjs(前端框架)
node1(192.168.172.10)
node2(192.168.172.20)
(3)安裝elasticsearch-head(數(shù)據(jù)可視化工具)
node1(192.168.172.10)
node2(192.168.172.20)
(4)修改主配置文件
node1(192.168.172.10)
node2(192.168.172.20)
(5)啟動(dòng)elasticsearch-head
node1(192.168.172.10)
node2(192.168.172.20)
(6)使用elasticsearch-head插件查看集群狀態(tài)
http://192.168.172.10:9100 在Elasticsearch 后面的欄目中輸入 http://192.168.172.10:9200http://192.168.172.20:9100 在Elasticsearch 后面的欄目中輸入 http://192.168.172.20:9200(7)創(chuàng)建索引
node1(192.168.172.10)
創(chuàng)建索引為index-demo,類型為test
回到宿主機(jī)192.168.172.1
打開瀏覽器輸入地址,查看索引信息http://192.168.172.10:9100- 下圖可以看見索引默認(rèn)被分片5個(gè),并且有一個(gè)副本
4、安裝logstash
- 收集日志輸出到elasticsearch中
(1)安裝Apahce服務(wù)(httpd)
apache(192.168.172.30)
(2)安裝Java環(huán)境
apache(192.168.172.30)
(3)安裝logstash
apache(192.168.172.30)
(4)測(cè)試logstash命令
apache(192.168.172.30)
定義輸入和輸出流:
輸入采用標(biāo)準(zhǔn)輸入,輸出采用標(biāo)準(zhǔn)輸出(類似管道)
使用rubydebug顯示詳細(xì)輸出,codec為一種編解碼器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'使用 Logstash 將信息寫入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.172.10:9200"] } }'在宿主機(jī)192.168.172.1上訪問
查看索引信息
(5)在Apache主機(jī)上做對(duì)接配置
apache(192.168.172.30)
Logstash配置文件主要由三部分組成:input、output、filter(根據(jù)需要)
在宿主機(jī)192.168.172.1上訪問
查看索引信息
5、安裝kibana
node1(192.168.172.10)
上傳kibana-5.5.1-x86_64.rpm 到/opt目錄 cd /opt rpm -ivh kibana-5.5.1-x86_64.rpmcd /etc/kibana/ cp kibana.yml kibana.yml.bakvim kibana.yml #2行;取消注釋;kibana打開的端口(默認(rèn)5601) server.port: 5601 #7行;取消注釋,修改;kibana偵聽的地址 server.host: "0.0.0.0" #21行;取消注釋,修改;和elasticsearch建立聯(lián)系 elasticsearch.url: "http://192.168.172.10:9200" #30行;取消注釋;在elasticsearch中添加.kibana索引 kibana.index: ".kibana" systemctl start kibana.service systemctl enable kibana.service
在宿主機(jī)192.168.172.1上訪問
首次登錄創(chuàng)建一個(gè)索引 名字:system-* (這是對(duì)接系統(tǒng)日志文件)
然后點(diǎn)最下面的出面的create 按鈕創(chuàng)建
然后點(diǎn)最左上角的Discover按鈕 會(huì)發(fā)現(xiàn)system-*信息
然后點(diǎn)下面的host旁邊的add 會(huì)發(fā)現(xiàn)右面的圖只有 Time 和host 選項(xiàng)了 這個(gè)比較友好
(6)對(duì)接Apache主機(jī)的Apache 日志文件(訪問日志、錯(cuò)誤日志)
apache(192.168.172.30)
在宿主機(jī)192.168.172.1上訪問
打開輸入http://192.168.172.30,制造點(diǎn)訪問記錄
打開瀏覽器 輸入http://192.168.172.10:9100/ 查看索引信息
能發(fā)現(xiàn)apache_error-2021.05.11和apache_access-2021.05.11
打開瀏覽器 輸入http://192.168.172.10:5601點(diǎn)擊左下角有個(gè)management選項(xiàng)—index patterns—create index pattern
分別創(chuàng)建apache_error-* 和 apache_access-* 的索引
總結(jié)
elk 是什么 ?
Elastic Stack(舊稱ELK Stack),是一種能夠從任意數(shù)據(jù)源抽取數(shù)據(jù),并實(shí)時(shí)對(duì)數(shù)據(jù)進(jìn)行搜索、分析和可視化展現(xiàn)的數(shù)據(jù)分析框架。(hadoop同一個(gè)開發(fā)人員)ELK 其實(shí)并不是一款軟件,而是一整套解決方案,是三個(gè)軟件產(chǎn)品的首字母縮寫 Elasticsearch:負(fù)責(zé)日志檢索和儲(chǔ)存 Logstash:負(fù)責(zé)日志的收集和分析、處理 Kibana:負(fù)責(zé)日志的可視化 這三款軟件都是開源軟件,通常是配合使用,而且又先后歸于 Elastic.co 公司名下,故被簡稱為 ELK為什么要用elk?
服務(wù)器眾多,組件眾多,日志眾多發(fā)現(xiàn)問題困難,技能要求高ELK組件在海量日志系統(tǒng)的運(yùn)維中,可用于解決: 分布式日志數(shù)據(jù)集中式查詢和管理 系統(tǒng)監(jiān)控,包含系統(tǒng)硬件和應(yīng)用各個(gè)組件的監(jiān)控 故障排查 安全信息和事件管理 報(bào)表功能業(yè)務(wù)場(chǎng)景:《實(shí)時(shí)日志分析展現(xiàn)》日志主要包括系統(tǒng)日志、應(yīng)用程序日志和安全日志。系統(tǒng)運(yùn)維和開發(fā)人員可以通過日志了解服務(wù)器軟硬件信息、檢查配置過程中的錯(cuò)誤及錯(cuò)誤發(fā)生的原因。經(jīng)常分析日志可以了解服務(wù)器的負(fù)荷,性能安全性,從而及時(shí)采取措施糾正錯(cuò)誤。通常,日志被分散的儲(chǔ)存不同的設(shè)備上。如果你管理數(shù)十上百臺(tái)服務(wù)器,你還在使用依次登錄每臺(tái)機(jī)器的傳統(tǒng)方法查閱日志。這樣是不是感覺很繁瑣和效率低下。當(dāng)務(wù)之急我們使用集中化的日志管理,例如:開源的 syslog ,將所有服務(wù)器上的日志收集匯總。集中化管理日志后,日志的統(tǒng)計(jì)和檢索又成為一件比較麻煩的事情,一般我們使用 grep 、 awk和 wc 等 Linux 命令能實(shí)現(xiàn)檢索和統(tǒng)計(jì),但是對(duì)于要求更高的查詢、排序和統(tǒng)計(jì)等要求和龐大的機(jī)器數(shù)量依然使用這樣的方法難免有點(diǎn)力不從心。開源實(shí)時(shí)日志分析 ELK 平臺(tái)能夠完美的解決我們上述的問題, ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三個(gè)開源工具組成。總結(jié)
以上是生活随笔為你收集整理的企业日志分析ELK(Logstash+Elasticsearch+Kibana)介绍及搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存32000:挑战人类极限,揭秘记忆奥
- 下一篇: OpenStack 的部署T版(一)——