电竞比分网-中国电竞赛事及体育赛事平台

分享

Logtail 從入門到精通:開啟日志采集之旅

 刀首木 2018-04-27

云棲君導(dǎo)讀:目前Logtail已承載阿里云全站、所有云產(chǎn)品服務(wù)、全球各Region部署、阿里巴巴集團(tuán)(淘寶、天貓、菜鳥等)上重要服務(wù)的數(shù)據(jù)采集。每天采集接近百萬(wàn)服務(wù)器上數(shù)PB的實(shí)時(shí)數(shù)據(jù),對(duì)接數(shù)千個(gè)應(yīng)用與消費(fèi)者。


什么是日志


提到日志,很多人的第一印象就是系統(tǒng)打到本地的Log文件,出問(wèn)題的時(shí)候看一下這個(gè)Log文件,用來(lái)排查問(wèn)題。更進(jìn)一步可以根據(jù)這個(gè)Log文件做實(shí)時(shí)的監(jiān)控、第三方審計(jì)、入侵檢測(cè)、行為分析、數(shù)據(jù)大盤制作等等。



馬老師說(shuō)過(guò):阿里巴巴不是零售,我們是一家數(shù)據(jù)公司,為了數(shù)據(jù)才做電商、做物流、賣東西。我們認(rèn)為日志是記錄世間人和物所有行為的一種方式,是數(shù)據(jù)中極其重要又極其龐大的一個(gè)組成部分。會(huì)產(chǎn)生日志的設(shè)備有:服務(wù)器、交換機(jī)、手機(jī)、傳感器、IOT設(shè)備、智能設(shè)備...產(chǎn)生的日志類型有:網(wǎng)絡(luò)的七層日志、OS日志、訂單日志、支持日志、GPS定位日志、用戶點(diǎn)擊日志...產(chǎn)生的日志形式有:文本文件、二進(jìn)制文件、syslog、udp日志...如何充分利用這些日志資源才是我們的核心技術(shù)和競(jìng)爭(zhēng)力。


什么是日志采集


數(shù)據(jù)的價(jià)值是什么?數(shù)據(jù)的價(jià)值在于把數(shù)據(jù)變成行動(dòng)。這里一個(gè)非常重要的過(guò)程是數(shù)據(jù)分析。提到數(shù)據(jù)分析,大部分人首先想到的都是Hadoop、流計(jì)算、機(jī)器學(xué)習(xí)等數(shù)據(jù)加工的方式。如果從整個(gè)過(guò)程來(lái)看,數(shù)據(jù)分析其實(shí)包含了4個(gè)過(guò)程:采集,存儲(chǔ),計(jì)算和理解四個(gè)主要步驟:



  • 采集:從各種產(chǎn)生數(shù)據(jù)的源頭,將數(shù)據(jù)集中到存儲(chǔ)系統(tǒng)。包括硬盤上的歷史數(shù)據(jù)、用戶網(wǎng)頁(yè)的點(diǎn)擊、傳感器等等。

  • 存儲(chǔ):以各種適合計(jì)算的模式集中式存儲(chǔ)數(shù)據(jù),其中既包含大規(guī)模的存儲(chǔ)系統(tǒng)(例如數(shù)倉(cāng)),也有例如臨時(shí)的存儲(chǔ)(例如Kafka類消息中間件)。

  • 計(jì)算:形態(tài)多種多樣,但大部分計(jì)算完成后會(huì)將結(jié)果再放入存儲(chǔ),而這個(gè)過(guò)程也可能迭代多次。

  • 理解:利用機(jī)器學(xué)習(xí)、可視化、通知等手段提煉出結(jié)論性或具有代表意義的數(shù)據(jù)并將結(jié)果呈現(xiàn)出來(lái)。



數(shù)據(jù)的采集是一門很大的范疇,從實(shí)時(shí)性上和每次傳輸數(shù)據(jù)規(guī)模上分,一般可以分為3類:


  • 實(shí)時(shí)采集:例如access log、database change log等

  • 定時(shí)任務(wù):例如每隔5分鐘從FTP或數(shù)據(jù)源去批量導(dǎo)出數(shù)據(jù)

  • 線下導(dǎo)數(shù)據(jù):例如郵寄硬盤、AWS Snowmobile 卡車、阿里云的閃電立方等
    從數(shù)據(jù)的價(jià)值以及體量上而言,實(shí)時(shí)數(shù)據(jù)采集毫無(wú)疑問(wèn)最重要的,而其中最大的部分就是日志實(shí)時(shí)采集。


