日誌收集分析-heka
可擴充套件的資料收集和處理工具。它的可擴充套件性不僅僅是體現在程式本身可以進行外掛開發、更可以方便的透過新增機器進行水平擴充套件。Heka是一個使用Go語言開發的工具,大量使用了Go的goroutine併發和channel通訊,透過我們做日誌平臺的經驗來看,一般情況下效能問題不需要太多的顧慮。
Heka程式的可擴充套件性體現在它的外掛開發上。Heka核心是Go語言開發,其外掛理所當然的可以採用Go語言開發,當然你還可以透過lua來開發外掛,如果你更喜歡寫lua的話;lua開發的外掛具備熱更新的能力,也就是修改了lua外掛的程式碼,並不需要重啟Heka程式,在某些應用場景下,熱更新具備很強的競爭力。根據實際的應用需求,可以為Heka開發4種型別的外掛,這4種外掛就構成了Heka的整體結構和功能,所以Heka的核心程式碼量(非外掛)只有5,6K行。可開發的4種外掛分別是:Input、Decoder、Filter、Output。
Input外掛就是Heka的資料輸入源。假設需要從一個日誌檔案讀入資料,那就只需要開發一個從日誌檔案讀取日誌資料的Input外掛即可。值得開心的事情是,Heka已經預設自帶了多個Input外掛,可以滿足大部分資料來源的需求。自帶的LogstreamerInput外掛就是用來從日誌檔案實時讀入資料用的,它支援讀取各種rotate規則的日誌檔案路徑;HttpInput外掛可以間斷式的透過訪問一個URL地址來獲取資料,比如:Web的7層健康檢查場景就可以使用HttpInput外掛來探測。HttpListenInput外掛會啟動一個Http接收外部訪問來獲取資料,比如:透過curl等命令直接將資料post到Heka;還有兩個比較重要的Input外掛:分別是TcpInput和UdpInput,有這兩個外掛外部程式就可以透過TCP/UDP將資料傳送給Heka。, 這裡可以看到Heka提供的全部Input外掛和詳細使用方法,大部分情況都不需要自己開發Input外掛了。
Decoder外掛,各種Input外掛負責將原始資料送入到Heka內部,這些資料一般來說都是具備一定的格式,比如:Nginx access日誌、Syslog資料、自定義的資料格式等等,Decoder外掛乾的事情就是將Input外掛輸入的一個個的原始資料訊息給解析一遍,最終得到一個結構化好的訊息,不再是一個非結構化的原始資料訊息。結構化的訊息更利於程式設計進行處理。,這裡例舉了Heka自帶的所有Decoder外掛,我最關注的外掛是:Nginx Access Log Decoder和 Syslog Decoder,這兩個外掛都是Lua開發的。注意,每個Input外掛得有一個Decoder外掛負責對輸入的資料進行解析到結構化的程度。
Filter外掛乾的事情就是負責具體的資料分析、計算任務。Heka預設也帶了好幾個Filter外掛,但都不是我的菜,絕大多數時候,可能都需要我們自己根據應用需求開發自己的Filter外掛來完成資料分析、計算工作。
OutPut外掛負責將Heka內部的一個個訊息輸出到外部環境,比如:檔案、、訊息佇列等;注意,也可以透過TcpOutput將訊息輸出到下一個Heka繼續處理,這樣就可以部署成多機分散式結構,只要有必要。
透過4種型別的外掛,基本可以瞭解到Heka是基於Pipeline方式對資料進行實時處理。除了可以開發4種外掛以外,Heka還提供了一個很高階的機制——message matcher,message matcher是應用在Filter和Output兩種外掛身上,它主要是用來指定哪些訊息由哪些外掛(Filter/Output)處理。有了message matcher機制就可以透過配置檔案實現不同的資料由不同的Filter進行計算、不同的Output輸出到不同的外部環境。沒有message_matcher,Heka的價值就會大打折扣了。
Router架構
每個Agent負責採集不同的資料傳送給矩形元件Heka,也就是Router。Heka Router可以透過message matcher機制將不同的資料輸出到不同的外部儲存等,從而實現一個Router的功能。當然,上面的兩種架構也是可以混合到一起使用的,Heka的系統級擴充套件性還是足夠靈活的。Agent/Router架構其實非常像淘寶開源的DataX工具(DataX是由淘寶 @澤遠 同學領導開發的一款各種儲存間資料交換的瑞士軍刀。DataX也是支援各種外掛開發,可以透過外掛實現MySql資料同步到Oracle、Oracle同步到MySql、Mysql同步HDFS等等),在沒有DataX以前,就是各種儲存間同步的獨立工具,由不同的人開發,使用方式也完全不一致,零散的小工具極其不友好。在一個靈活、可擴充套件的工具上面,進行擴充套件開發實現各種業務需求,可以讓系統的運維更加的友好,部署、使用方式也更加的一致。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-2141343/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TFA-收集日誌及分析
- fluentd收集kubernetes 叢集日誌分析
- 日誌分析平臺ELK之日誌收集器logstash
- 日誌分析平臺ELK之日誌收集器filebeat
- Vector + ClickHouse 收集日誌
- rac日誌收集方法
- logstash收集springboot日誌Spring Boot
- 微服務下,使用ELK做日誌收集及分析微服務
- Elasticsearch+kibana+logstash 搭建日誌收集分析平臺Elasticsearch
- 日誌分析-apache日誌分析Apache
- SpringBoot使用ELK日誌收集Spring Boot
- Linux-ELK日誌收集Linux
- 使用Kafka做日誌收集Kafka
- 日誌分析平臺ELK之日誌收集器logstash常用外掛配置
- 通過 Systemd Journal 收集日誌
- (四)Logstash收集、解析日誌方法
- ELK+logspout收集Docker日誌Docker
- 支付寶客戶端架構分析:自動化日誌收集及分析客戶端架構
- [日誌分析篇]-利用ELK分析jumpserver日誌-日誌拆分篇Server
- 使用Fluentd + Elasticsearch收集訪問日誌Elasticsearch
- Flume收集日誌到本地目錄
- Filebeat 收集日誌的那些事兒
- 日誌收集工具簡單對比
- 鐵威馬nas如何收集日誌
- filebeat 收集nginx日誌輸出到kafkaNginxKafka
- 輕量級日誌收集方案LokiLoki
- 日誌收集之filebeat使用介紹
- ELK日誌系統之使用Rsyslog快速方便的收集Nginx日誌Nginx
- k8s日誌收集實戰K8S
- 簡便地Android崩潰日誌收集Android
- Docker應用容器日誌資訊收集Docker
- k8s容器日誌收集方案K8S
- 透過 Filebeat 收集 ubuntu 系統日誌Ubuntu
- 大資料01-Flume 日誌收集大資料
- 日誌收集和鏈路追蹤:skywalking
- net core3.1整合收集日誌- sentry
- k8s 日誌收集之 EFKK8S
- 通過helm部署EFK收集應用日誌,ingress-nginx日誌解析。應用日誌Nginx
- crash日誌分析