Serverless 場景下的日誌收集和分析實踐
場景描述
共享電動車企業使用函數服務搭建服務端。在函數服務中開啟日誌,把程序日誌寫到日誌服務,同時在函數代碼中使用SDK把運營日誌寫入到日誌服務,使用日誌服務進行日誌分析。
在日誌服務中,用戶可以:
- 開發查看日誌調試程序,確保程序的邏輯符合邏輯。
- 運維設置監控和報警,監控服務狀態是否正常。
- 客服調查用戶投訴。
- 運營分析數據,創建漏鬥,分析留存率、轉化率。
實驗步驟
1. 開通服務和上傳代碼包
首先需要開通函數計算、日誌服務,開通步驟和準備工作見文檔:函數服務實踐文章。
2. 確認日誌服務Project和logstore已經被創建
打開日誌服務控製台
可以看到華東2已經創建了一個project,以yunqi-demo-開頭,這個project是在函數服務的代碼裏創建的。
在logstore列表,我們能看到兩個logstore,分別是fc-debug-log程序日誌和ebike業務日誌:
3. 配置函數服務的日誌
打開函數服務控製台,選擇剛剛創建的project和logstore, 選擇AliyunLogFullAccess權限,點擊保存:
進入 fc_bycycle這個函數:
左側選擇代碼執行:
點擊觸發事件,輸入事件的json,並且保存。然後點擊執行:
事件樣例:
{
"Uid" : "abc",
"DeviceId" : "abcdef",
"Mobile" : "18612345678",
"SessionId" : 23456,
"Logitude": 120.0776645,
"Latitude": 30.131852
}
4.查詢
1. 在日誌服務控製台,分別打開 兩個標簽,一個是fc-log,另一個是ebike:
2. 開發者調查函數調用情況。在 fc-log查詢頁麵:輸入fc_bycycle,點擊查詢:
此外,可以在ebike logstore中,查詢op:unlock 或op:un* 或者unlock。
3. 客服收到用戶投訴,某一次請求異常,那我們先找到userid:xxx, 然後找到requestid進入ebike查詢: 查詢userid:458 ,找到request id:
4. 點擊左側的圖標,打開上下文查詢
在圖上搜索smart_lock
5. 運維同學為了監控線上的異常情況,打開ebike查詢頁麵,查看十分鍾內開鎖次數最多的用戶,輸入query:
query No. 1:
op : unlock| select count(1) as pv ,userid group by userid, __time__ - __time__% 600 order by pv desc
點擊查詢,然後右上角點擊『另存為快速查詢』:
然後點擊『添加到dashboard』,選擇新建dashboard,名稱為ebike-monitor:
右上角添加報警,選擇剛剛保存的快速查詢,輸入相關參數和手機號碼:
查看開鎖和關鎖的延時情況,修改query為:
query No. 2:
op:lock or op : unlock | select date_format(from_unixtime(__time__ - __time__% 3600),'%m-%d %H:%i') as time, avg(latency)as avg_latency, approx_percentile(latency,0.9) as top_10_percent_latency ,approx_percentile(latency,0.8) as top_20_percent_latency group by __time__ - __time__% 3600 order by time limit 10000
點擊保存到dashboard,選擇已經存在的dashboard: ebike_monitor:
查看函數服務每分鍾的請求pv:
query No. 3:
op:lock or op : unlock | select date_format(from_unixtime(__time__ - __time__% 3600),'%m-%d %H:%i') as time,count(1) as pv group by __time__ - __time__% 3600 order by time limit 10000
點擊保存到dashboad,圖表名稱命名為ebike_pv
查看電池使用情況:
query No. 4:
op:lock | select sum(used_battery) as hourly_used_battery , date_format (from_unixtime(__time__ - __time__% 3600),'%m-%d %H:%i') as time group by __time__ - __time__% 3600 order by time limit 25
6. 運營同學需要日誌數據做統計分析。在ebike查詢頁麵,輸入query:
query No. 5:
* | select sum(case when op = 'lock' then 1 else 0 end) as lock_pv, sum(case when op = 'unlock' then 1 else 0 end) as unlock_pv , date_format(from_unixtime(__time__ - __time__ % 3600),'%m-%d %H:%i') as time group by __time__ - __time__ % 3600 order by time limit 100
點擊保存到dashboard,參考上文步驟,新建一個dashboard名稱為ebike_dashboard:
輸入更多query,保存到dashboard中:
一天內的總收入:
query No. 6:
op : lock | select sum(money) as income
用戶的支付手段占比:
query No. 7:
op:lock | select count(1) as pv , pay_channel group by pay_channel
7. 打開保存的dashboard:
左側選擇新建標簽:
在右側彈出窗口中,選擇剛剛創建的dashboard:
如果需要修改圖表,點擊每張圖右上角的箭頭;如果需要刷新頁麵,可以點擊刷新按鈕:
關注我們
歡迎添加VIP釘釘群進行谘詢:
最後更新:2017-10-10 10:34:03