老王的心路歷程(二):下一站Web體驗監控產品

5.jpg

上一篇文章中,和大家聊到了建立Web應用體驗監控體系,經過了概念階段,也完成了技術選型,就進入了把實質性的產品研發階段。作為產品經理,時刻不敢忘記我們的產品目標:無限感知你的用戶,建立完備的體驗監控體系,驅動產品的設計、開發和運維!

一、一切皆操作

仔細分析終端用戶和Web應用及網站的交互過程,無論是打開頁面、點擊鏈接或按鈕,還是填寫表單、提交查詢,一切皆可歸結為一個個基本的操作,由這些操作構成一次次訪問(即會話),而會話最終都可以映射到具體的用戶,因此我們可以用一張圖來表達:

1.jpg

因此,在我們的產品概念中,我們不再把頁面的PV當作重點,而是把所有的行為抽象為操作,比如頁面被打開多少次就稱為頁面的操作數,按鈕被點擊了多少次也被稱為按鈕的操作數。這是一個非常重要的概念,因為優云Web中大多數指標皆是圍繞操作來進行聚合的。舉例來說,我們可以知道某個時間段內使用某種瀏覽器的用戶,登錄按鈕被點擊的次數、響應時間(網絡、服務端、客戶端)、滿意度(滿意、可容忍、不可接受)等關鍵指標。

2.jpg

這里值得提一下操作類型,我們把操作分成了四種基本的類型:重定向、鏈接、AJAX、表單提交,重定向即打開某個URL裝載頁面或手動刷新某個頁面,鏈接即點擊某個鏈接跳轉到某個URL,AJAX即發起某個XmlHTTPRequest交互局部更新頁面(現在的Web應用中基本都有用到此技術,與操作無關的純XHR請求不會被記錄成操作),表單提交很好理解,填寫表單并提交或者發起一個查詢都屬于這種操作類型。

目前我們只記錄了與服務端有交互的操作,而對純客戶端的操作暫未記錄。

二、盡可能全量采集數據

之前我們提到了對我們有價值的數據有用戶的操作行為數據以及操作行為的上下文數據,我們可以在頁面中嵌入一小段JS代理,當用戶與頁面產生交互時,代碼片段會自動執行收集數據并定期上報到服務端分析。每一次用戶的交互行為其實講了一個故事:

·誰

·什么時間

·在哪個頁面

·操作的內容是什么

·操作的類型是什么

·使用的瀏覽器元數據有哪些

·瀏覽器加載的過程數據有哪些

·是否出錯

有了這些數據,接下來就交給云端的服務器去做了,對每一個操作進行聚合分析,通過指標體系去度量這個操作的體驗情況。當然,上層業務還是需要做不少的事情,比如如何區分一個會話,如何識別一個獨立用戶和賬號,如何對一組頁面進行聚合分析,如何統計一個跨頁面功能按鈕的操作數,如何解決多域名指向同一站點的問題等等。下圖是對一個操作進行體驗分析:

3.jpg


三、無碼埋點讓分析更敏捷

先解釋下無碼埋點,這里說的無碼并非不要嵌入js代碼,與無碼埋點對應的是代碼埋點。從部署js代理開始,系統自動全量采集了界面中被用戶操作的元素數據,后面其實我們要做的就很簡單了,把需要的數據拿出來看即可。具體去“拿”的過程還是省不了的,我們是這么考慮的:

1、你不需要關注界面上所有的元素

2、跨頁面元素的跟蹤或頁面組定義還是需要人來定規則

3、自動化的命名方式不友好不是你要想的

聽上去很酷,對不對?是不是小白PM都可以用得起來,從此不再需要開發人員干埋點的臟活累活了,而對產品經理來說,不要整理埋點的清單了,不要求著研發人員解釋埋點的邏輯,想拿數據就拿數據,進退自如效率大大提高。無碼埋點的好處是無須等待即可看到歷史數據,但如果涉及到對歷史數據進行重新標記命名,如果歷史數據較多肯定需要耗費較長時間。

4.jpg

當然了,無碼埋點也不是沒有缺點的,但我們要的是最小化代價獲取有價值的隱藏在大數據背后的知識,雖有缺陷卻不影響我們做合理的決策。我們后面會談到各種埋點的技術方案的利弊分析。

四、多維分析洞悉細微之處

對好的體驗監控產品來說,多維分析是共性的需求,所謂細微之處見真章,產品的創意和問題往往從細微之處可以覺察到。維度可以是時間,也可以來自于采集的客戶端瀏覽器的元數據信息,也可以是地理、運營商,甚至可以是自定義的維度。各類產品其實說得挺多了,這里不再贅述。

5.jpg


五、擴展API讓數據更有價值

適當的API能力可以讓數據發揮更大的價值,基于這些數據可以讓分析和問題定位更加給力。

1、接入真實用戶:默認情況下,我們采用js生成的id來標識用戶,不能很好地標識真正的用戶,無法把訪客與真實的人建立起聯系。如果有用戶登錄行為的話,可以用YYRUM.identify(user_id)來標識,這樣就能標識發生事件的真實用戶。建議在用戶登錄后,立即調用這個方法。

接入真實用戶還提供API設置用戶的屬性,并支持以用戶屬性為維度進行數據分析。你可以首先使用上面的identify(user_id)來標識用戶。然后可以對這個特定的用戶設置一些屬性,比如這個人的性別,年齡,等等。

2、接入錯誤:雖然我們盡可能的采集用戶端的錯誤信息,但事實上瀏覽器拋出的錯誤對我們解決問題的能力是非常有限的。在收集到的數據中常常會有很多的script error.錯誤,而錯誤的堆棧確看不到任何信息。原來是瀏覽器的同源性策略(CORS),瀏覽器會把不同域的js報錯信息替換成script error,并且其他字段也置為空,這個時候就很難收集的真正有效的信息。(PS:針對上面的解決方案:請求的js返回頭上加上“`Access-Control-Allow-Origin“`,并設置可信的來源,在引用js的標簽上加上“`crossorigin“`屬性)

這樣依然不夠,我們可以采用主動上報錯誤的方式,把一些自定義的錯誤信息上報到云端進行聚合分析。舉例如下:

YYRUM.report(ex,{

msg:‘自定義錯誤’,

line: 89,

col: 90,

func: a

}) “`

六、技術的不完美性

事實上,前面說了各種方案都有其優劣點的,而JS代理方式本身有一些局限性,簡單分析如下:

1、采用js數據收集原理決定了:數據能否收集以及收集后的數據是不是你想要的,根本依賴于JavaScript標記代碼是否能正確執行;這也意味著如果在數據收集環節走入誤區,將給隨之而來的分析工作帶來不可修復的影響(訪問者不會因為你犯下的數據收集錯誤而幫你再現歷史訪問過程)。

2、我們的方案固然能降低工作量,把很多工作交給云端去做,但隨之而來的是抓取的信息越多,也就意味著浪費的流量也越多,存儲和索引的成本也越高。

3、對部署也有一定的要求,一個是要求覆蓋面,是否覆蓋了所有要分析的頁面;另外一個是如果用戶瀏覽器版本過低,有些指標獲取不到。

以上是我個人的總結,Web體驗監控產品的六大基本內容,歡迎大家一起交流(作者微信:uyunsoft)。后續再與大家聊聊埋點的那些事。

作者簡介:

王川林

?優云軟件產品經理

?四年UI設計師、三年商務智能產品、五年IT運維產品

?負責優云Web應用體驗監控產品

優云秉承devops的理念,從監控、到應用體驗,到自動化持續交付,優云一切為了您做的更好!

“ 活動期:現到2016年12月31日前使用優云產品免費,歡迎詳詢:https://uyun.cn

更多運維技術文章請關注優云官方微信(broada_ops)

老王的心路歷程(二):下一站Web體驗監控產品

原創文章,作者:uyunops,如若轉載,請注明出處:http://www.www58058.com/32563

(0)
uyunopsuyunops
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • day6總結

    主要內容: useradd與usermod對比 groupadd與groupmod對比 passwd與chage對比 gpasswd與groupmems對比 切換用戶 chown與chgrp用法 一般權限與特殊權限 chmod用法   useradd創建用戶的初始信息存放在/etc/login.defs和/etc//default/useradd文…

    系統運維 2016-08-08
  • TCP連接的狀態詳解以及故障排查

    我們通過了解TCP各個狀態,可以排除和定位網絡或系統故障時大有幫助。(總結網絡上的內容) 1、TCP狀態 linux查看tcp的狀態命令: 1)、netstat -nat  查看TCP各個狀態的數量 2)、lsof  -i:port  可以檢測到打開套接字的狀況 3)、 &nbs…

    Linux干貨 2015-04-03
  • tcpdump診斷nginx問題

    自從上級公司離職后,快一年的時間沒有寫php程序和搭建LNMP環境,一直在做db運維和運維工具開發方面的事情。 最近決定開發開發一些自動話方面工具,重新拾起php,于是在測試機上搭建一個LNMP環境。 1、 nginx 404錯誤 一般的出現404錯誤,找不到頁面資源。首先用strace排除了存在文件訪問權限的問題,其次nginx的root參數設置也沒有任何…

    Linux干貨 2016-05-03
  • 用shell腳本實現每天定時收集全網日志到一臺服務器

    需求 現在公司有這樣一個需求,需要收集每天全網運行業務的設備上的某個特定目錄底下的日志到一臺服務器(這臺服務器我們簡稱logserver),這并在這臺logserver上生成以日期為名字的目錄 解決思路: 在logserver的crontab里設置兩個腳本,在當日晚上23:30執行腳本1收集當日即將被刪除的全網腳本;在并在早上8:30執行腳本2,收集昨日全網…

    Linux干貨 2015-07-27
  • 優秀程序員的十個習慣

    在這個世界上,有數百萬的人熱衷于軟件開發,他們有很多名字,如:軟件工程師(Software Engineer),程序員(Programmer),編碼人(Coder),開發人員(Developer)。經過一段時間后,這些人也許能夠成為一個優秀的編碼人員,他們會非常熟悉如何用計算機語言來完成自己的工作。但是,如果你要成為一個優秀的程序員,你還可以需要有幾件事你需…

    Linux干貨 2015-04-01
  • Nginx反向代理的常用調度算法

    upstream 調度算法 1.rr 按客戶端請求順序把客戶端的請求逐一分配到不同的后端的服務器,這相當于lvs中的rr算法。如果后端服務器巖機(默認情況下只檢測80端口,如果后端報502,404,403,503,還是會直接返給用戶),巖機服務器會被自動剔除,使用戶訪問不受影響,請求會分配給正常的服務器 2.weight(權重) 在輪詢算法的基礎上加上權重(…

    Linux干貨 2016-06-01
欧美性久久久久