為何使用Agent


實(shí)現(xiàn)日志的實(shí)時(shí)采集一般有2種方式:


  • 直接上傳:在應(yīng)用程序(或依賴的框架)中將日志直接上傳到服務(wù)端。例如各種日志上傳的SDK、Log4j的appender、docker driver等

  • 通過(guò)Agent采集:應(yīng)用本身只產(chǎn)生日志,由Agent作為代理采集到服務(wù)端。例如將日志打到磁盤、syslog轉(zhuǎn)發(fā)、從中間框架(docker engine、mysql、應(yīng)用自帶的monitor模塊)中抽取等


下面我們來(lái)詳細(xì)剖析一下二者區(qū)別:




從以上分析來(lái)看,兩種采集方式各有優(yōu)缺點(diǎn)、也有各自適應(yīng)的場(chǎng)景:


  • 直采:適用于對(duì)性能/資源要求較高的場(chǎng)景,例如IOT/智能設(shè)備等對(duì)于資源要求極高,沒(méi)有額外的資源獨(dú)立部署采集Agent;例如負(fù)載均衡設(shè)備、CDN節(jié)點(diǎn)等日志產(chǎn)生量極高(每秒數(shù)百M(fèi)B或者數(shù)GB的日志),只有直接上傳方能滿足性能要求

  • Agent采集:只要應(yīng)用可以將日志輸出(以文件形式保存到磁盤、syslog等)或者支持通用的接口拉取,Agent即可將日志采集到。大部分場(chǎng)景下松耦合、可擴(kuò)展性、可維護(hù)性相比Agent額外開銷更具優(yōu)勢(shì)


為何選用Logtail


日志采集Agent有很多,例如Logstash、Fluentd、Beats系列(FileBeats、MetricBeats、Packetbeat、Winlogbeat、Auditbeat、Heartbeat)、Nxlog、Telegraf、Heka、Nifi、Logspout、Datadog agent、Sematext agent、Splunk addon系列、Sumologic collector。。。


業(yè)界有那么多的Agent,每個(gè)Agent各種各樣的功能和特性看起來(lái)讓人眼花繚亂。但圍繞日志采集這個(gè)最原始的需求展開,無(wú)非也就是功能、性能、穩(wěn)定性、運(yùn)維代價(jià)這4個(gè)方面:


  • 功能:作為選擇Agent最基本需求,主要分為輸入源、數(shù)據(jù)處理(除日志解析外,還包括過(guò)濾、壓縮等)、數(shù)據(jù)輸出。

  • 性能:不同類型Agent之間會(huì)有數(shù)十倍的性能差距。當(dāng)日志產(chǎn)生速率較低且資源充足時(shí),此項(xiàng)可以忽略;但大部分情況下采集Agent是作為整個(gè)集群的基礎(chǔ)軟件,在集群規(guī)模龐大的情況下,即使每臺(tái)機(jī)器節(jié)省1%的CPU、10MB的內(nèi)存也是很大一筆資金節(jié)省。

  • 穩(wěn)定性:穩(wěn)定的重要性無(wú)需多言,除保證自身運(yùn)行的穩(wěn)定外,Agent還需保證不能超出限定的資源使用Quota,以免對(duì)應(yīng)用產(chǎn)生影響。

  • 運(yùn)維代價(jià):日志采集的運(yùn)維主要包括:Agent部署、動(dòng)態(tài)伸縮、配置管理、Agent升級(jí)、Agent異常監(jiān)控。當(dāng)只有數(shù)臺(tái)主機(jī)時(shí),Agent可以使用人肉的方式進(jìn)行管理,但當(dāng)集群規(guī)模擴(kuò)大到數(shù)百及以上時(shí),運(yùn)維必須依賴有效的機(jī)制。


阿里云日志服務(wù)也有自己的采集Agent--Logtail。目前l(fā)ogtail已承載阿里云全站、所有云產(chǎn)品服務(wù)、全球各Region部署、阿里巴巴集團(tuán)(淘寶、天貓、菜鳥等)上重要服務(wù)的數(shù)據(jù)采集。每天采集接近百萬(wàn)服務(wù)器上數(shù)PB的實(shí)時(shí)數(shù)據(jù),對(duì)接數(shù)千個(gè)應(yīng)用與消費(fèi)者。之所以使用Logtail作為采集Agent也是經(jīng)過(guò)上述四個(gè)方面的綜合考慮。由于采集Agent數(shù)量眾多,這里我們選擇目前最主流的3款A(yù)gent進(jìn)行對(duì)比:



