ELK
可能是現(xiàn)如今最為流行,并且更新速度最快的開(kāi)源大數(shù)據(jù)產(chǎn)品,由elastic
公司維護(hù)并完全開(kāi)源。
ELK分別為:
-
Elasticsearch
: 核心中的核心組件侧啼,基于著名的全文檢索引擎lucence
的一個(gè)分布式版本。由于擴(kuò)展成分布式堪簿,容量和性能得到極大的提升痊乾,使得Elasticsearch
得以成為目前許多大數(shù)據(jù)產(chǎn)品和大數(shù)據(jù)架構(gòu)的核心組件。 -
Logstash
: 一個(gè)靈活的數(shù)據(jù)傳輸和處理系統(tǒng)椭更,在beats出來(lái)之前哪审,還負(fù)責(zé)進(jìn)行數(shù)據(jù)收集。Logstash
的任務(wù)虑瀑,就是將各種各樣的數(shù)據(jù)湿滓,經(jīng)過(guò)配置轉(zhuǎn)化規(guī)則,統(tǒng)一化存入Elasticsearch
舌狗。使用Ruby
開(kāi)發(fā)的Logstash
在靈活性上叽奥,確實(shí)非常出色。不過(guò)性能一直是被詬病的問(wèn)題痛侍。 -
Kibana
: 展示組件朝氓,基于angularjs
。從Elasticsearch
中讀取數(shù)據(jù)并展示主届。具有強(qiáng)大而且靈活的界面配置赵哲。
由于Logstash
在數(shù)據(jù)收集上并不出色,而且作為agent君丁,性能并不達(dá)標(biāo)枫夺。elastic
發(fā)布了beats
系列輕量級(jí)采集組件。至此谈截,elastic
形成了一個(gè)完整的生態(tài)鏈和技術(shù)棧,成為大數(shù)據(jù)市場(chǎng)的佼佼者。本文我們重點(diǎn)來(lái)談一談beats
簸喂。
beats
beats是一組輕量級(jí)采集程序的統(tǒng)稱(chēng)毙死,這些采集程序包括并不限于:
- filebeat: 進(jìn)行文件和目錄采集,主要用于收集日志數(shù)據(jù)喻鳄。
- metricbeat: 進(jìn)行指標(biāo)采集扼倘,指標(biāo)可以是系統(tǒng)的,也可以是眾多中間件產(chǎn)品的除呵,主要用于監(jiān)控系統(tǒng)和軟件的性能再菊。
- packetbeat: 通過(guò)網(wǎng)絡(luò)抓包、協(xié)議分析颜曾,對(duì)一些請(qǐng)求響應(yīng)式的系統(tǒng)通信進(jìn)行監(jiān)控和數(shù)據(jù)收集纠拔,可以收集到很多常規(guī)方式無(wú)法收集到的信息。
- Winlogbeat: 專(zhuān)門(mén)針對(duì)windows的event log進(jìn)行的數(shù)據(jù)采集泛豪。
- Heartbeat: 系統(tǒng)間連通性檢測(cè)稠诲,比如icmp, tcp, http等系統(tǒng)的連通性監(jiān)控。
以上是elastic
官方支持的5種beats诡曙,事實(shí)上臀叙,偉大的開(kāi)源力量早已創(chuàng)造出大大小小幾十甚至上百中beats,只有你沒(méi)想到的价卤,沒(méi)有beats做不到的劝萤。
為什么說(shuō)beats是輕量級(jí)的呢?主要是beats在數(shù)據(jù)收集層面上并不進(jìn)行過(guò)于復(fù)雜的數(shù)據(jù)處理慎璧,只是將數(shù)據(jù)簡(jiǎn)單的組織并上報(bào)給上游系統(tǒng)床嫌。另一方便,由于beats采用go語(yǔ)言開(kāi)發(fā)炸卑,go是一種系統(tǒng)編程語(yǔ)言既鞠,具有并發(fā)友好以及部署方便的特點(diǎn),能夠在不依賴(lài)虛擬機(jī)的情況下運(yùn)行盖文,包大小通常也比較小嘱蛋。在跨平臺(tái)上方面,beats與go語(yǔ)言保持一致支持linux五续,windows洒敏,freebsd和macos。beats的性能疙驾,明顯好于大哥Logstash
凶伙,一個(gè)設(shè)計(jì)良好的go語(yǔ)言程序基本可以達(dá)到甚至超過(guò)java程序。
beats的架構(gòu)
beats之所以有如此強(qiáng)大的開(kāi)源支持它碎,一個(gè)很大的原因是設(shè)計(jì)良好的代碼框架函荣。
libbeat
是beats的核心包显押,其中封裝一個(gè)輸出模塊(Publisher
),輸出模塊可以負(fù)責(zé)將收集到的數(shù)據(jù)發(fā)送給Logstash
或者Elasticsearch
傻挂。由于go語(yǔ)言設(shè)計(jì)有channel乘碑,收集數(shù)據(jù)的邏輯代碼與Publisher
都是通過(guò)channel通信的,耦合度的最低的金拒。因此兽肤,開(kāi)發(fā)一個(gè)收集器,完全不需要知道Publisher
的存在绪抛,程序運(yùn)行的時(shí)候自然就“神奇”的把數(shù)據(jù)發(fā)往服務(wù)端了资铡。除此之外,還封裝了配置文件處理幢码、日志處理笤休、守護(hù)化等功能,方便開(kāi)發(fā)者拓展beats的能力蛤育。
beats的生態(tài)
beats的官方維護(hù)可以說(shuō)非惩鸸伲活躍的,筆者跟蹤beats很長(zhǎng)時(shí)間瓦糕,也做過(guò)代碼貢獻(xiàn)底洗,對(duì)此深有體會(huì)。所以beats有一個(gè)非常健康的生態(tài)系統(tǒng)咕娄。
被官方收錄亥揖,但官方不負(fù)責(zé)維護(hù)的beat,稱(chēng)為Community beats圣勒,目前有幾十種费变,皆為開(kāi)源貢獻(xiàn)的。還有許多散落在社區(qū)的beat圣贸。