运维监控必看:必懂的 InfluxDB 使用指南,关键时刻能用上
InfluxDB是什么InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询...
InfluxDB 是一个由 InfluxData 开发的开源时序型数据库。它由 Go 写成,着力于高性能地查询与存储时序型数据。InfluxDB 被广泛应用于存储系统的监控数据,IoT 行业的实时数据等场景。技术特点包括:
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 shhnwangjianInfluxDB数据表操作
在 InfluxDB 当中,并没有表(table)这个概念,取而代之的是 MEASUREMENTS,MEASUREMENTS 的功能与传统数据库中的表一致,因此我们也可以将 MEASUREMENTS 称为 InfluxDB 中的表。
•显示所有表
SHOW MEASUREMENTS
•新建表
InfluxDB中没有显式的新建表的语句,只能通过insert数据的方式来建立新表。
insert disk_free,hostname=server01 value=442221834240iinsert 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 Policiesshow retention policies on "db_name"show retention policies on cdhnm创建新的 Retention Policies
create retention policy "rp_name" on "db_name" duration 3w replication 1 defaultcreate 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 Policiesalter retention policy “rp_name” on “db_name” duration 30d defaultalter 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=442221834240iinsert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.3 1557023160删除数据
influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。创建新的 数据库过期策略至少一个小时
Retention Policiescreate retention policy "rp_name" on "db_name" duration 3w replication 1 defaultretention 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
理论一些的解释是从协调世界时(Thursday, 1 January 1970)开始至今过去的时间。比如我们在 java 程序中使用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
因为rfc3339_date_time_string的格式确实比较反人类,所以InfluxDB也支持这种人类阅读更友好的格式:
‘YYYY-MM-DD HH:MM:SS.nnnnnnnnn’
其中HH:MM:SS.nnnnnnnnn是可选的,如果不填写会被设置为00:00:00.000000000。所以查询时可以设置到天、小时、分钟、秒等不同精度。这种时间格式同样要求被单括号括起来。
2、调整时间戳精度InfluxDB默认东时间是纳秒(ns),即19位时间戳。但是一般情况下时间精度不会这么高。所以如果使用秒级精度查询:
select * from cpu_virtual_used_num where time >= 1435333209s and time <= 1542964713s
如果使用毫秒级精度查询:
select * from cpu_virtual_used_num where time >= 1435333209000ms and time <= 1542964714000ms3、调整时区
如果需要使用北京时间(东八区),可以在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 cdhnmalter retention policy autogen on cdhnm duration 1h defaultcreate retention policy test on cdhnm duration 1h replication 1 defaultdrop retention policy test on cdhnm insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.9 1557045292000000000select * 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
标签:
InfluxDB是什么InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询...
以下是胜宏科技在北京时间4月6日10:37分盘口异动快照:4月6日,胜宏科技盘中快速回调,5分钟内跌幅超过2...
3月财新中国服务业PMI录得57 8创28个月以来新高,制造业,新中国,pmi,市场需求,中国服务业
广西物流与采购联合会发布的2023年3月份广西物流业景气指数(LPI)为55 3%,较上月上升3 5个百分点。3...
昆明信息港讯(昆明日报记者杨阳吴染熙)今年全国两会政府工作报告强调,深化医药卫生体制改革,守护好...
来自SeafoodMedia消息,自今年年初以来,俄罗斯远东盆地已捕获太平洋鲱鱼82300吨,略超过2022年。太平洋...
1、金宝乐园于1996年建成开业,位于潍坊市奎文经济开发区,距市中心三公里。2、是“国家AAAA级旅游景区...
格隆汇4月5日丨胜利精密(002426)(002426 SZ)发布2022年度业绩预告修正公告,公司于2023年1月31日披露了...
加快推进天开园核心区商业配套,今天,7家门店正式入驻。还有5家正在准备进驻。
天,鲁大师正式公布了2023年3月的新机性能与流畅度榜单。在3月发布的多款第二代骁龙8产品中,OPPOFindX6...