相對(duì)主流的采集Agent,Logtail在采集功能上有一定的不足,對(duì)于輸入源、處理方式等支持沒(méi)有開源軟件的多,但從目前的功能來(lái)看,可以滿足95%以上的日志采集需求。但日志采集并不是能夠采集到就可以。相對(duì)開源軟件,Logtail的優(yōu)勢(shì)是有集團(tuán)百萬(wàn)服務(wù)器、上萬(wàn)應(yīng)用的練兵環(huán)境,很多問(wèn)題純粹從Agent和開源社區(qū)的角度并不會(huì)考慮到。因此經(jīng)歷了數(shù)年的迭代優(yōu)化,在性能、穩(wěn)定性、運(yùn)維代價(jià)上,Logtail相對(duì)更加成熟,在性價(jià)比上具有絕對(duì)的優(yōu)勢(shì)。


Logtail相關(guān)概念


為了更好的了解日志采集,這里我們首先對(duì)日志采集中遇到的基本概念進(jìn)行簡(jiǎn)要的介紹。


概念介紹


  • 項(xiàng)目: 項(xiàng)目(Project)是日志服務(wù)中的資源管理單元,用于資源隔離和控制。您可以通過(guò)項(xiàng)目來(lái)管理某一個(gè)應(yīng)用的所有日志及相關(guān)的日志源。它管理著用戶的所有日志庫(kù)(Logstore),采集日志的機(jī)器配置等信息,同時(shí)它也是用戶訪問(wèn)日志服務(wù)資源的入口。

  • 日志庫(kù): 日志庫(kù)(Logstore)是日志服務(wù)中日志數(shù)據(jù)的采集、存儲(chǔ)和查詢單元。每個(gè)日志庫(kù)隸屬于一個(gè)項(xiàng)目,且每個(gè)項(xiàng)目可以創(chuàng)建多個(gè)日志庫(kù)。

  • Logtail客戶端: Logtail是一款執(zhí)行日志收集工作的Agent,一般安裝在需要收集日志的服務(wù)器上,作為獨(dú)立軟件運(yùn)行。

  • 機(jī)器組: 一個(gè)機(jī)器組包含一或多臺(tái)需要收集一類日志的機(jī)器。通過(guò)綁定一組Logtail配置到一個(gè)機(jī)器組,可以讓日志服務(wù)根據(jù)同樣的Logtail配置采集一個(gè)機(jī)器組內(nèi)所有服務(wù)器上的日志。

  • 采集配置: 是Logtail收集日志的策略集合,采集配置一般包括需要采集的數(shù)據(jù)源、解析方式、過(guò)濾方式等參數(shù),所有采集配置均在控制臺(tái)進(jìn)行管理。


各概念間關(guān)系



  1. 日志庫(kù)直接負(fù)責(zé)日志存儲(chǔ),所有Logtail采集的數(shù)據(jù)最終都會(huì)存儲(chǔ)到日志庫(kù)中。

  2. 日志庫(kù)由項(xiàng)目進(jìn)行管理,項(xiàng)目和日志庫(kù)的關(guān)系類似于數(shù)據(jù)庫(kù)和表之間的關(guān)系。

  3. 一個(gè)日志庫(kù)中可包含多個(gè)不同的采集配置,日志庫(kù)下的采集配置默認(rèn)將數(shù)據(jù)采集到該日志庫(kù)。

  4. 采集配置并不直接應(yīng)用于Logtail客戶端,而是應(yīng)用于中間層的機(jī)器組,便于大規(guī)模集群和應(yīng)用的靈活管理。

  5. 一個(gè)Logtail可屬于多個(gè)機(jī)器組,一個(gè)機(jī)器組可包含多個(gè)Logtail,實(shí)現(xiàn)Logtail與機(jī)器組的解耦。

  6. 一個(gè)采集配置可應(yīng)用到多個(gè)機(jī)器組,一個(gè)機(jī)器組可關(guān)聯(lián)多個(gè)采集配置,實(shí)現(xiàn)機(jī)器組與采集配置的解耦。


