閱讀105 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Serverless 場景下的日誌收集和分析實踐

場景描述

共享電動車企業使用函數服務搭建服務端。在函數服務中開啟日誌,把程序日誌寫到日誌服務,同時在函數代碼中使用SDK把運營日誌寫入到日誌服務,使用日誌服務進行日誌分析。

在日誌服務中,用戶可以:

  1. 開發查看日誌調試程序,確保程序的邏輯符合邏輯。
  2. 運維設置監控和報警,監控服務狀態是否正常。
  3. 客服調查用戶投訴。
  4. 運營分析數據,創建漏鬥,分析留存率、轉化率。

實驗步驟

1. 開通服務和上傳代碼包

首先需要開通函數計算、日誌服務,開通步驟和準備工作見文檔:函數服務實踐文章

2. 確認日誌服務Project和logstore已經被創建

打開日誌服務控製台

可以看到華東2已經創建了一個project,以yunqi-demo-開頭,這個project是在函數服務的代碼裏創建的。

image.png

在logstore列表,我們能看到兩個logstore,分別是fc-debug-log程序日誌和ebike業務日誌:

image.png

3. 配置函數服務的日誌

打開函數服務控製台,選擇剛剛創建的project和logstore, 選擇AliyunLogFullAccess權限,點擊保存:

image.png
image.png

image.png

進入 fc_bycycle這個函數:

image.png

左側選擇代碼執行:

image.png

點擊觸發事件,輸入事件的json,並且保存。然後點擊執行:

image.png

事件樣例:

{
    "Uid" : "abc",
    "DeviceId" : "abcdef",
    "Mobile" : "18612345678",
    "SessionId" : 23456,
    "Logitude": 120.0776645,
    "Latitude": 30.131852
}

4.查詢

1. 在日誌服務控製台,分別打開 兩個標簽,一個是fc-log,另一個是ebike:

image.png

2. 開發者調查函數調用情況。在 fc-log查詢頁麵:輸入fc_bycycle,點擊查詢:

image.png

此外,可以在ebike logstore中,查詢op:unlock 或op:un* 或者unlock。

3. 客服收到用戶投訴,某一次請求異常,那我們先找到userid:xxx, 然後找到requestid進入ebike查詢: 查詢userid:458 ,找到request id:

image.png

4. 點擊左側的圖標,打開上下文查詢

image.png

在圖上搜索smart_lock

image.png

5. 運維同學為了監控線上的異常情況,打開ebike查詢頁麵,查看十分鍾內開鎖次數最多的用戶,輸入query:

query No. 1:

op : unlock| select count(1) as pv ,userid group by userid, __time__ - __time__% 600 order by pv desc 

image.png

點擊查詢,然後右上角點擊『另存為快速查詢』:

image.png

然後點擊『添加到dashboard』,選擇新建dashboard,名稱為ebike-monitor:

image.png

右上角添加報警,選擇剛剛保存的快速查詢,輸入相關參數和手機號碼:

image.png

查看開鎖和關鎖的延時情況,修改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:
image.png

查看函數服務每分鍾的請求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 

image.png

點擊保存到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:

左側選擇新建標簽:

image.png

在右側彈出窗口中,選擇剛剛創建的dashboard:

image.png
image.png

如果需要修改圖表,點擊每張圖右上角的箭頭;如果需要刷新頁麵,可以點擊刷新按鈕:

image.png

關注我們

歡迎添加VIP釘釘群進行谘詢:

最後更新:2017-10-10 10:34:03

  上一篇:go  Joomla模板下載
  下一篇:go  RDC如何構建一個基於Composer的PHP項目