營運技術之資料擷取、傳輸與過濾

來源:互聯網
上載者:User

一、採集點取捨
對於業務資料分析來說,當然是越全面越好,但隨之而來的是分析複雜度也水漲船高,所以需要權衡,針對不同的資料來確定採樣點。
1、伺服器資料
伺服器資料一般會採集到CPU負載、磁碟I/O、網卡流量等。
這些指標衡量的粒度通常是不一樣的,因此,採樣頻率也應該差異化,比如:
(1)CPU的平均負載loadavg,輸出粒度是1、5、15分鐘,因此,採樣頻率應該要大於或等於1分鐘。
(2)I/O操作,大多數異常都是瞬時操作,採樣頻率就不能用5分鐘甚至15分鐘了,這樣有可能會漏采。
2、訪問日誌
訪問日誌是Web伺服器監控非常重要的途徑,因此,建議保留訪問日誌至少3個月以上,以備排查問題。
主流的Web伺服器都有自己預設的訪問日誌記錄項,比如:Apache的LogFormat、Nginx的log_format。
訪問日誌中一般會記錄時間、rerfer、url、cookie等資訊。
3、系統日誌
Syslog是介於訪問日誌和伺服器之間的另一部分。
一方面是作為Linux伺服器最重要的OS層面的資訊集中地,另一方面Syslog本身作為一種快速傳輸日誌的協議,也經常用於使用者應用輸出。
Syslog主要用於資料擷取,後文還會介紹收集分析系統,當然衍生的Syslog-ng、Rsyslog等也能堪當大任。
Syslog協議規範參見RFC3164。

二、收集傳輸
採集到本地的資料需要收集到資料分析伺服器來進行處理。在即時性要求不高的系統中,可以通過scp或者rsync定時任務來進行集中收集,這也是最常用的收集手段。但是如果即時性要求高就需要用專門的資料轉送中介軟體了。
1、Rsyslog
Rsyslog已經成為CentOS的標準配置,而且相容Syslog的配置,其處理流程如下:

圖1 Rsyslog處理流程 從可以看出,Rsyslog主要由以下幾部分組成:
(1)Input Modules:這個模組相對固定,用於接收輸入資料,可以基於File、TCP、UDP、UINX Socket等。
(2)Output Modules:這個模組比較開發,社區有基於MySQL、HDFS、MongoDB、Redis、ZeroMQ、Solr等的支援。
(3)Parser Modules:這個模組顧名思義是用來解析資料用的。
Apache和Nginx都支援通過Syslog或者Pipe方式收集資料,只需要做好配置即可。
2、message queue
訊息隊裡其實也能完成收集任務,甚至更漂亮。
開源訊息佇列中介軟體有很多,重頭的有基於AMQP實現的RabbitMQ、Qpid、ActiveMQ,簡單高效的有ZeroMQ、Redis,當然還有很多,這裡不一一列出。
3、RPC
在基於RPC協議的設計情境中通常會使用Thirft一類的服務開發架構,使用者只需要定義好統一的資料結構,Thirft會自動產生和網路通訊相關的代碼,而在各自節點上,可以使用絕大多數開發語言,它就像一個水管多用轉接頭一樣。

圖2 Thrift整體架構4、Gearman
Gearman是一套分布式程式架構,與Hadoop相比其更偏向於任務分發。
一個Gearman請求的處理過程涉及三個角色:Client->Job->Worker。
對於Client和Worker並不限制使用一樣的語言,所以有利於多語言系統整合。

圖3 Gearman處理流程 在海量日誌即時處理方面,Gearman最簡單也最常見的一個運用是即時的訪問排行,其使用流程如下:

圖4GearmanTlog流程
三、日誌收集系統架構
比較有名的資料收集傳輸處理架構有Twitter的Storm、Linkedin的kafka、Facebook的Scribe、Cloudera的Flume和Hadoop的Chukwa等。這些架構總體來說都比較重,接下來會介紹兩個簡單但功能豐富的類似系統。
1、Flume-ng
Flume-ng主要包括source、sink和channel三部分。
Flume-ng依據source與sink和channel的對應關係可以構造集中式日誌收集系統,也可以構造日誌分發系統,比如:
(1)當source來自多個源地址或者服務時,sink作為中繼,跨越網路一級一級地把資料流串聯起來,這就是集中式日誌收集系統的典型案例。
(2)如果是單一的source對應多個channel和sink,那麼就可以把一份素具複製到多個目的地址或者服務上,以完成不同目的的分析處理。
2、logstash
Logstash由JRuby語言編寫,與Flume-bg或者Rsyslog類似,Logstash同樣由input、filter和output三個組件組成。
Logstash社區非常活躍,營運人員可以從龐大的外掛程式庫中挑選自己熟悉的來搭建系統。
Logstash最典型的使用情境,是通過Logstash收集應用叢集的日誌到專用伺服器上,並進行過濾和處理。
只要同時有input和output外掛程式,都可以作為broker運行,官方推薦使用redis來構建,處理模型如下:

圖5 Logstash處理流程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.