安裝配置流程



Logtail的安裝配置流程相對(duì)比較簡(jiǎn)單,如果日志服務(wù)和ECS在同一賬號(hào)下,則只需5個(gè)步驟即可實(shí)現(xiàn)采集。


  • 日志服務(wù)已經(jīng)和ECS打通,可自動(dòng)獲取ECS對(duì)應(yīng)的owner信息,因此不需要設(shè)置aliuid信息。


安裝Logtail


ECS安裝


1、購(gòu)買一臺(tái)ECS



2、根據(jù)ECS所在區(qū)域選擇Logtail安裝腳本(參見Logtail安裝指南)


例如華東1的經(jīng)典網(wǎng)絡(luò),使用wget http://logtail-release.oss-cn-hangzhou-internal./linux64/logtail.sh; chmod 755 logtail.sh; sh logtail.sh install cn_hangzhou


3、使用/etc/init.d/ilogtaild status檢查L(zhǎng)ogtail運(yùn)行狀態(tài),如輸出ilogtail is running表示安裝成功



自建主機(jī)安裝


1、選擇任意公網(wǎng)Logtail安裝腳本(參見Logtail安裝指南)


例如選擇華東1公網(wǎng)安裝,使用wget http://logtail-release.oss-cn-hangzhou./linux64/logtail.sh; chmod 755 logtail.sh; sh logtail.sh install cn_hangzhou_internet


2、使用/etc/init.d/ilogtaild status檢查L(zhǎng)ogtail運(yùn)行狀態(tài),如輸出ilogtail is running表示安裝成功


3、配置賬號(hào)標(biāo)識(shí)文件(參見非本人ECS/線下機(jī)器,配置完成后無(wú)需重啟Logtail)


配置


創(chuàng)建項(xiàng)目和日志庫(kù)


  1. 在阿里云官網(wǎng)產(chǎn)品中選擇日志服務(wù)或直接點(diǎn)擊進(jìn)入日志服務(wù)控制臺(tái),若您當(dāng)前沒(méi)有開通,會(huì)提示您開通日志服務(wù),點(diǎn)擊開通。

  2. 點(diǎn)擊創(chuàng)建Project按鈕,地域(Region)中選擇Logtail安裝時(shí)所選的地域,例如選擇華東1(杭州)。




3. Project創(chuàng)建成功后會(huì)提示創(chuàng)建Logstore,點(diǎn)擊創(chuàng)建;這里我們輸入Logstore名稱,其他參數(shù)無(wú)需修改,點(diǎn)擊確認(rèn)。



創(chuàng)建采集配置


1、Logstore創(chuàng)建完畢后,會(huì)提示進(jìn)行數(shù)據(jù)接入。如下圖所示,可通過(guò)三個(gè)入口創(chuàng)建采集配置:



2、在彈出的數(shù)據(jù)接入頁(yè)面中,我們選擇自定義數(shù)據(jù)中的文本文件接入。



3、在采集配置中我們選擇極簡(jiǎn)模式,日志路徑中的文件夾和文件名分別輸入/var/log和message,點(diǎn)擊下一步。



創(chuàng)建機(jī)器組并應(yīng)用


1、配置頁(yè)面點(diǎn)擊下一步后,會(huì)提示您選擇機(jī)器組,這里我們點(diǎn)擊創(chuàng)建機(jī)器組。



2、機(jī)器組配置頁(yè)面中選擇IP地址類型的機(jī)器組,IP輸入ECS的內(nèi)網(wǎng)IP(Logtail獲取的IP地址可通過(guò)cat /usr/local/ilogtail/app_info.json查看)



3、保存機(jī)器組后,勾選該機(jī)器組并點(diǎn)擊應(yīng)用到機(jī)器組。后續(xù)設(shè)置無(wú)需關(guān)心,直接點(diǎn)擊下一步。



查看日志


此時(shí)采集配置已經(jīng)創(chuàng)建完畢,您可以嘗試退出重新登錄主機(jī)或輸入命令echo 'test message' >> /var/log/message,這時(shí)本地/var/log/message文件會(huì)有新的日志產(chǎn)生,Logtail就會(huì)采集到這些數(shù)據(jù)了。


點(diǎn)擊日志庫(kù)頁(yè)面的預(yù)覽或查詢鏈接,即可看到Logtail采集上來(lái)的日志了。



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多