運維監控應知應會: InfluxDB 使用指南
InfluxDB是什麼
-
InfluxDB在技術實現上充分利用了Go語言的特性,無需任何外部依賴即可獨立部署[5]。
-
InfluxDB提供了一個類似於SQL的查詢語言並且一系列內建函式方便使用者進行資料查詢。 -
InfluxDB儲存的資料從邏輯上由 Measurement, tag組以及field 組以及一個時間戳組成的: -
Measurement:由一個字串表示該條記錄對應的含義。比如它可以是監控資料
cpu_load
,也可以是測量資料average_temperature
-
tag組:由一組鍵值對組成,表示的是該條記錄的一系列屬性資訊。同樣的 measurement 資料所擁有的 tag 組不一定相同,它是無模式的(Schema-free)。tag 資訊是預設被索引的。
-
field組:也是由一組鍵值對組成,表示的是該條記錄具體的value資訊(有名稱)。field組中可定義的value型別包括:64位整型,64位浮點型,字串以及布林型。Field資訊是無法被索引的。
-
時間戳:就是該條記錄的時間屬性。如果插入資料時沒有明確指定時間戳,則預設儲存在資料庫中的時間戳則為該條記錄的入庫時間。
-
InfluxDB 支援基於 HTTP 的資料插入與查詢。同時也接受直接基於TCP或UDP協議的連線。
-
InfluxDB 允許使用者定義資料儲存策略(Retention Policies)來實現對儲存超過指定時間的資料進行刪除或者降取樣。
增刪改查操作
進入influxDB命令列
influx -precision rfc3339
InfluxDB資料庫操作
-
顯示資料庫
show databases
-
新建資料庫
create database shhnwangjian
-
刪除資料庫
drop database shhnwangjian
-
使用指定資料庫
use shhnwangjian
InfluxDB資料表操作
• 顯示所有表
SHOW MEASUREMENTS
• 新建表
InfluxDB中沒有顯式的新建表的語句,只能透過insert資料的方式來建立新表。
insert disk_free,hostname=server01 value=442221834240i
insert cpu_virtual_used_num,host=1 value=4 1556593150
其中
disk_free
就是表名,
hostname
是索引(tag),
value=xx
是記錄值(field),記錄值可以有多個,系統自帶追加時間戳
或者新增資料時,自己寫入時間戳
insert disk_free,hostname=server01 value=442221834240i 1435362189575692182
• 刪除表
drop measurement disk_free
資料儲存策略(Retention Policies)
influxDB是沒有提供直接刪除資料記錄的方法,但是提供資料儲存策略,主要用於指定資料保留時間,超過指定時間,就刪除這部分資料。
-
檢視當前資料庫 Retention Policies
show retention policies on
"db_name"
show retention policies on cdhnm
-
建立新的 Retention Policies
create retention policy
"rp_name" on
"db_name" duration 3w replication 1 default
create retention policy
test on cdhnm duration 1h replication 1 default
rp_name
:
策略名;
db_name
:
具體的資料庫名;
3w
:
儲存3周,3周之前的資料將被刪除,influxdb具有各種事件引數,比如:h(小時),d(天),w(星期);replication 1:副本個數,一般為1就可以了;
default
:
設定為預設策略
-
修改 Retention Policies
alter retention policy “rp_name” on “db_name” duration 30d default
alter retention policy autogen on cdhnm duration 1h default
-
修改資料策略
alter retention policy autogen on cdhnm duration 0h replication 1 default
-
刪除 Retention Policies
drop retention policy “rp_name” on “db_name
"
drop retention policy test on cdhnm
查詢資料
select * from cpu_virtual_used_num
插入資料
插入資料同時建立表
insert disk_free,hostname=server01 value=442221834240i
insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.3 1557023160
刪除資料
influxDB是沒有提供直接刪除資料記錄的方法,但是提供資料儲存策略,主要用於指定資料保留時間,超過指定時間,就刪除這部分資料。建立新的 資料庫過期策略至少一個小時
Retention Policies
create retention policy
"rp_name" on
"db_name" duration 3w replication 1 default
retention policy duration must be at least 1h0m0s influxdb
查詢表欄位
查詢tag:
show tag keys from cluster_metric
查詢field:
show field keys from cluster_metric
時區問題
在使用 InfluxDB 時,發現由於 InfluxDB 使用的是 UTC 時間,在查詢時經常會遇到時區的問題
1、時間格式
InfluxDB 除了支
epoch_time
外,還支援
rfc3339_date_time_string
和
rfc3339_like_date_time_string
。
epoch_time
System.currentTimeMillis()
得到的就是這個時間。一般情況下為毫秒級(ms)精度,即13位Long型別。而在InfluxDB中,時間戳的精度可以達到納秒級(ns)即19位Long型別。rfc3339_date_time_string
rfc3339時間格式是ietf協會定義的一種時間格式,這個名字是因為它被定義在rfc3339中。感興趣的同學可以自己檢視上面的連線。InfluxDB中rfc3339的時間格式是這樣的:
‘YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ’
其中
nnnnnnnnn
是可選的,如果不寫則會被設定為000000000。注意,如果使用這種時間格式,需要使用單括號(’)將時間括起來。
rfc3339_like_date_time_string
‘YYYY-MM-DD HH:MM:SS.nnnnnnnnn’
2、調整時間戳精度
select * from cpu_virtual_used_num
where time >= 1435333209s and time <= 1542964713s
如果使用毫秒級精度查詢:
select * from cpu_virtual_used_num
where time >= 1435333209000ms and time <= 1542964714000ms
3、調整時區
如果需要使用北京時間(東八區),可以在SQL中使用
tc
關鍵字:
select * from cpu_virtual_used_num
where time >=
'2018-11-23 14:30:39' and time <=
'2019-11-23 14:32:32' tz(
'Asia/Shanghai')
4、UTC時間與Beijing時間轉換
Timestamp時間列
既然是時間序列資料庫,influxdb 的資料都有一列名為 time 的列,裡面儲存 UTC 時間戳。
Influxdb 時間轉成北京時間:UTC time + 8 hours = Beijing time
sql語句
influx -precision rfc3339
show retention policies on cdhnm
alter retention policy autogen on cdhnm duration 1h default
create retention policy
test on cdhnm duration 1h replication 1 default
drop retention policy
test on cdhnm
insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.9 1557045292000000000
select * from cpu_virtual_used_num
where time >=
'2018-11-23 14:30:39' and time <=
'2019-11-23 14:32:32' tz(
'Asia/Shanghai')
delete from cpu_virtual_used_num
啟動服務
切換到root使用者
命令:su
輸入密碼:123456
啟動:
sudo service influxdb start
重啟:
service influxdb restart
切換到普通使用者:
命令:
exit
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013542/viewspace-2944002/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Telegraf+Influxdb+Grafana自動化運維監控UXGrafana運維
- 運維監控工具運維
- Kubernetes監控之InfluxDBUX
- 無監控,不運維:解讀企業全棧式監控運維運維全棧
- 如何做好運維監控?運維
- 運維監控指標彙總運維指標
- ORACLE OGG運維及日常監控Oracle運維
- 3-主機監控、應用監控
- LED螢幕監控運維管理方案運維
- 分層運維自動化監控運維
- 運維文件:網站監控系統運維網站
- 夜鶯監控使用指南
- 使用cAdvisor+Influxdb+Grafana監控系統UXGrafana
- jmeter+influxdb+grafana監控平臺搭建JMeterUXGrafana
- 效能測試監控工具--Jmeter + Grafana + InfluxDBJMeterGrafanaUX
- 徒手教你製作運維監控大屏運維
- 運維文件:伺服器監控系統運維伺服器
- 運維文件:系統監控及告警配置運維
- 使用SpringBoot Actuator監控應用Spring Boot
- Prometheus監控實戰應用Prometheus
- Telegraf+Influxdb+Grafana構建監控平臺UXGrafana
- Docker進階-容器監控cAdvisor+InfluxDB+GranfanaDockerUX
- Docker 快速實現 【JMeter + InfluxDB + Grafana】 監控方案DockerJMeterUXGrafana
- Jmeter監控平臺搭建:JMeter+InfluxDB+GrafanaJMeterUXGrafana
- influxdb 原理與應用UX
- 灌漿機遠端監控運維繫統運維
- 智慧檔案館網路監控運維策略運維
- NETCONF工具與智慧化網路監控運維運維
- 運維監控如何做成 BATJ 的水準運維BAT
- 運維文件 - 伺服器效能監控系統運維伺服器
- 【合集】Linux運維常用的服務監控工具Linux運維
- 智慧軌道交通運維監控解決方案運維
- 運維架構服務監控Open-Falcon運維架構
- 簡單聊聊運維監控的其他用途運維
- 資料庫監控工具--PIGOSSBSM運維監控管理系統資料庫Go運維
- IT監控(進階篇):運維監控系統手把手部署教學運維
- 運維監控丨16條常用的Kafka看板監控配置與告警規則運維Kafka
- 無監控,不運維!深入淺出介紹ChengYing監控設計和使用運維