天天看點

InfluxDB部署以及運作Cadvisor

docker監控神器cadvisor的部署

01. 安裝influxdb1.7

mkdir -p /home/influxdb/
cd /home/influxdb
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.8_linux_amd64.tar.gz
tar xf influxdb-1.7.8_linux_amd64.tar.gz 
cd /home/influxdb/influxdb-1.7.8-1/
mkdir data log meta wal
cd /home/influxdb/influxdb-1.7.8-1/etc/influxdb
cp influxdb.conf influxdb.conf.bak      

02. 目錄解釋

/usr/bin

influxd    influxdb伺服器
influx      influxdb指令行用戶端
influx_inspect  檢視工具
influx_stress  壓力測試工具
influx_tsm  資料庫轉換工具(将資料庫從b1或bz1格式轉換為tsm1格式)      

/var/lib/influxdb/

data  存放最終存儲的資料,檔案以.tsm結尾
meta  存放資料庫中繼資料
wal  存放預寫日志檔案      

/var/log/influxdb

influxd.log  日志檔案      

/etc/influxdb

influxdb.conf  配置檔案      

/var/run/influxdb/

influxd.pid  PID檔案      

03. 修改配置檔案

[root@es_data02 influxdb]# egrep -v "^#|^$|#" influxdb.conf
[meta]
  dir = "/home/influxdb/influxdb-1.7.8-1/meta"
[data]
  dir = "/home/influxdb/influxdb-1.7.8-1/data"
  wal-dir = "/home/influxdb/influxdb-1.7.8-1/wal"
  series-id-set-cache-size = 100
[coordinator]
[retention]
   enabled = true
   check-interval = "30m"
[shard-precreation]
[monitor]
[http]
[logging]
[subscriber]
[[graphite]]
[[collectd]]
[[opentsdb]]
[[udp]]
[continuous_queries]
[tls]      

04. 啟動

cd /home/influxdb/influxdb-1.7.8-1/logs
nohup  /home/influxdb/influxdb-1.7.8-1/usr/bin/influxd -config /home/influxdb/influxdb-1.7.8-1/etc/influxdb/influxdb.conf &      

注:預設情況下,InfluxDB使用以下網絡端口:

  • 8083用于InfluxDB的管理面闆(1.3版本之後無web界面);
  • 8086用于通過InfluxDB的HTTP API進行用戶端 - 伺服器的通信;

05. 登入

cd /home/influxdb/influxdb-1.7.8-1/usr/bin
[root@es_data02 bin]# ./influx
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> show databases;
name: databases
name
----
_internal

#預設使用者名密碼為root
[root@es_data02 bin]# ./influx -username root -password root
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
>      

06. InfluxDB 概念

database: 資料庫 如之前建立的資料庫cadvisor。

timestamp: 時間戳,因為InfluxDB是時序資料庫,它的資料裡面都有一列名為time的列,存儲記錄生成時間。 如 rx_bytes 中的 time 列,存儲的就是時間戳。

fields: 包括field key,field value和field set幾個概念。 field key是字段名,在rx_bytes表中,字段名為 value。 field value是字段值,如 17858781633,1359398等。 而field set是字段集合,由field key和field value構成 如rx_bytes中的字段集合如下: value = 17858781633 value

tags: 包括tag key, tag value, tag set幾個概念。 tag key是标簽名,在rx_bytes表中container_name,game,machine,namespace,type都是标簽。 tag value就是标簽的值了。 tag set就是标簽集合,由tag key和tag value構成。 InfluxDB中标簽是可選的,不過标簽是有索引的。 如果查詢中經常用的字段,建議設定為标簽而不是字段。标簽相當于傳統資料庫中有索引的列。

retention policy: 資料保留政策,cadvisor的保留政策為cadvisor_retention,存儲30天,副本為1。一個資料庫可以有多個保留政策。

measurement: 類似傳統資料看的表,是字段,标簽以及time列的集合。

series: 共享同一個retention policy,measurement以及tag set的資料集合。

07. 增删改查

#建立資料庫cadvisor
> create database cadvisor;    

#建立使用者和設定密碼
> CREATE USER cadvisor WITH PASSWORD 'cadvisor';

#授權資料庫給指定使用者
> GRANT ALL PRIVILEGES ON cadvisor TO cadvisor;

#建立預設的資料保留政策,設定儲存時間30天,副本為1
> CREATE RETENTION POLICY "cadvisor_retention" ON "cadvisor" DURATION 30d REPLICATION 1 DEFAULT;

#顯示表
> show databases;
name: databases
name
----
_internal
> use cadvior;
> 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

#查詢記憶體使用
> select * from memory_usage order by time desc limit 5;
name: memory_usage
time                container_name                              machine      value
----                --------------                              -------      -----
1570606022314528492 /system.slice/systemd-user-sessions.service e1510f5156f6 0
1570606022165528044 /system.slice/rhel-import-state.service     e1510f5156f6 0
1570606022130190231 /system.slice                               e1510f5156f6 164671488
1570606022030381573 /user.slice                                 e1510f5156f6 518492160
1570606021889689198 /system.slice/telegraf.service              e1510f5156f6 1859584      

08. 內建Cadvisor

docker pull google/cadvisor:latest
docker run -d --name cadvisor -p 8080:8080 --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 google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_user=root -storage_driver_password=root -storage_driver_host=192.168.1.8:8086       

啟動Cadvisor容器,并使用influxdb為存儲(cadvisor資料庫名, 資料通路賬号密碼root, 位址為本地8086端口,别用127.0.0.1.連不上)

docker pull google/cadvisor:latest
docker run -d \
--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 \
-storage_driver=influxdb \
-storage_driver_db=cadvisor \
-storage_driver_user=root \
-storage_driver_password=root \
-storage_driver_host=172.16.131.211:8086      

或者

docker run -d --name cadvisor -p 8080:8080 --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 172.16.131.211/monitor/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_user=root -storage_driver_password=root -storage_driver_host=172.16.35.6:8086      

作者:HaydenGuo

出處:https://www.cnblogs.com/ghl1024/

每一個前十年都想不到後十年我會演變成何等模樣,可知人生無常,沒有什麼規律,沒有什麼必然。

隻要我還對新鮮的知識、品格的改進、情感的擴張、有胃口,這日子就是值得度過的。