第 10 章 容器监控 - 085 - 如何快速部署 Prometheus?
快速搭建 Prometheus 監控系統
?
環境說明
通過 Prometheus 監控兩臺 Docker Host:10.12.31.22 和 10.12.31.23,監控 host 和容器兩個層次的數據。
?
按照架構圖,我們需要運行如下組件:
?
Prometheus Server
Prometheus Server 本身也將以容器的方式運行在 host 10.12.31.23 上
?
Exporter
Prometheus 有很多現成的 Exporter,完整列表請參考 https://prometheus.io/docs/instrumenting/exporters/
?
將使用:
Node Exporter,負責收集 host 硬件和操作系統數據。它將以容器方式運行在所有 host 上
cAdvisor,負責收集容器數據。它將以容器方式運行在所有 host 上
?
Grafana
顯示多維數據,Grafana 本身也將以容器方式運行在 host 10.12.31.23 上
?
運行 Node Exporter
?
在兩個 host 上執行如下命令:
docker run -d -p 9100:9100 \
? -v "/proc:/host/proc" \
? -v "/sys:/host/sys" \
? -v "/:/rootfs" \
? --net=host \
? prom/node-exporter \
? --path.procfs /host/proc \
? --path.sysfs /host/sys \
? --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
?
注意,這里使用了 --net=host,這樣 Prometheus Server 可以直接與 Node Exporter 通信
?
Node Exporter 啟動后,將通過 9100 提供 host 的監控數據。
在瀏覽器中通過 http://10.12.31.22:9100/metrics? 測試一下
?
?
運行 cAdvisor
?
在兩個 host 上執行如下命令:
docker run \
? --volume=/:/rootfs:ro \
? --volume=/var/run:/var/run:rw \
? --volume=/sys:/sys:ro \
? --volume=/var/lib/docker/:/var/lib/docker:ro \
? --publish=8080:8080 \
? --detach=true \
? --name=cadvisor \
? --net=host \
? google/cadvisor:latest
?
注意,這里使用了 --net=host,這樣 Prometheus Server 可以直接與 cAdvisor 通信
?
cAdvisor 啟動后,將通過 8080 提供 host 的監控數據。
在瀏覽器中通過 http://10.12.31.22:8080/metrics 測試一下
?
?
運行 Prometheus Server
?
在 host 10.12.31.23 上執行如下命令:
docker run -d -p 9090:9090 \
? --name prometheus \
? --net=host \
? prom/prometheus
?
注意,這里使用了 --net=host,這樣 Prometheus Server 可以直接與 Exporter 和 Grafana 通信
/etc/prometheus/prometheus.yml 是 Prometheus Server 的配置文件
進入容器,修改配置文件后重啟
static_configs:
? - targets: ['localhost:9090','localhost:8080','localhost:9100','10.12.31.22:8080','10.12.31.22:9100']
?
最重要的配置是:
static_configs:
? - targets: ['localhost:9090','localhost:8080','localhost:9100','10.12.31.22:8080','10.12.31.22:9100']
?
指定從哪些 exporter 抓取數據。這里指定了兩臺 host 上的 Node Exporter 和 cAdvisor
?
另外 localhost:9090 就是 Prometheus Server 自己,可見 Prometheus 本身也會收集自己的監控數據。
同樣地,我們也可以通過 http://10.12.31.23:9090/metrics 測試一下
?
在瀏覽器中打開 http://10.12.31.23:9090 ,點擊菜單 Status -> Targets
?
如下圖所示:
?
所有 Target 的 State 都是 UP,說明 Prometheus Server 能夠正常獲取監控數據
?
?
運行 Grafana
?
在 host 10.12.31.23 上執行如下命令:
docker run -d -i -p 3000:3000 \
? -e "GF_SERVER_ROOT_URL=http://grafana.server.name"? \
? -e "GF_SECURITY_ADMIN_PASSWORD=secret"? \
? --net=host \
? grafana/grafana
?
注意,這里使用了
--net=host,這樣 Grafana 可以直接與 Prometheus Server 通信
-e "GF_SECURITY_ADMIN_PASSWORD=secret 指定了 Grafana admin用戶密碼 secret
?
Grafana 啟動后。在瀏覽器中打開 http://10.12.31.23:3000/? 用戶名:admin,用戶密碼:secret
?
登錄后
Grafana 將引導我們配置 Data Source
?
選擇 Prometheus
?
Url 輸入 Prometheus Server 的地址 http://10.12.31.23:9090 ;其他保持默認值,點擊 Save & Test
?
一切順利,Grafana 應該已經能夠訪問 Prometheus 中存放的監控數據了
?
Grafana 是通過 Dashboard 展示數據的,在 Dashboard 中需要定義:
展示 Prometheus 的哪些多維數據?需要給出具體的查詢語言表達式。
用什么形式展示,比如二維線性圖,儀表圖,各種坐標的含義等。
可見,要做出一個 Dashboard 也不是件容易的事情。
幸運的是可以借助開源社區,直接使用現成的 Dashboard。
?
訪問 https://grafana.com/dashboards?dataSource=prometheus&search=docker ,將會看到很多用于監控 Docker 的 Dashboard。
?
?
下載這些現成的 Dashboard,然后 import 到我們的 Grafana 中就可以直接使用了。
?
?
比如下載 Docker and system monitoring,得到一個 json 文件,然后點擊 Grafana 左上角菜單 Dashboards -> Import。
?
導入下載的 json 文件。
?
Dashboard 將立刻展示出漂亮的圖表。
?
在這個 Dashboard 中,上部分是 host 的數據,我們可以通過 Node 切換不同的 host。
?
Dashboard 的下半部分展示的是所有的容器監控數據。
Grafana 的 Dashboard 是可交互的,我們可以在圖表上只顯示指定的容器、選取指定的時間區間、重新組織和排列圖表、調整刷新頻率,功能非常強大。
?
?
-----------------------------------------引用來自---------------------------------------------
https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587965&idx=1&sn=8bce9449e4d00972fef77f7fafcda0f4&chksm=8d3081e4ba4708f270aea6bb7c8b60bc1480d5775668916ebe6beb69916411d7fe24b53812e3&scene=21#wechat_redirect
轉載于:https://www.cnblogs.com/gsophy/p/10825891.html
總結
以上是生活随笔為你收集整理的第 10 章 容器监控 - 085 - 如何快速部署 Prometheus?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速的利用 Express 框架实现一个
- 下一篇: es6入门读书笔记