上一篇文章咱們已經學習了比較流行的cAdvisor+InfluxDB+Grafana組合進行Docker監控。這節課來學習Prometheus+cAdvisor+Grafana組合。html
cAdvisor是專門用來採集數據的工具,也是google公司的一款開源產品,Grafana則是前端展現,支持多種數據源,定製很是靈活。而prometheus則做爲數據源。前端
總體架構圖以下:node
Prometheus(普羅米修斯)是一個最初在SoundCloud上構建的監控系統。自2012年成爲社區開源項目,擁有很是活躍的開發人員和用戶社區。爲強調開源及獨立維護,Prometheus於2016年加入雲原生雲計算git
基金會(CNCF),成爲繼Kubernetes以後的第二個託管項目。github
官網:https://prometheus.io
github地址:https://github.com/prometheusweb
二、Prometheus 特色
• 多維數據模型:由度量名稱和鍵值對標識的時間序列數據
• PromSQL:一種靈活的查詢語言,能夠利用多維數據完成複雜的查詢
• 不依賴分佈式存儲,單個服務器節點可直接工做
• 基於HTTP的pull方式採集時間序列數據
• 推送時間序列數據經過PushGateway組件支持
• 經過服務發現或靜態配置發現目標
• 多種圖形模式及儀表盤支持(grafana)docker
• Prometheus Server:收集指標和存儲時間序列數據,並提供查詢接口
• ClientLibrary:客戶端庫
• Push Gateway:短時間存儲指標數據。主要用於臨時性的任務
• Exporters:採集已有的第三方服務監控指標並暴露metrics
• Alertmanager:告警
• Web UI:簡單的Web控制檯flask
實例:能夠抓取的目標稱爲實例(Instances)
做業:具備相同目標的實例集合稱爲做業(Job)服務器
scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node' static_configs: - targets: ['192.168.1.100:9090']
二進制部署:https://prometheus.io/docs/prometheus/latest/getting_started/
Docker部署:https://prometheus.io/docs/prometheus/latest/installation/
訪問Web:http://localhost:9090
配置Prometheus監控自己:
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']架構
下面已docker部署爲例:
docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
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: ['localhost:9090'] - job_name: 'cadvisor' static_configs: - targets: ['10.11.97.187:8081']
這時就能夠經過9090端口進行訪問prometheus的頁面了:
prometheus網頁比較簡單,包括告警、圖像、以及基本信息。
全局配置
scrape配置
github地址:https://github.com/google/cadvisor
經過docker快速安裝cadvisor,而後經過8081就能夠訪問了。
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=8081:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest
訪問web頁面:
裏面包含的內容很是豐富,包括docker主機上全部容器的資源監控和圖表展現。
一句話安裝:
docker run -d -p 3000:3000 grafana/grafana
安裝完成後,便可訪問:
進入grafana後,點擊設置,添加數據源,填寫類型爲prometheus以及prometheus的URL。
grafana裏面的template(模板)能夠本身製做,也能夠直接從grafana官網導入。
點擊Import dashaboard,咱們直接從grafana官網導入模板:
輸入ID號:
輸入後回車,grafana會自動從官網查到到官網,並能夠進行導入:
記得在prometheus裏面把添加cadvisor做爲採集數據源:
稍等片刻後,grafana裏面就會有數據了: