cAdvisor+Prometheus+Grafana監控dockernode
官方地址:https://github.com/google/cadvisorlinux
CAdvisor是谷歌開發的用於分析運行中容器的資源佔用和性能指標的開源工具。CAdvisor是一個運行時的守護進程,負責收集、聚合、處理和輸出運行中容器的信息。
注意在查找相關資料後發現這是最新版cAdvisor的bug,換成版本爲google/cadvisor:v0.24.1 就ok了,映射主機端口默認是8080,能夠修改。git
sudo docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --volume=/dev/disk/:/dev/disk:ro \ --publish=8090:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:v0.24.1
cAdvisor exposes a web UI at its port:
http://<hostname>:<port>/
下圖爲cAdvisor的web界面,數據實時刷新可是不能存儲。github
查看json格式
http://192.168.247.212:8090/metrics
web
官方地址:https://prometheus.io/
隨着容器技術的迅速發展,Kubernetes 已然成爲你們追捧的容器集羣管理系統。Prometheus 做爲生態圈 Cloud Native Computing Foundation(簡稱:CNCF)中的重要一員,其活躍度僅次於 Kubernetes, 現已普遍用於 Kubernetes 集羣的監控系統中。本文將簡要介紹 Prometheus 的組成和相關概念,並實例演示 Prometheus 的安裝,配置及使用,以便開發人員和雲平臺運維人員能夠快速的掌握 Prometheus。
Prometheus 簡介
Prometheus 是一套開源的系統監控報警框架。它啓發於 Google 的 borgmon 監控系統,由工做在 SoundCloud 的 google 前員工在 2012 年建立,做爲社區開源項目進行開發,並於 2015 年正式發佈。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成爲受歡迎度僅次於 Kubernetes 的項目。
做爲新一代的監控框架,Prometheus 具備如下特色:
強大的多維度數據模型:docker
靈活而強大的查詢語句(PromQL):在同一個查詢語句,能夠對多個 metrics 進行乘法、加法、鏈接、取分數位等操做。
易於管理: Prometheus server 是一個單獨的二進制文件,可直接在本地工做,不依賴於分佈式存儲。
高效:平均每一個採樣點僅佔 3.5 bytes,且一個 Prometheus server 能夠處理數百萬的 metrics。
使用 pull 模式採集時間序列數據,這樣不只有利於本機測試並且能夠避免有問題的服務器推送壞的 metrics。
能夠採用 push gateway 的方式把時間序列數據推送至 Prometheus server 端。
能夠經過服務發現或者靜態配置去獲取監控的 targets。
有多種可視化圖形界面。
易於伸縮。
須要指出的是,因爲數據採集可能會有丟失,因此 Prometheus 不適用對採集數據要 100% 準確的情形。但若是用於記錄時間序列數據,Prometheus 具備很大的查詢優點,此外,Prometheus 適用於微服務的體系架構
Prometheus 組成及架構
Prometheus 生態圈中包含了多個組件,其中許多組件是可選的:json
Prometheus 架構圖
服務器
安裝步驟:架構
wget https://github.com/prometheus/prometheus/releases/download/v2.8.0/prometheus-2.8.0.linux-amd64.tar.gz tar -xf prometheus-2.8.0.linux-amd64.tar.gz cd prometheus-2.8.0.linux-amd64 修改配置文件prometheus.yml,添加如下內容 static_configs: - targets: ['192.168.247.211:9090'] - job_name: 'docker' static_configs: - targets: - "192.168.247.211:8090" - "192.168.247.212:8090" cp prometheus promtool /usr/local/bin/ 啓動: nohup prometheus --config.file=./prometheus.yml &
個人完整簡單prometheus.yml配置文件:框架
# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['192.168.247.211:9090'] - job_name: 'docker' static_configs: - targets: - "192.168.247.211:8090" - "192.168.247.212:8090"
訪問:http://192.168.247.211:9090
官方地址:https://grafana.com/
安裝步驟:
wget https://dl.grafana.com/oss/release/grafana-6.0.1-1.x86_64.rpm sudo yum localinstall grafana-6.0.1-1.x86_64.rpm -y systemctl daemon-reload systemctl start grafana-server systemctl status grafana-server #設置開機自啓動 Enable the systemd service so that Grafana starts at boot. sudo systemctl enable grafana-server.service
1.訪問:http://192.168.247.211:3000/login
默認密碼:admin/admin
2.配置Prometheus數據源
3.下載模板模板地址:https://grafana.com/dashboards
4.導入模板
5.成品