运维监控必看:必懂的 InfluxDB 使用指南,关键时刻能用上
时间:2025-11-05 11:54:27 出处:IT科技阅读(143)
InfluxDB是运维用指用上什么
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 rfc33391.InfluxDB数据库操作
显示数据库 复制show databases1. 新建数据库 复制create database shhnwangjian1. 删除数据库 复制drop database shhnwangjian1. 使用指定数据库 复制use shhnwangjian1.InfluxDB数据表操作
在 InfluxDB 当中,并没有表(table)这个概念,取而代之的是 MEASUREMENTS,WordPress模板MEASUREMENTS 的功能与传统数据库中的表一致,因此我们也可以将 MEASUREMENTS 称为 InfluxDB 中的表。
• 显示所有表
复制SHOW MEASUREMENTS1.• 新建表
InfluxDB中没有显式的新建表的语句,只能通过insert数据的方式来建立新表。
复制insert disk_free,hostname=server01 value=442221834240i
insert cpu_virtual_used_num,host=1 value=4 15565931501.2.其中 disk_free 就是表名,hostname是索引(tag),value=xx是记录值(field),记录值可以有多个,系统自带追加时间戳
或者添加数据时,自己写入时间戳
复制insert disk_free,hostname=server01 value=442221834240i 14353621895756921821.• 删除表
复制drop measurement disk_free1.数据保存策略(Retention Policies)
influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。
查看当前数据库 Retention Policies 复制show retention policies on "db_name"show retention policies on cdhnm1.2. 创建新的 Retention Policies 复制create retention policy "rp_name" on "db_name" duration 3w replication 1default
create retention policy test on cdhnm duration 1h replication 1 default1.2.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 default1.2. 修改数据策略 复制alter retention policy autogen on cdhnm duration 0h replication 1 default1. 删除 Retention Policies 复制drop retention policy “rp_name” on “db_name"drop retention policy test on cdhnm1.2.查询数据
复制select * from cpu_virtual_used_num1.插入数据
插入数据同时创建表
复制insert disk_free,hostname=server01 value=442221834240i
insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.3 15570231601.2.删除数据
influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。创建新的 数据库过期策略至少一个小时
复制Retention Policies
create retention policy "rp_name" on "db_name" duration 3w replication 1default
retention policy duration must be at least 1h0m0s influxdb1.2.3.查询表字段
查询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’1.其中nnnnnnnnn是可选的,如果不写则会被设置为000000000。注意,如果使用这种时间格式,需要使用单括号(’)将时间括起来。
rfc3339_like_date_time_string
因为rfc3339_date_time_string的格式确实比较反人类,所以InfluxDB也支持这种人类阅读更友好的格式:
复制‘YYYY-MM-DD HH:MM:SS.nnnnnnnnn’1.其中HH:MM:SS.nnnnnnnnn是可选的,如果不填写会被设置为00:00:00.000000000。所以查询时可以设置到天、小时、分钟、秒等不同精度。这种时间格式同样要求被单括号括起来。
2、调整时间戳精度
InfluxDB默认东时间是纳秒(ns),即19位时间戳。但是一般情况下时间精度不会这么高。所以如果使用秒级精度查询:
复制select * from cpu_virtual_used_num where time >= 1435333209s and time <= 1542964713s1.如果使用毫秒级精度查询:
复制select * from cpu_virtual_used_num where time >= 1435333209000ms and time <= 1542964714000ms1.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)1.4、UTC时间与Beijing时间转换
Timestamp时间列
既然是时间序列数据库,influxdb 的数据都有一列名为 time 的列,里面存储 UTC 时间戳。
Influxdb 时间转成北京时间:UTC time + 8 hours = Beijing time
sql语句
复制influx -precisionrfc3339
show retention policies oncdhnm
alter retention policy autogen on cdhnm duration 1h default
create retention policy test on cdhnm duration 1h replication 1default
drop retention policy test oncdhnm
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_num1.2.3.4.5.6.7.8.启动服务
复制切换到root用户
命令:su
输入密码:1234561.2.3.启动:
复制sudo service influxdb start1.重启:
复制service influxdb restart1.切换到普通用户:
命令:exit
猜你喜欢
- 解除U盘写保护功能的方法(教你轻松解决U盘写保护问题)
- 苹果最强处理器M2 Ultra问世,两年过渡实现对英特尔的替代
- 传统企业数据中心将在2025年被淘汰吗?
- 谷歌、微软和AWS争夺超大规模数据中心市场
- HD620集成显卡的性能和特点剖析(一起来了解IntelHD620集成显卡的强大表现与出众特点)
- 托管数据中心与私有数据中心怎么选择
- 数据管理创新在数据中心效率中的作用
- 如何利用边缘数据中心重塑计算的未来
- 修改方案如下: 1、命令行中输入gconf-editor,打开配置编辑器。 PS:ubuntu 12.10 直接在终端输入:gsettings set org.gnome.desktop.wm.preferences button-layout :minimize,maximize,close 在ubuntu13.04上就不完全起作用了,只修改了小部分窗口的按钮到右上角了。