前言
在docker容器技術飛速發展之時,監控容器的效率與健康也變成了至關重要的需求。在docker資深提供的監控技術逐漸成熟時,來自第三方的監控工具也同時步入了人們的視線。
本文將為大家介紹docker容器的監控技術,並討論時下在容器生態圈最受歡迎的監控工具。同時,來自美國的saurabh也將分享容器技術在國外的應用趨勢以及他個人的技術洞察。
今天我所帶來的分享主題是《docker容器的監控技術》,在這裡我將對監控工具進行簡要的分類和介紹,幫助大家在為服務設計監控方式的時候能夠更有效的確定所需要使用的元件。同時,我將對目前國際上使用率較高的主流解決方案進行分析對比,幫助大家選擇適合自己的監控方案。
首先,我們為什麼需要監控我們的服務?
知道了為什麼需要監控,下面我們來快速了解一下到底有哪些需要監控的典型資源。總的來說,目前有兩種監控的型別,黑盒監控和白盒監控。
基於你的控制方式可以在不同的層面上實現監控功能。首先,監控目標(收集指標的**)可以是應用程式本身,也可以是主機和承載應用的容器。另一方面,對資料進行視覺化主要是為了檢視收集到的每個例項的資料,也可以檢視集群級別和區域級別的資料。
這樣就引出了這次討論的關鍵——應該選擇哪種適合自己的監控工具?
對於這個問題我們能夠發現太多的選擇,每一款工具都有自己的優點和缺點。所以在接下來的分享中,我會重點花時間來分析這些監控工具之間的區別,以及如何找到和你完美契合的那一款監控工具。
總的來看,這些監控工具可以分為兩 類:一類是自主託管解決方案
(self hosted solutions),你可以用它來構建和託管全部stack;另一類是saas解決方案
,你只需要把資料接入即可實現監控功能。下面讓我們來比較一下這兩類解決方案:
對於自主託管解決方案,基本上我們可以自己構建整個監控stack並且在自己的平台上託管。這樣做的好處是,如果你選擇了一套開源元件,那麼設定的成本將大大降低。不過需要注意的是,這樣一來你需要不斷地設定和維護它們,這將大大增加你的工作量和工作複雜度,所以成本還是選擇這一類方案的重要因素。一般而言,這是大型企業會去選擇的理想方案,因為可以一次性投入資源和成本,而無須擔心未來服務擴充套件所帶來的成本問題。
下面我們來對比一下saas監控解決方案,這類方案非常簡便並且能夠讓你快速實現監控功能。saas監控方案有非常豐富的整合度,包含了大多數常見的產品/服務stack,從而將設定難度降到最低,並且無需操心未來該如何根據自己的服務進行擴充套件。不過需要注意的是,一旦你選擇了這類方案,成本將成為你必須考慮的問題,因為saas解決方案會隨著服務的擴充套件而不斷增加成本。此外,還有一點需要留意的是,你服務中的指標資料將會流向第三方,所以在選用之前需要評估是否能夠接受其中的風險。
自主託管解決方案內容
下面我們來看一下典型的監控解決方案的元件:
通常情況下,你會有乙個**監控系統充當監控資料的處理中心。同時你會有一些軟體(可能只是api)在主機上(或容器中、或作為**中api)執行。agent將所有指標資料上傳到監控系統,系統將在資料庫中定期重新整理,並基於這些資料進行處理以建立可視的dashboard檢視或發出必要的警報。
這兩種常見功能的實現就需要依靠alert系統和dashboard系統。
以上這些都是構建自己監控系統時需要選擇的元件。現在,讓我們更深入的分析下每個元件我們有哪些合適的選擇:
agent
首先從agent開始,這是從機器中收集和彙總資料的模組,我來簡單分析一下4個主流collector的特點:(具體介紹略)
資料儲存
首要的乙個問題是控資料到底有什麼特別之處:時間數列資料有特殊的模式,也就是資料的收集是按照時間的固定維度來進行的。資料收集量會在短時間內變得非常龐大,因此要想檢視這些資料就需要特定功能,比如聚合和彙總等。此外與其他型別的資料有所不同,保留策略在監控資料過程中會非常常見。
其中最常見的監控資料庫的方式是使用 influx db。
它是專門為時間序列資料設計的,能夠儲存值和元資料。至於擴充套件則非常簡單直接—橫向擴充套件並且隱藏資料庫分片的複雜度。它有乙個sql的查詢語言,你可以設定每個資料庫的保留策略。同時,它開放了rest api,從而可以整合眾多常用的collector,並且整合了cli來支援資料的查詢。
視覺化視覺化是監控解決方案中最重要的組成部分,因為我們要通過它從資料中展示所有的資訊。任何視覺化工具需要提供建立動態監測dashboard的功能,並且支援彙總和深入診斷等功能。乙個好的視覺化工具必須要通過簡單的語言就可以生成這些監控圖表。
grafana
是最流行的視覺化工具,它提供了非常簡單的ui和圖形語言的支援來生產動態監控圖表。
它有一些很酷的功能,包括可以在同一張圖中展示不同時間框架下的時間序列資料,或者在圖表中標註其他事件的資料。這些功能可能在很多時候非常有用,因為看似無關的事件很可能對某些指標造成異常的影響。 此外,grafana可以很便捷地通過鏈結分享動態圖形。grafana支援graphite, elasticsearch, prometheus, influxdb, opentsdb 和其它後端工具。
在這裡我想推薦一種最常用組合方式:cadvisor和stats d用於資料收集,influxdb用於資料儲存,grafana用於視覺化,可以幫助你更好的監控docker化的應用。
在自主託管解決方案中有一種解決方案是把全部stack提前封裝好,這樣你就不需要去挑選相應的元件了,prometheus就是其中一種:
prometheus server由乙個**監控系統組成,可以根據不同的監控目標配置相應的location,並且在相應的節點顯示出這些指標。至於資料的收集,prometheus有一些自定義的方式,比如從docker容器獲取資料等等。你可以在metric endpoint上獲取應用的詳細資料,以純文字的形式進行輸出,之後prometheus會擦除這些資料,並把它們按配置規則進行處理,然後彙總這些資料並將其轉儲到prometheus資料庫中。與influxdb相比,這個資料庫更快而且更小,但並不允許資料的複雜查詢。至於視覺化方面,prometheus提供自己的dashboard並且支援整合grafana工具。
另一種常見的方法是使用graphite。
saas解決方案內容
接下來我們來說說saas解決方案。就像我之前說的,saas方案設定非常簡單同時具有豐富的功能,可以讓你在短時間內立刻實現對服務的監控,問題是可能帶來昂貴的成本。
最流行的saas解決方案是datadog。
這是乙個可以註冊的雲端監控解決方案。只要你有乙個賬戶,就可以安裝agent或使用api把資料傳輸到後端。針對docker,可以選擇在有許可權的主機上安裝docker化的agent,這樣就很方便地從其他容器上收集效能資料了。datadog最讓人感興趣的地方是它豐富的整合度,它整合了大部分的元件,包括software stack、基礎服務提供商和build server中的各種元件。
這能夠幫助你在單一圖形上生成多個不同**的資料,使除錯過程更加簡單。datadog有乙個很酷的特點是互動式的dashboard,你可以就乙個監控圖進行討論並且儲存下來以便日後參考。此外,datadog還具有非常好的閾值警報和異常檢測邏輯。
另乙個很有意思的工具是sysdig。
就其本身而言,sysdig是乙個可供主機安裝的免費開源工具,它配備了乙個整合了所有系統級事件的核心模組,通過docker化的agent收集和處理這些事件。同時,它還提供了乙個叫做csysdig的控制台工具,可以用來檢視通過sysdig收集到的監控指標。你可以註冊sysdig cloud,然後從執行在主機裡的sysdig例項收集相應的監測指標,並且生成系統指標的綜合檢視。sysdig的核心價值在於監控節點和運用工具進行系統級除錯的能力。
因此,如果你的主要目的是收集主機的監控指標,sysdig將會是乙個很不錯的選擇。
作者介紹 saurabh wagh
Novell Linux首席架構師辭職
novell與微軟結盟產生的餘波仍然未了。繼去年samba核心開發人員jeremy allison為 novell的 錯誤 決定辭職轉赴google之後,今年5月4日,novell linux desktop首席架構師,著名 linux核心開發者robert love在其 blog上正式宣布,自己已...
誰來當首席架構師?
前幾天,參加某軟體公司宣布獲得投資的發布會時,發現其董事長頭上又增加了一頂帽子 首席 架構師。其實這並不奇怪,自從比爾?蓋茨給自己創造了這頂帽子之後,國內很多公司的老闆都感覺這頂帽 子比較酷,包括網易丁磊在內的很多人都給自己扣上了這頂帽子。或許他們看來,能夠稱得上是ceo 總經理的人數不勝數,但膽敢...
首席架構師警告「公共雲不能修復愚蠢」
企業使用適當的策略為其業務帶來利益時,公共雲是乙個很好的事情。雖然對某些工作負載而言,可以降低成本,但是對於其他工作負載來說,它可能更昂貴,因為沒有周密的戰略方法,它可能會破壞價值而不是創造價值。換句話說,公共雲不能修復愚蠢的決策 這是美國明尼蘇達州雲計算服務提供商datalink公司首席架構師ja...