什麼是日誌
提到日誌,不少人的第一印象就是系統打到本地的Log文件,出問題的時候看一下這個Log文件,用來排查問題。更進一步能夠根據這個Log文件作實時的監控、第三方審計、入侵檢測、行爲分析、數據大盤製做等等。mysql
馬老師說過:阿里巴巴不是零售,咱們是一家數據公司,爲了數據才作電商、作物流、賣東西。咱們認爲日誌是記錄世間人和物全部行爲的一種方式,是數據中極其重要又極其龐大的一個組成部分。會產生日誌的設備有:服務器、交換機、手機、傳感器、IOT設備、智能設備...產生的日誌類型有:網絡的七層日誌、OS日誌、訂單日誌、支持日誌、GPS定位日誌、用戶點擊日誌...產生的日誌形式有:文本文件、二進制文件、syslog、udp日誌...如何充分利用這些日誌資源纔是咱們的核心技術和競爭力。sql
數據的價值是什麼?數據的價值在於把數據變成行動。這裏一個很是重要的過程是數據分析。提到數據分析,大部分人首先想到的都是Hadoop、流計算、機器學習等數據加工的方式。若是從整個過程來看,數據分析其實包含了4個過程:採集,存儲,計算和理解四個主要步驟:docker
數據的採集是一門很大的範疇,從實時性上和每次傳輸數據規模上分,通常能夠分爲3類:服務器
線下導數據:例如郵寄硬盤、AWS Snowmobile 卡車、阿里雲的閃電立方等
從數據的價值以及體量上而言,實時數據採集毫無疑問最重要的,而其中最大的部分就是日誌實時採集。
爲什麼使用Agent
實現日誌的實時採集通常有2種方式:網絡
下面咱們來詳細剖析一下兩者區別:app
從以上分析來看,兩種採集方式各有優缺點、也有各自適應的場景:負載均衡
直採:適用於對性能/資源要求較高的場景,例如IOT/智能設備等對於資源要求極高,沒有額外的資源獨立部署採集Agent;例如負載均衡設備、CDN節點等日誌產生量極高(每秒數百MB或者數GB的日誌),只有直接上傳方能知足性能要求
Agent採集:只要應用能夠將日誌輸出(以文件形式保存到磁盤、syslog等)或者支持通用的接口拉取,Agent便可將日誌採集到。大部分場景下鬆耦合、可擴展性、可維護性相比Agent額外開銷更具優點
爲什麼選用Logtail
日誌採集Agent有不少,例如Logstash、Fluentd、Beats系列(FileBeats、MetricBeats、Packetbeat、Winlogbeat、Auditbeat、Heartbeat)、Nxlog、Telegraf、Heka、Nifi、Logspout、Datadog agent、Sematext agent、Splunk addon系列、Sumologic collector。。。框架
業界有那麼多的Agent,每一個Agent各類各樣的功能和特性看起來讓人眼花繚亂。但圍繞日誌採集這個最原始的需求展開,無非也就是功能、性能、穩定性、運維代價這4個方面:運維
功能:做爲選擇Agent最基本需求,主要分爲輸入源、數據處理(除日誌解析外,還包括過濾、壓縮等)、數據輸出。
性能:不一樣類型Agent之間會有數十倍的性能差距。當日志產生速率較低且資源充足時,此項能夠忽略;但大部分狀況下采集Agent是做爲整個集羣的基礎軟件,在集羣規模龐大的狀況下,即便每臺機器節省1%的CPU、10MB的內存也是很大一筆資金節省。
穩定性:穩定的重要性無需多言,除保證自身運行的穩定外,Agent還需保證不能超出限定的資源使用Quota,以避免對應用產生影響。
運維代價:日誌採集的運維主要包括:Agent部署、動態伸縮、配置管理、Agent升級、Agent異常監控。當只有數臺主機時,Agent可使用人肉的方式進行管理,但當集羣規模擴大到數百及以上時,運維必須依賴有效的機制。
阿里雲日誌服務也有本身的採集Agent--Logtail。目前logtail已承載阿里雲全站、全部雲產品服務、全球各Region部署、阿里巴巴集團(淘寶、天貓、菜鳥等)上重要服務的數據採集。天天採集接近百萬服務器上數PB的實時數據,對接數千個應用與消費者。之因此使用Logtail做爲採集Agent也是通過上述四個方面的綜合考慮。因爲採集Agent數量衆多,這裏咱們選擇目前最主流的3款Agent進行對比:機器學習
相對主流的採集Agent,Logtail在採集功能上有必定的不足,對於輸入源、處理方式等支持沒有開源軟件的多,但從目前的功能來看,能夠知足95%以上的日誌採集需求。但日誌採集並非可以採集到就能夠。相對開源軟件,Logtail的優點是有集團百萬服務器、上萬應用的練兵環境,不少問題純粹從Agent和開源社區的角度並不會考慮到。所以經歷了數年的迭代優化,在性能、穩定性、運維代價上,Logtail相對更加成熟,在性價比上具備絕對的優點。
詳情請閱讀原文