過去的一年中,關於 docker 的話題從未斷過,而如今,從嘗試 docker 到最終決定使用 docker 的轉化率依然在逐步公升高,關於 docker 的討論更是有增無減。另一方面,大家的注意力也漸漸從 「docker 是什麼」轉移到「實踐 docker」與「監控 docker」上。
本文**劉斌博文「如何選擇 docker 監控方案 」,文中劉斌從技術的角度深入解釋了 docker 監控的資料採集原理,介紹了現有開源的監控方案,以及能 夠對 docker 進行監控功能的主流 saas 服務工具。
對於中小型企業尤其創業公司來說,自主開發或者直接利用現有的開源工具進行監控都有一些問題,主要是成本和風險的問題。對於中小企業,應該先把精力集中在發展核心業務,能外包的就先不自己做。而且很多中小公司大家都是全棧,沒有專門的運維人員,都是臨時抱佛腳,隨時都會變成救火隊員。
saas最大的優點是什麼?那就是免運維,開箱即用,修改的**少甚至不需要修改**,或者只需要簡單的安裝乙個agent就可以工作了。很多saas軟體的開場白都是執行一條yum install
,然後倒上一杯咖啡等幾分鐘,就能看到資料了。
你的初期投入非常小,上手非常快,而且成本比較低(如果你的公司已經有數百上千伺服器了,則這部分成本可能會變高,就跟是自建機房還是用雲主機的對比一樣)。
傳統apm一般也都提供了對docker的監控:
最近也有很多專門用於基礎設施監控的saas服務
rancherlab公司有人寫了篇文章,大家可以參考下。這篇文章名為《comparing seven monitoring options for docker》,即對比了七種不同的監控docker的方案,包括使用 docker stats 命令, cadvisor, prometheus ,sensu,以及saas服務 scout, sysdig cloud and datadog等方案,作為結論作者覺得datadog是這其中最優秀的方案。
rancherlab有乙個產品叫rancheos,是乙個專門為了執行docker準備的微型linux版本,它的口號是「the perfect place to run docker」。跟coreos類似,但是貌似功能不如coreos多,也沒有coreos有名,也沒有coreos中fleet、flannel和etcd這樣的元件,尤其是etcd,可以說是coreos的副產品,但是幾乎成了docker業界標準的kv store和服務發現元件了。
國外最流行的saas解決方案是datadog,國內可能比較成熟、規模較大的應該算是cloud insight了。這類服務使用者只需要註冊乙個賬號,按照安裝過程通過一條命令來安裝探針即可在web展示端看到資料。
要說到datadog的不足,那就是在國外,網路延遲需要考慮,萬一哪天不科學了也需要有所準備。**方面datadog也比較貴。免費plan支援5臺機器,而且只保留一天的資料,而且沒有報警功能。收費版15美元一台主機,支援報警功能,資料儲存13個月。
說道saas,不得不提客服,直接面對非母語客服人員交流起來肯定會有諸多不順吧。
當然,最便宜的還是cloud insight,有多便宜呢,官方定價的話3個探針以下是免費的,支援超過3臺主機的話,平均每天1快錢。這只是官方定價,實際上還會便宜,貌似聯絡客服就可以知道有多便宜了。
cloud insight的圖表功能也很豐富,能對任何指標以圖表的方式展示,還能在圖表上疊加事件,比如報警通知、服務啟動停止等,能在觀察到metric變動趨勢的同時,看到相應的時間,了解metric發生變動的原因。比如cpu load超過一定值時,可能觸發報警,這時你能在圖表上看到相應的事件,同樣,如果cpu load一直不是很低,但是從某一時間點開始變低了,你可能也能從一次新的**部署中了解原因。
cloud insight還支援chatops整合,包括國內的 bearychat 和簡聊。隨著devops文化的普及,相信這些工具的重要性也會與日俱增。不過貌似簡聊已經開源了(不運營了?)。
可以認為sysdig是strace + tcpdump + htop + iftop + lsof + 眾多linux常用的系統監控命令的合體。
如果你熟悉tcpdump,那麼你知道它能還原整個網路流量,而sysdig則是作業系統級別的監控工具,能捕捉到所有os事件和資料。而且sysdig原生支援linux container,包括docker和lxc,提供了基本的指標監控資訊。除了效能指標,sysdig還能採集trace等日誌資訊,用於以後的問題分析和解決。
sysdig cloud是sisdig的saas版,除了基本的單機sysdig功能之外,還提供了跨平台跨基礎設施的元件間依賴關係的視覺化。
librato是乙個資料聚合平台,而不是嚴格意義的監控系統。
librato很容易從aws cloudwatch和heroku獲得資料,如果是自己監控主機或者docker,需要使用collectd框架。它也有很多外掛程式,可以從statsd、riemann等資料來源採集資料。
librato也支援報警,基於metric和條件,設定報警資訊。
作為tsdb,atsd支援長時間儲存高精度的metric資料。atsd支援多種資料採集工具和協議,比如tcollector, collectd,當然atsd也支援從多台docker主機手機指標資料,並長期儲存,進行視覺化和分析。
除了傳統的時間序列資料,atsd還支援屬性(properties)和訊息這兩種型別的資料。屬性一般用於儲存meta data,這有點類似標籤。和opentsdb一樣,atsd也支援tag,我們可以使用這些tag進行過濾和聚合。
atsd內建了自動回歸推斷演算法(holt-winters,arima),可以提早**故障。**功能的準確性取決於資料的採集頻率,儲存時間(也就是資料量大小)和演算法。
最大的遺憾,就是atsd不是開源,也不是免費的軟體,不過他們提供了乙個社群版可以免費使用,但是你只能在乙個節點上安裝atsd,而且不能用於盈利性服務,也不能對軟體進行修改以及再發布。
如果我們只是評估一下,或者想自己構建監控方案,它的產品設計還是非常值得我們來借鑑一下。
資料敏感性
採用saas,意味著你的資料都將會儲存到公網,可能會帶來心理不安全感。實際上saas反而會更安全些,尤其是對中小公司沒有專門的安全運維團隊的情況下。
成本(遷移和使用成本)
一般來說這是乙個一次性投入成本。而對於大公司來說,就像公有雲一樣,成本可能會成為問題。
內部抵抗(觀念、個人愛好)
來自技術人員自身的抵抗,不是每個人都喜歡自己變得輕鬆,使用saas可能會給一些人帶來工作上的不充實感。
一種觀點:監控服務狀態勝過監控個別容器,通過tag機制對服務整體的效能指標進行聚合。
tag可以是任何維度,比如bu,地區,服務,甚至個別容器。
比如docker和kubernetes等都支援label機制,即tag機制。
啟動daemon:
docker daemon –label com.example.group=「webserver」
啟動容器:
docker run –label com.example.group=「webserver」
dockerfile:
label com.example.group=「webserver」
通過api化實現共贏。開源軟體比如fluentd、collectd等,都支援外掛程式功能。包括docker本身,也在1.11版本中,採用了runc作為容器執行時,在上面通過containerd來統一控制,來支援符合oci標準的容器。
包括從探針到展示、告警,就是現在類似datadog和cloud insight這樣的產品,以及支援中介軟體的詳細程度,就像乙個大市場,什麼都能買到,不管你用什麼軟體,平台都能提供監控。
這就像是去了酒吧突然想吃碗拉麵,然後竟然酒吧能給你做出來的那種感覺。
另乙個層面就是從ruem(實時使用者體驗管理)到基礎設施層的 打通 。比如你看到某url的使用者http響應較慢,如果不能跟後端的apm打通,你儘管能識別出問題,但是你不知道如何解決。如果和後端的apm以及基礎設施監控打通,你就能定位到http響應慢時,相應的後端**的位置,並根據後端**的位置從而進一步找到mysql的監控資料以及系統異常事件,立刻知道問題的根本原因所在並解決問題,可以說效率應該能提高幾個數量級。
系統監控工具如果能夠做到 all in one,真的對解決人力和時間成本上有非常大的幫助。
跨元件、跨基礎設施和應用,自動識別元件以及元件之間的依賴關係,以幫助更好的發現問題和解決問題。
這類服務有:
-- 全文完 --
本文** oneapm 官方部落格
Docker 監控之 SaaS 解決方案
過去的一年中,關於 docker 的話題從未斷過,而如今,從嘗試 docker 到最終決定使用 docker 的轉化率依然在逐步公升高,關於 docker 的討論更是有增無減。另一方面,大家的注意力也漸漸從 docker 是什麼 轉移到 實踐 docker 與 監控 docker 上。本文 劉斌博文...
效能測試之Docker監控
微服務 大中台盛行的當下,容器化已經被廣泛使用。在效能測試過程中,對容器的監控模型構建也是必不可少的。我們效能測試監控模型的構建一直是圍繞著prometheus和grafana來展開的。她們可以快速的構建我們效能測試的絕大多數的監控模型 已介紹搭建了資料庫監控 伺服器監控。思路是相同的,也可自行快速...
Docker監控平台
目錄docker監控平台由容器監控元件cadvisor 主機監控元件node exporter 時序資料庫prometheus 告警處理元件alertmanager 圖表展示工具grafana構成,所有元件均已容器方式執行。docker run tid name grafana p 3000 300...