1. 程式人生 > >docker:十分鐘構建容器監控系統cAdvisor+InfluxDB+Grafana

docker:十分鐘構建容器監控系統cAdvisor+InfluxDB+Grafana

docker docker監控 cadvisor influxdb grafana

1.概念

cAdvisor:用於數據采集
InfluxDB:用於數據存儲
Grafana:用於數據展示
技術分享圖片

1.1 cAdvisor

它是Google用來監測單節點的資源信息的監控工具。Cadvisor提供了一目了然的單節點多容器的資源監控功能。Google的Kubernetes中也缺省地將其作為單節點的資源監控工具,各個節點缺省會被安裝上Cadvisor。總結起來主要兩點:

  • 展示 Host 和容器兩個層次的監控數據。

  • 展示歷史變化數據。

?由於 cAdvisor 提供的操作界面略顯簡陋,而且需要在不同頁面之間跳轉,並且只能監控一個 host,這不免會讓人質疑它的實用性。但 cAdvisor 的一個亮點是它可以將監控到的數據導出給第三方工具,由這些工具進一步加工處理。

?我們可以把 cAdvisor 定位為一個監控數據收集器,收集和導出數據是它的強項,而非展示數據。

1.2 InfluxDB

InfluxDB 是用Go語言編寫的一個開源分布式時序、事件和指標數據庫,無需外部依賴。類似的數據庫有Elasticsearch、Graphite等。

InfluxDB主要特色功能

  • 基於時間序列,支持與時間有關的相關函數(如最大,最小,求和等);
  • 可度量性:你可以實時對大量數據進行計算;
  • 基於事件:它支持任意的事件數據;

InfluxDB主要特點

  • 無結構(無模式):可以是任意數量的列;
  • 可拓展的;
  • 支持min, max, sum, count, mean, median 等一系列函數,方便統計;
  • 原生的HTTP支持,內置HTTP API;
  • 強大的類SQL語法;
  • 自帶管理界面,方便使用;

1.3 Grafana

Grafana是一個可視化面板(Dashboard),有著非常漂亮的圖表和布局展示,功能齊全的度量儀表盤和圖形編輯器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作為數據源。Grafana主要特性:靈活豐富的圖形化選項;可以混合多種風格;支持白天和夜間模式;多個數據源。

2.部署過程

  • 創建自定義網絡monitor(自定義網絡名稱),用於後期容器加入此網絡中,當然你也可以忽略此步;
  • 創建Influxdb容器,創建數據用戶、數據庫;
  • 創建cAdvisor容器;
  • 創建Grafana容器,配置grafana;

3.開始部署

3.1 創建自定義網絡

[root@ganbing ~]# docker network create monitor
cc193568263604e3bc3e7a5d78f18d07af99810e1d5c19bac99fccfa045f48f5

查看創建的網絡:
技術分享圖片

3.2 創建influxdb容器

  • 啟動容器:

    [root@ganbing ~]# docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb
  • 查看是否啟動:

    [root@ganbing ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES
    30b9789e680d        tutum/influxdb      "/run.sh"           22 seconds ago      Up 21 seconds       0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp   influxdb
  • 訪問influxdb控制臺,ip+8083端口訪問:
    技術分享圖片

  • 創建cadvisor數據庫、用戶:

    CREATE USER "root" WITH PASSWORD ‘123456‘ WITH ALL PRIVILEGES

技術分享圖片

CREATE DATABASE "cadvisor"

技術分享圖片

3.3 創建cadvisor容器

  • 運行cadvisor容器:

    $docker run -d --name=cadvisor --net monitor -p 8080:8080 --mount type=bind,src=/,dst=/rootfs,ro --mount type=bind,src=/var/run,dst=/var/run --mount type=bind,src=/sys,dst=/sys,ro --mount type=bind,src=/var/lib/docker/,dst=/var/lib/docker,ro google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
  • 查看cadvisor容器:

    [root@ganbing ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    90871ba5be7e        google/cadvisor     "/usr/bin/cadvisor -…"   51 seconds ago      Up 50 seconds       0.0.0.0:8080->8080/tcp   cadvisor
  • 通過ip+8080端口訪問測試一下:
    技術分享圖片
    從上圖可以看到,其實cadvisor也有基礎的圖形展示功能,我們這裏主要用它來做數據采集。

3.4 創建granafa容器

  • 運行granafa容器:

    [root@ganbing ~]# docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
  • 查看運行結果:

    [root@ganbing ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
    a90e03e2017a        grafana/grafana     "/run.sh"           17 seconds ago      Up 16 seconds       0.0.0.0:3000->3000/tcp   grafana
  • 訪問granfa,通過ip+3000端口的方式訪問,默認賬戶密碼(admin/admin):
    技術分享圖片

  • 添加數據源Add data source,如下圖:
    技術分享圖片

技術分享圖片

  • 新建New dashboard,如下圖:
    技術分享圖片

    技術分享圖片

    技術分享圖片

  • 新建了一個監控項之後,回來HOME,可以發現剛才創建的項目:
    技術分享圖片

到這裏cAdvisor+InfluxDB+Grafana容器監控系統就部署完成了,至於其它grafana的監控項配置不是本文的重點,大家如果感興趣可以參考一些官方資料或者百度一些資料參閱,都是圖形化的界面操作,多點、多玩、多測兩個就搞明白了。

docker:十分鐘構建容器監控系統cAdvisor+InfluxDB+Grafana