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