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