環境為:CentOS7.4
1.安裝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
2.目錄解釋
-
/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檔案
3.修改配置檔案
[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]
4.啟動
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
-
端口TCP
用于 InfluxDB 的管理面闆(1.3版本之後無web界面);8083
-
TCP
用于通過 InfluxDB 的8086
進行用戶端到伺服器的通信;HTTP API
5.登入
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
>
6.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
的資料集合。
7.增删改查
- 建立資料庫
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
8.內建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