移動支付公司Square的應用可視性原則
背景
在過去的五年里,我們的網站有了長足進步。我們的技術社區從一體式應用的處理社區成長為微服務的架構社區。我們服務的變化和成長給應用可視性帶來了新的挑戰。在今天的博文里,我們將帶來一些指導性原則,并展示我們用來檢測和可視化服務生態系統的技術。從今天開始,我們會將服務監測和可視化技術的各個部分開源呈現!
原則
一些指導性原則如下:
-
盡早重視易用性。基于微服務架構,采集大量的信號變的非常容易,一個好的用戶界面必須能夠從信號中提取信息。
-
分辨并且呈現指標中最重要的方面。我們都認為,人類只能在同一時間有效處理很少的幾項工作。因此,任何關于指標的問題都應該在有限次數內解決。例如:
-
Top-N API指標依據潛在因素分類或者每周更換 。
-
自動問題監測。inspect工具能夠展現明顯的系統問題。
-
-
應用從一開始就應該有默認的良好指標呈現。我們保證在我們的標準應用器中有好的監測,我們的dashboard中包括下面的指標:
-
數據庫
-
Hosts 和containers
-
HTTP/REST結束點的性能指標
-
JVM用來運行服務部件的VM數據
-
-
警告應簡潔且相關度高。我們監測了大量警告發生時的指標,目的就是提高使用的性能,避免對警告沒有相應措施。
-
警告應該迅速,且被立刻響應。
-
警告出現時應該是異常事件。
-
所有警告都應需要人工智能處理。
-
所有警告都應具有復寫性。
-
應用
在上述原則之下,我們在Square網站使用的應用有:
-
Appdash。使用該應用可以快速得到你的應用的信息,包括:
-
運行信息,比如哪些主機正在運行,什么釋放掉了等信息都可以得到
-
應用依賴的幾何環境
-
來自你的應用程序的事件和異常
-
容量建模
-
-
MetricsDashboard。使用該應用,你可以查看所有平臺和應用的指標。下面是 metricsdashboard UI 數據庫的表盤示例。
-
Presidio。它是一個基于Elasticsearch的日志搜索應用。它提供給應用開發者一個界面,可以輕松找到可能會導致錯誤的模式,或者幫助開發者在多服務的情況下追蹤一個事件。
-
Equilibrium。它是我們下一代的提醒系統,正在迅速代替 Nagios 底層構造。Equilibrium 易于使用,有更好的可信度和平衡性。 它受我們使用 Nagios 和為其他公司工作經驗的影響,也符合現在的開源趨勢。
現在,我們開源系統中看起來小但卻特別重要的一個工程:inspect。inspect是我們用來收集Linux、MySQL、和PostgreSQL指標的庫的集合。該工程同時也提供了Linux的命令行工具,可以進行基本的問題檢測。
結束語
我們希望inspect能幫助大家,希望這篇博文能夠讓大家理解我們在Square中用到的監測和警告系統。我們會在后續的博文中詳細介紹每個系統。一如既往,請到 https://corner.squareup.com/ 查看***更新