如何使用ARMS配置tengine的日誌監控
如何使用ARMS配置tengine的日誌監控
來自 深圳市小億網絡有限公司 王昕巖 的撰稿
最近公司通過阿裏雲的業務實時監控服務 ARMS成功搭建了基於tengine的日誌監控系統。這裏簡單分享一下使用[font="]ARMS用於監控[font="]tengine日誌的經驗。[font="]
公司發展至今,現階段所有接口都使用阿裏的tengine作為web容器,類似nginx,在日誌中也記錄了包括host,url, ip, 包體大小,響應時長等信息。目前的業務需求場景是希望有一套系統來監控接口的異常,來及時發現系統的異常,並能具體到哪些項目、哪些服務器、甚至哪些
tengine日誌分布到不同服務器上,首先使用日誌服務來分別收集這些日誌。再以logHub作為日誌源,來進行監控。想到使用ARMS的其中一個最重要原因是因為我們系統tengine的日誌格式有一定的定制,需要有一個端到端監控產品提供的定制化特別強的數據清洗功能,以及聚合計算+報警功能。
這裏詳細介紹一下ARMS吊炸天的日誌切分功能。
第一步,一個開始節點;
第二步,LogHub數據源過來默認是JSON格式,進行JSON解析,如下圖:
註意日期類型的時間格式,尤其是“小時”部分,默認格式是hh(12小時),需要改為HH(24小時)。
第三步,清洗,過濾掉這裏不需要監控的
通過函數,過濾掉不以指定域名結尾的host。
第四步,解析URL。使用“單分隔符切分器”,將request字段按照空格切分,分別獲取調用方式(GET/POST)、完整URL、協議版本:
第五步,區分錯誤碼。這裏主要是為了區分,返回碼是代表正常、還是錯誤。這裏只對錯誤的返回碼進行監控。下圖的例子是,返回碼是4xx或5xx的表示錯誤,其他表示正常。新增字段is_error表示是否是“錯誤碼”,賦值1或0表示是或否。
第六步,配置服務器IP和服務器名稱的對應關系。配置了一個映射表如下:
註意,這裏一定要配置一個127.0.0.1的k-v關系,否則日誌切分預覽的時候會看不到這個“服務器名稱”字段。
最後,再簡化一下
至此,日誌切分全部結束。點擊“日誌切分預覽”,即可查看切分效果。點擊保存,下一步
。
配置數據集,例如要監控接口的訪問次數,使用count(_line);要監控平均包體大小,使用sum(包體大小)÷count(_line);要監控平均響應時長,使用sum(響應時長)÷count(_line)。維度根據需要配置,此處配置為先服務器,後接口域名。
至此配置全部結束,點擊保存,完成配置。即可啟動任務了。以上為簡單示例。
這邊展示我制作的其中幾項監控的大盤。
請求數效果圖:
響應時長效果圖:
包體大小效果圖:
錯誤碼個數效果圖:
運維人員通過對幾個圖表的觀察分析,可以很快得出一些異常情況發生的原因,並及時處理掉。
一個年輕的互聯網公司,需要不斷的成長。系統也一樣,需要不斷的提升、優化。阿裏雲業務實時監控服務ARMS很好的提供了這麽一個入口,為公司提供了一個實時查詢Tengine運行情況的解決方案。在未來,ARMS將很好的和ODPS為公司監控形成互補方案,tengine日誌日後可同時投遞到ARMS和MaxCompute中: ARMS響應第一時間的多維度報警;MaxCompute來做深層次分析,例如接口的請求數、響應時長等,並有針對性地進行調優。
如何使用ARMS配置tengine的日誌監控