摘要:傳統(tǒng)方法比如說你想監(jiān)控你容器的內(nèi)存使用率。不支持維度數(shù)據(jù),這樣一個(gè)名為的容器的指標(biāo),可能被稱為。這是非常偉大并且有用的,但是有限制性。這個(gè)輸出器使用容器的名字,和鏡像作為維度。
本文的原作者是 johannes-fish-ziemke,原文地址是 http://5pi.de/2015/01/26/monitor-docker-containers-with-prometheus/
監(jiān)控 Docker該文中介紹的 Prometheus 的項(xiàng)目地址是 https://prometheus.github.io/
在容器中運(yùn)行你所有的服務(wù)使得獲取深度資源和運(yùn)行特性成為可能,因?yàn)槊總€(gè)容器運(yùn)行在它們自己的 cgroup 中并且 Linux 內(nèi)核給我們提供了各種各樣的指標(biāo)(metrics)。
盡管有一些其他的 Docker 監(jiān)控工具,我將給你們展示我為什么認(rèn)為 SoundCloud 最新發(fā)布的 Prometheus 是最適合監(jiān)控基于容器的基礎(chǔ)架構(gòu)。
Prometheus 特點(diǎn)是高維度數(shù)據(jù)模型,時(shí)間序列是通過一個(gè)度量值名字和一套鍵值對(duì)識(shí)別。靈活的查詢語言允許查詢和繪制數(shù)據(jù)。它采用了先進(jìn)的度量標(biāo)準(zhǔn)類型像匯總(summaries),從指定時(shí)間跨度的總數(shù)構(gòu)建比率或者是在任何異常的時(shí)候報(bào)警并且沒有任何依賴,中斷期間使它成為一個(gè)可靠的系統(tǒng)進(jìn)行調(diào)試。
我會(huì)集中講為什么該數(shù)據(jù)模型和查詢語言如此貼合容器式和動(dòng)態(tài)基礎(chǔ)設(shè)施,對(duì)于這些基礎(chǔ)設(shè)施,你應(yīng)該想著整個(gè)服務(wù)集群而不是單個(gè)服務(wù)器實(shí)例,把服務(wù)器想成牛群中的牛而不是各家自養(yǎng)分散開的寵物。
傳統(tǒng)方法比如說你想監(jiān)控你容器的內(nèi)存使用率。不支持維度數(shù)據(jù),這樣一個(gè)名為 webapp123 的容器的指標(biāo),可能被稱為 container_memory_usage_bytes_webapp123。
但是如果你想展示所有你的 webapp123 容器的內(nèi)存利用率?更先進(jìn)的監(jiān)控解決方案像 graphite 支持這樣。它的特性是層次,樹狀數(shù)據(jù)模型,這樣的指標(biāo)可能被稱為 container.memory_usage_bytes.webapp123?,F(xiàn)在你可以使用正則表達(dá)式像 container.memory_usage_bytes.webapp* 來繪制所有你的 ‘webapp’ 容器的內(nèi)存使用率。Graphite 也支持函數(shù)像 sum() 來通過使用一個(gè)表達(dá)式像 sum(container.memory_usage_bytes.webapp*) 聚合你所有服務(wù)器上的應(yīng)用的內(nèi)存使用率。
這是非常偉大并且有用的,但是有限制性。如果你不想聚合一個(gè)給定名字的所有容器而是一個(gè)給定鏡像的?或者你想把部署你的 canary 同在你生產(chǎn)環(huán)境的服務(wù)器對(duì)比?
可以為每個(gè)用例想出一個(gè)層次結(jié)構(gòu),但是沒有一個(gè)支持它們?,F(xiàn)實(shí)情況顯示,你預(yù)先往往不知道哪個(gè)問題需要從新回答一次并且你開始研究。
PrometheusPrometheus 支持維度數(shù)據(jù),你可以擁有全局和簡單的指標(biāo)名像 container_memory_usage_bytes ,使用多個(gè)維度來標(biāo)識(shí)你服務(wù)的指定實(shí)例。
我已經(jīng)創(chuàng)建了一個(gè)簡單的 container-exporter 來收集 Docker 容器的指標(biāo)以及輸出給 Prometheus 來消費(fèi)。這個(gè)輸出器使用容器的名字,id 和 鏡像作為維度。額外的 per-exporter 維度可以在 prometheus.conf 中設(shè)置。
如果你使用指標(biāo)名字直接作為一個(gè)查詢表達(dá)式,它將返回有這個(gè)使用這個(gè)指標(biāo)名字作為標(biāo)簽的所有時(shí)間序列。
container_memory_usage_bytes{env="prod",id="23f731ee29ae12fef1ef6726e2fce60e5e37342ee9e35cb47e3c7a24422f9e88",instance="http://1.2.3.4:9088/metrics",job="container-exporter",name="haproxy-exporter-int",image="prom/haproxy-exporter:latest"} 11468800.000000 container_memory_usage_bytes{env="prod",id="57690ddfd3bb954d59b2d9dcd7379b308fbe999bce057951aa3d45211c0b5f8c",instance="http://1.2.3.5:9088/metrics",job="container-exporter",name="haproxy-exporter",image="prom/haproxy-exporter:latest"} 16809984.000000 container_memory_usage_bytes{env="prod",id="907ac267ebb3299af08a276e4ea6fd7bf3cb26632889d9394900adc832a302b4",instance="http://1.2.3.2:9088/metrics",job="container-exporter",name="node-exporter",image="prom/container-exporter:latest"} ... ...
如果你運(yùn)行了許多容器,這個(gè)看起來像這樣
為了幫助你使得這數(shù)據(jù)更有意義,你可以過濾(filter) and/or 聚合(aggregate) 這些指標(biāo)。
切片 & 切塊(Slice & Dice)使用 Prometheus 的查詢語言,你可以對(duì)你想的任何維度的數(shù)據(jù)切片和切塊。如果你對(duì)一個(gè)給定名字的所有容器感興趣,你可以使用一個(gè)表達(dá)式像 container_memory_usage_bytes{name="consul-server"},這個(gè)將僅僅顯示 name == "consul-server" 的時(shí)間序列。
Prometheus 也支持正則表達(dá)式,因此匹配完整的腳本你可以這樣做 container_memory_usage_bytes{name=~"^consul"},這將展示起來像這樣:
你也使用使用任何維度過濾,因此你可以獲取在一個(gè)給定主機(jī),給定環(huán)境和給定區(qū)域上所有容器的指標(biāo)。
聚合(Aggregation)和 Graphite 類似,Prometheus 支持聚合函數(shù)但是它的維度更加豐富。使用 sum(container_memory_usage_bytes{name=~"^consul"}) 按預(yù)期匯總你所有 "consul-*" 的內(nèi)存使用率。
現(xiàn)在比如說你想看你的 "consul" 和 "consul-server" 容器平均內(nèi)存使用率的不同,這可以通過提供維度保存這聚合結(jié)果像 avg(container_memory_usage_bytes{name=~"^consul"}) by (name) 來實(shí)現(xiàn):
如果你在多個(gè)區(qū)域有服務(wù)并且配置了區(qū)域名作為一個(gè)額外的標(biāo)簽對(duì),你也可以保存維度來展示每個(gè)名字和區(qū)域的內(nèi)存使用率,通過使用一個(gè)像這樣的表達(dá)式 avg(container_memory_usage_bytes{name=~"^consul"}) by (name,zone)。
使用 Prometheus + Container-Exporter正如你所知,我喜歡在容器中運(yùn)行一切,包括 container-exporter 和 Prometheus,運(yùn)行 container-exporter 應(yīng)該是非常容易的:
docker run -p 8080:8080 -v /sys/fs/cgroup:/cgroup -v /var/run/docker.sock:/var/run/docker.sock prom/container-exporter
現(xiàn)在你需要安裝 Prometheus。關(guān)于這個(gè)參考官方文檔。為了使得 Prometheus 從 container-exporter 拉取指標(biāo),你需要把它作為目標(biāo)添加到配置。比如:
job: { name: "container-exporter" scrape_interval: "1m" target_group: { labels: { label: { name: "zone" value: "us-east-1" } label: { name: "env" value: "prod" } } target: "http://1.2.3.4:8080/metrics" } }
現(xiàn)在從新構(gòu)建你的鏡像如文檔中描述的那樣并啟動(dòng)它。Prometheus 現(xiàn)在應(yīng)該每 60s 輪詢你的 container-exporter。
總結(jié)因?yàn)?Prometheus 的靈活性,它的性能和最小化依賴,它是我選擇的監(jiān)控系統(tǒng)。這就是為什么從去年起我介紹了 Prometheus 作為我們監(jiān)控 Docker 的主要監(jiān)控系統(tǒng)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/26362.html
摘要:由發(fā)明,適合于監(jiān)控基于容器的基礎(chǔ)架構(gòu)。有關(guān)其數(shù)據(jù)聚合的功能可以閱讀數(shù)據(jù)聚合分組新一代系統(tǒng)監(jiān)控的核心功能。所抓取的性能指標(biāo)算是較為全面,部署和展現(xiàn)方式都是相當(dāng)簡單易懂的。 如今,越來越多的公司開始使用 Docker 了,2 / 3 的公司在嘗試了 Docker 后最終使用了它。為了能夠更精確的分配每個(gè)容器能使用的資源,我們想要實(shí)時(shí)獲取容器運(yùn)行時(shí)使用資源的情況,怎樣對(duì) Docker 上的應(yīng)...
摘要:監(jiān)控告警是運(yùn)營系統(tǒng)最核心的功能之一,騰訊內(nèi)部有一套很成熟的監(jiān)控告警平臺(tái),而且開發(fā)運(yùn)維同學(xué)已經(jīng)習(xí)慣這套平臺(tái),如果我們針對(duì)容器再開發(fā)一個(gè)監(jiān)控告警平臺(tái),會(huì)花費(fèi)很多精力,而且沒有太大的意義。也是一款付費(fèi)監(jiān)控解決方案,計(jì)劃收費(fèi)方案是美分小時(shí)。 如今,越來越多的公司開始使用 Docker 了,現(xiàn)在來給大家看幾組數(shù)據(jù): 2 / 3 的公司在嘗試了 Docker 后最終使用了它 也就是說 Docker...
摘要:二可視化是一個(gè)開源的圖表可視化系統(tǒng),簡單說圖表配置比較方便生成的圖表比較漂亮。 一. 概述 Prometheus自帶了一個(gè)web服務(wù),包括一個(gè)默認(rèn)的dashboard,可以使用表達(dá)式查詢并進(jìn)行圖表可視化,默認(rèn)服務(wù)的地址為:http://prometheus_ip:9090 如下圖: showImg(https://segmentfault.com/img/remote/14600000...
摘要:二可視化是一個(gè)開源的圖表可視化系統(tǒng),簡單說圖表配置比較方便生成的圖表比較漂亮。 一. 概述 Prometheus自帶了一個(gè)web服務(wù),包括一個(gè)默認(rèn)的dashboard,可以使用表達(dá)式查詢并進(jìn)行圖表可視化,默認(rèn)服務(wù)的地址為:http://prometheus_ip:9090 如下圖: showImg(https://segmentfault.com/img/remote/14600000...
摘要:二可視化是一個(gè)開源的圖表可視化系統(tǒng),簡單說圖表配置比較方便生成的圖表比較漂亮。 一. 概述 Prometheus自帶了一個(gè)web服務(wù),包括一個(gè)默認(rèn)的dashboard,可以使用表達(dá)式查詢并進(jìn)行圖表可視化,默認(rèn)服務(wù)的地址為:http://prometheus_ip:9090 如下圖: showImg(https://segmentfault.com/img/remote/14600000...
閱讀 2777·2021-11-23 09:51
閱讀 1109·2021-09-24 10:37
閱讀 3843·2021-09-02 15:15
閱讀 2042·2019-08-30 13:03
閱讀 1980·2019-08-29 15:41
閱讀 2708·2019-08-29 14:12
閱讀 1505·2019-08-29 11:19
閱讀 3384·2019-08-26 13:39