使用cAdvisor+Influxdb+Grafana監控系統


  今天准備開始研究研究當前非常流行的Grafana+Influxdb監控系統,兩者都是非常輕量級的應用但是功能卻異常強大,可以說Grafana在作圖顯示方面真的毫不遜色與Cacti。

組件介紹

cAdvisor

  開源軟件cAdvisor(Container Advisor)是用於監控容器運行狀態的利器之一,該項目主頁為https://github.com/google/cadvisor,它被用於多個與docker相關的開源項目中。實際上在Kubernetes系統中,cAdvisor已經被默認集成到了kubelet組件內。cAdvisor提供了web界面可供瀏覽器訪問,在接下來的環境中我們會部署CAdvisor來收集數據信息。

Influxdb

  說到Grafana就不得不提到Influxdb數據庫,Influxdb是用Go語言編寫的一個開源的分布式時序、事件和指標數據庫,不需要外部依賴,該項目的主頁為https://www.influxdata.com。

它有三大特性:

  • 時序性(Time Series):與時間相關的函數的靈活使用(諸如最大、最小、求和等)。
  • 度量(Metrics):對實時大量數據進行計算。
  • 事件(Event):支持任意的事件數據,換句話說,任意事件的數據我們都可以做操作。

同時,它還有以下幾大特點:

  • schemaless(無結構),可以是任意數量的列;
  • min, max, sum, count, mean, median 一系列函數,方便統計;
  • Native HTTP API, 內置http支持,使用http讀寫;
  • Powerful Query Language 類似sql;
  • Built-in Explorer 自帶管理工具。

Grafana

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

環境准備

創建Influxdb容器,並配置數據庫信息。

1.下載influxdb容器。
docker search influxdb

INDEX       NAME                                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/influxdb                                           InfluxDB is an open source time series dat...   481       [OK]
docker.io   docker.io/tutum/influxdb                                     InfluxDB image - listens in port 8083 (web...   219                  [OK]
docker.io   docker.io/telegraf                                           Telegraf is an agent for collecting metric...   156       [OK]
docker.io   docker.io/chronograf                                         Chronograf is a visualization tool for tim...   85        [OK]

docker pull docker.io/influxdb
2.運行influxdb容器。
docker run -d -p 8086:8086 --name influxdb docker.io/influxdb

  • -d:以后台進程的形式運行容器。
  • -p:進行端口映射。

  Influxdb在0.13版本以后就已經關閉了web管理界面,但是目前在國內查到的文檔大多是時間比較久的文檔,所以配置時大多存在web界面的配置,實際上在1.2以后的版本中web管理界面就已經被刪除了,所以我們這里做的端口映射只做了一個。

3.進入容器配置所需數據庫以及賬戶信息。
docker ps

CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                            NAMES
404c10bd3531        docker.io/influxdb   "/entrypoint.sh in..."   22 minutes ago      Up 21 minutes       0.0.0.0:8086->8086/tcp   influxdb

docker exec -it 404 /bin/bash
influx

Connected to http://localhost:8086 version 1.5.3
InfluxDB shell version: 1.5.3

  在我們登錄到Influxdb中可以顯示出我們當前Influxdb數據庫的版本信息。
create database cadvisor
use cadvisor
CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES
4.退出數據庫在界面進行登錄測試。
influx -username root -password 123456 -database cadvisor
  我們首先創建了為Grafana提供數據的數據庫名稱並為此數據庫創建了一個賬戶及密碼。

創建cAdvisor容器。

1.下載cAdvisor鏡像。
docker pull docker.io/google/cadvisor
2.運行cAdvisor容器。
運行前首先要查看influxdb的ip地址,或者直接使用本機映射的地址,以便我們啟動時的連接。
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 404

172.17.0.2
sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged=true \
  google/cadvisor:latest \
  -storage_driver=influxdb \
  -storage_driver_db=cadvisor \
  -storage_driver_user=root \
  -storage_driver_password=123456 \
  -storage_driver_host=172.17.0.2:8086 

  以上創建命令可以查看cAdvisor官網,需要注意的是,我們要為cAdvisor提供連接Influxdb的配置信息,使用官網提供的配置方法創建cAdvisor時會有以下報錯需要注意:

F0606 02:09:21.619637       1 cadvisor.go:156] Failed to start container manager: open /sys/fs/cgroup/cpuset: permission denied

解決辦法:(創建容器時添加上此選項)

--privileged=true \

3.登錄web界面,查看cAdvisor展示數據。

4.登錄influxdb查看cAdvisor是否將數據推送到influxdb。
use cadvisor
show measurements

name: measurements
name
----
cpu_usage_per_cpu
cpu_usage_system
cpu_usage_total
cpu_usage_user
fs_limit
fs_usage
load_average
memory_usage
memory_working_set
rx_bytes
rx_errors
tx_bytes
tx_errors

  至此,我們已經可以確認cAdvisor已經收集了數據並存儲至Influxdb中,接下來我們就可以創建Grafana用來展示我們當前的數據了。

創建Grafana容器並配置Grafana展示數據。

1.下載Grafana鏡像。
docker search grafana

INDEX       NAME                                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/grafana/grafana                                    The official Grafana docker container           761
docker.io   docker.io/kamon/grafana_graphite                             All in one image running StatsD, Graphite ...   145
docker.io   docker.io/monitoringartist/grafana-xxl                       Dockerized Grafana 5.x/4.x/3.x with all pr...   61                   [OK]
docker.io   docker.io/tutum/grafana                                      Grafana dashboard for InfluxDB. Please set...   56                   [OK]
docker.io   docker.io/samuelebistoletti/docker-statsd-influxdb-grafana   Docker Image with Telegraf (StatsD), Influ...   50

docker pull docker.io/grafana/grafana
2.創建Grafana容器。
docker run -d --name grafana -p 3000:3000 docker.io/grafana/grafana
3.登錄web界面配置Grafana。

  Grafana默認的用戶名密碼為admin
1.修改默認用戶密碼。

2.將Influxdb數據源添加入Grafana。

3.創建新的Dashbord。

4.接下來就是更詳細的配置項等待我們配置。

數據展示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM