技術人員學習都是從簡單例子開始的, Heka的應用也是從簡單開始的。
需求:
監控一個日志文件的內容, 在標准輸出顯示出來。
操作步驟:
使用下載好或者編譯好的 heka
已經編譯好的 release 版本可以在下面地址下載: https://github.com/mozilla-services/heka/releases
注意:
需要把編譯后產生的 lib 文件(dll文件) 放在 system32 目錄下,否則會報下面錯誤:
准備一個待監控的log文件, 我這里是放在 D:\tmp\log 目錄下的 auth.log 文件, 內容隨便輸入。
編寫一個名叫 sanity_check.toml 的 toml 配置文件 ,內容如下, 具體配置含義,后面分析:
[LogstreamerInput]
log_directory = "D:\\tmp\\log"
file_match = 'auth\.log'
[PayloadEncoder]
append_newlines = false
[LogOutput]
message_matcher = "TRUE"
encoder = "PayloadEncoder"
這里我把這個文件保存在 D:\tmp\heka 目錄下。
在 hekad.exe 目錄下執行 命令:
D:\mycodes\golang\src\github.com\mozilla-services\heka\build\heka\bin>hekad.exe -config=D:\tmp\heka\sanity_check.toml
執行效果如下圖:
當我們監控的文件發生變化時, 這里也是會實時讀取出來的, 下面不同的時間也就標示了這點。
分析:
Heka 最重要組件為 hekad,一個適用於任何主機的輕量級守護程序, 我們這里就是對他進行配置。
Heka 使用的的 TOML格式的配置文件,一般依賴一個或者多個TOML格式的配置文件。 TOML是類似 INI 配置的語法,http://www.tuicool.com/articles/7JZRbq3
除了啟動應用是,配置的配置文件的位置外,運行hekad有兩個重要的目錄, 這里這幾個參數我們都沒有配置,我們用的都是默認值:
base_dir (string, 默認‘/var/cache/hekad’ 或者 ‘c:\var\cache\hekad’):
base_dir是hekad運行的工作目錄(存儲hekad工作信息,如查詢日志文件的seek位置等信息),運行hekad的用戶需要對這個目錄有寫權限。
share_dir是hekad的靜態資源,比如控制儀表盤(dashboard )的Html/js 源文件,以及各種Lua插件文件。運行hekad的用戶需要對這個目錄有讀權限。
golang的GOMAXPROCS環境變量,用於控制幾個CPU內核參與到運算。
最佳實踐:Heka aggregator 機器(最好是CPU核數,或者核數減一,處理數據的Heka機則是1到2。)
[LogstreamerInput] 配置節
log_directory = "D:\\tmp\\log" 需要監控的目錄
file_match = 'auth\.log' 需要監控的文件,
[LogOutput] 配置節
LogOutput 是標示只需要將數據寫出到Heka進程的標准輸出。
message_matcher = "TRUE" 標示我們這個輸出應該捕獲途徑Heka管道的每一個消息。
encoder = "PayloadEncoder" 標示我們捕獲的每個消息,都作為原始數據進行輸出發送。
[PayloadEncoder] 配置節
append_newlines = false 標示,我們輸出時,是否在每行后面補加換行符。
參考資料:
Heka logstreamer 說明文檔
http://hekad.readthedocs.org/en/latest/pluginconfig/logstreamer.html#logstreamerplugin
Heka inputs 說明文檔
http://hekad.readthedocs.org/en/latest/config/inputs/index.html
Heka getting started
https://hekad.readthedocs.org/en/latest/getting_started.html
Heka:Go編寫,來自Mozilla,高效、靈活的插件式數據挖掘工具
http://www.csdn.net/article/2013-05-02/2815116-introduce-from-mozilla-heka-go
http://blog.mozilla.org/services/2013/04/30/introducing-heka/
PPT介紹
https://cdn.rawgit.com/gophercon/2014-talks/master/rob_miller_heka/index.html#/
Heka, 一個高可擴展的實時數據收集和處理工具
http://skoo.me/system/2014/04/02/hekad/
Heka插件開發
http://skoo.me/system/2014/04/30/heka-plugin-devel/
http://youngsterxyf.github.io/sphinx/work_note/operations/heka.html#id1



