干货实战|基于Elastic Stack的日志分析系统
Elastic Stack簡(jiǎn)介
Elastic Stack是Elastic公司旗下的一系列軟件總稱,包括Elasticsearch、Logstash、Kibana和Beats。Elasticsearch是一個(gè)分布式搜索引擎,負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)、查詢,支持高并發(fā)的寫(xiě)入與查詢;Logstash是動(dòng)態(tài)數(shù)據(jù)收集管道,可以進(jìn)行數(shù)據(jù)的清洗、格式化等處理;Kibana是基于Elasticsearch的數(shù)據(jù)可視化平臺(tái),提供種類豐富的圖表來(lái)呈現(xiàn)數(shù)據(jù);Beats通常部署在生產(chǎn)環(huán)境下,掃描日志文件并向Elasticsearch或Logstash發(fā)送數(shù)據(jù),在本文中我們使用FileBeat。
Elastic Stack的應(yīng)用非常廣泛,常見(jiàn)的有日志管理與分析、指標(biāo)分析、性能監(jiān)測(cè)、應(yīng)用搜索等。本篇文章中我們借助騰訊云的Elasticsearch、使用Elastic Stack搭建自動(dòng)化流轉(zhuǎn)過(guò)程的監(jiān)控與統(tǒng)計(jì)系統(tǒng)。
準(zhǔn)備工作
日志消息協(xié)議
前邊提到,Logstash是可以進(jìn)行數(shù)據(jù)處理的,所以對(duì)于日志文件的格式并沒(méi)有要求,只需要后期在Logstash處借助grok進(jìn)行格式化即可。方便起見(jiàn),在本次使用中我們統(tǒng)一了日志消息協(xié)議,并統(tǒng)一使用json格式單獨(dú)存儲(chǔ),因此省去了Logstash處的格式化操作。
圖1. 自動(dòng)化流轉(zhuǎn)日志消息協(xié)議
圖1為我們定義的日志協(xié)議,其中l(wèi)og_type字段用于在Elasticsearch中建立索引(相當(dāng)于我們熟悉的數(shù)據(jù)表),phase、finish_time是我們后期監(jiān)控與統(tǒng)計(jì)主要的劃分維度,miles是我們監(jiān)控的指標(biāo)。其他的一些字段是我們業(yè)務(wù)中會(huì)使用到的信息,主要用于后期統(tǒng)計(jì)使用。
日志獲取方式
在我們的使用中,日志的產(chǎn)生源有兩大類:已完成開(kāi)發(fā)的和正在進(jìn)行開(kāi)發(fā)的。對(duì)于前者,為了避免重新開(kāi)發(fā)帶來(lái)的工作量,我們采取定時(shí)掃庫(kù)的方式“自給自足”的產(chǎn)生日志消息;對(duì)于后者,我們要求開(kāi)發(fā)根據(jù)上述日志消息協(xié)議生產(chǎn)日志。兩種日志都需要通過(guò)部署在環(huán)境內(nèi)的FileBeat發(fā)送至Logstash,再由Logstash發(fā)送至Elasticsearch中。
數(shù)據(jù)接入
日志的準(zhǔn)備
以Python為例,將日志消息msg使用fp.write(json.dumps(msg))輸出到文件中
Beats-Logstash-Elasticsearch接入
Logstash配置(conf)
上述配置中,Logstash監(jiān)聽(tīng)本地8888端口、并使用json解碼器對(duì)消息進(jìn)行解析。對(duì)于解析后的消息,根據(jù)消息中的log_type字段發(fā)送至Elasticsearch對(duì)應(yīng)的索引中,同時(shí)在命令行中輸出。
Logstash啟動(dòng)
./bin/logstash -c logstash.conf(可以使用nohup)
FileBeat配置(yml)
上述配置中,FileBeat定時(shí)掃描/usr/local/app/wsd_cron_agent/script/logs/路徑下的log文件,發(fā)送至遠(yuǎn)端的Logstash處。
FileBeat啟動(dòng)
./filebeat -e -c filebeat.yml(可以使用nohup)
接下來(lái)FileBeat和Logstash就會(huì)自動(dòng)將路徑下的日志文件傳輸至Elasticsearch了。
Kibana可視化
對(duì)于第一次接入的數(shù)據(jù),首先要做的是創(chuàng)建索引,操作方法是[Management]->[Index Patterns]->[Create Index Pattern]->Index pattern中輸入索引名->單擊[Create]
圖2. Kibana建立索引
之后是使用Kibana自帶的visualize進(jìn)行數(shù)據(jù)的可視化,這里就是根據(jù)自身需求進(jìn)行設(shè)置即可。可以在Dashboard中制作一個(gè)自定義的監(jiān)控窗口,可以清楚直接的看到各個(gè)自動(dòng)化流程的運(yùn)轉(zhuǎn)情況。
圖3. 地圖中業(yè)流轉(zhuǎn)Dashboard
一些需要注意的問(wèn)題 & 可以改進(jìn)的地方
總的來(lái)說(shuō),Elastic Stack搭建日志分析系統(tǒng)是非常簡(jiǎn)單、方便的,不過(guò)需要注意以下幾點(diǎn):
Elasticsearch是一種非關(guān)系型數(shù)據(jù)庫(kù),不能做連表查詢操作,因此必須將所有信息都放在一條消息/一例數(shù)據(jù)中
請(qǐng)避免重復(fù)日志消息的產(chǎn)生
目前得到的消息是騰訊云在和Elastic官方談合作,之后會(huì)有一些插件(如報(bào)警功能)加入,使得監(jiān)控和分析功能更加強(qiáng)大
由于之前沒(méi)有接觸過(guò)Elastic Stack,所以也是磕磕碰碰的做了一些嘗試,一些地方為了避免出錯(cuò)做了簡(jiǎn)化,之后可以再進(jìn)一步優(yōu)化以提升性能:
需要單獨(dú)產(chǎn)生日志消息,對(duì)于開(kāi)發(fā)不夠方便;可以考慮在Logstash出增加grok操作對(duì)日志進(jìn)行格式化后再送入Elasticsearch
FileBeat和Logstash的負(fù)載均衡存在進(jìn)一步提升的可能
中生代技術(shù)社區(qū) Elasticsearch在線分享直播預(yù)告
﹀
﹀
﹀
2020-04-15?15:00 線上Elasticsearch大數(shù)據(jù)搜索和分析應(yīng)用 網(wǎng)絡(luò)研討會(huì)
演講者:朱杰 Jerry
現(xiàn)在是 Elastic 解決方案架構(gòu)師,專注于 Elastic Stack的解決方案的設(shè)計(jì)和咨詢。在加入Elastic之前,Jerry有十五年軟件開(kāi)發(fā)經(jīng)驗(yàn),涉及服務(wù)器端程序、Web、移動(dòng)開(kāi)發(fā)等多個(gè)領(lǐng)域。在大數(shù)據(jù)分析領(lǐng)域也有十年實(shí)踐經(jīng)驗(yàn),熟悉Hadoop 生態(tài)、Elastic Stack。
演講者:李季
北京云科創(chuàng)凱信息技術(shù)有限公司董事長(zhǎng)兼CEO,公司創(chuàng)始人,保險(xiǎn)業(yè)務(wù)專家,計(jì)算機(jī)技術(shù)專家。曾在PICC總部研發(fā)中心任主管項(xiàng)目經(jīng)理,負(fù)責(zé)保險(xiǎn)核心業(yè)務(wù)系統(tǒng)研發(fā)管理工作。10年+信息技術(shù)公司運(yùn)營(yíng)管理經(jīng)驗(yàn)。
Elasticsearch在當(dāng)今大數(shù)據(jù)搜索和分析領(lǐng)域熱度非常之高,穩(wěn)居DB-Engine搜索引擎排行榜首,本次研討會(huì)為你講解Elasticsearch搜索能力的演進(jìn),強(qiáng)大的搜索和聚合能力,適用的大數(shù)據(jù)應(yīng)用場(chǎng)景,和Hadoop生態(tài)的配合使用,使用高級(jí)安全特性保護(hù)您的大數(shù)據(jù)安全。并邀請(qǐng)我們合作伙伴云科凱創(chuàng)介紹相關(guān)行業(yè)應(yīng)用案例。
報(bào)名方式:識(shí)別圖片二維碼或閱讀原文報(bào)名
想要加入中生代直播群的小伙伴,請(qǐng)?zhí)砑尤褐?strong>大白的微信
申請(qǐng)備注(姓名+公司+技術(shù)方向)才能通過(guò)哦!
點(diǎn)在看,讓更多人看到!
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的干货实战|基于Elastic Stack的日志分析系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Fully Convolutional
- 下一篇: 17岁少年攻击航司系统获刑4年!!!