cAdvisor+Prometheus+Grafana監控docker

                               cAdvisor+Prometheus+Grafana監控dockernode

1、cAdvisor(須要監控的主機都要安裝)

官方地址: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

2、Prometheus

官方地址: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

  •         時間序列數據經過 metric 名和鍵值對來區分。
  •         全部的 metrics 均可以設置任意的多維標籤。
  •         數據模型更隨意,不須要刻意設置爲以點分隔的字符串。
  •         能夠對數據模型進行聚合,切割和切片操做。
  •         支持雙精度浮點類型,標籤能夠設爲全 unicode。


    靈活而強大的查詢語句(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 Server: 用於收集和存儲時間序列數據。
  •     Client Library: 客戶端庫,爲須要監控的服務生成相應的 metrics 並暴露給 Prometheus server。當 Prometheus server 來 pull 時,直接返回實時狀態的 metrics。
  •     Push Gateway: 主要用於短時間的 jobs。因爲這類 jobs 存在時間較短,可能在 Prometheus 來 pull 以前就消失了。爲此,此次 jobs 能夠直接向 Prometheus server 端推送它們的 metrics。這種方式主要用於服務層面的 metrics,對於機器層面的 metrices,須要使用 node exporter。
  •     Exporters: 用於暴露已有的第三方服務的 metrics 給 Prometheus。
  •     Alertmanager: 從 Prometheus server 端接收到 alerts 後,會進行去除重複數據,分組,並路由到對收的接受方式,發出報警。常見的接收方式有:電子郵件,pagerduty,OpsGenie, webhook 等。一些其餘的工具。


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

3、Grafana

官方地址: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.成品

相關文章
相關標籤/搜索