首页 > 其他分享 >运维监控必看:必懂的 InfluxDB 使用指南,关键时刻能用上

运维监控必看:必懂的 InfluxDB 使用指南,关键时刻能用上

时间:2023-04-07 17:35:18浏览次数:34  
标签:必看 运维 InfluxDB name 时间 time policy retention

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 rfc3339

InfluxDB数据库操作

  • 显示数据库
show databases
  • 新建数据库
create database shhnwangjian
  • 删除数据库
drop database shhnwangjian
  • 使用指定数据库
use shhnwangjian

InfluxDB数据表操作

在 InfluxDB 当中,并没有表(table)这个概念,取而代之的是 MEASUREMENTS,MEASUREMENTS 的功能与传统数据库中的表一致,因此我们也可以将 MEASUREMENTS 称为 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_stringrfc3339_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 <= 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

标签:必看,运维,InfluxDB,name,时间,time,policy,retention
From: https://blog.51cto.com/u_15576159/6172312

相关文章

  • mysql运维------主从复制
    1.概述主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。MySQL复制的有点主要包......
  • 1+X证书网络系统建设与运维(中级)实验整理
    实验拓扑拓扑配置参数实验配置:HZCampus-Acc01-S5731:<Huawei>undotm<Huawei>sy[Huawei]syHZ-HZCampus-Acc01-S5731[HZ-HZCampus-Acc01-S5731]intg0/0/1[HZ-HZCampus-Acc01-S5731-GigabitEthernet0/0/1]polink-tt[HZ-HZCampus-Acc01-S5731-GigabitEthernet0/0/1]pot......
  • Web前端开发必看的100道大厂面试题
    1.说说gulp和webpack的区别开放式题目Gulp强调的是前端开发的工作流程。我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序,来让Gulp执行这些task,从而构建项目的整个前端开发流程。通俗一点来说,“Gulp就像是一......
  • 运维Ansible自动化工具概述
    运维的工作内容安装系统:pxe、kickstart、cobbler、imagetemplate安装应用、配置应用、启动应用(服务):puppet、saltstack、chef发布程序:puppet、saltstack、chef监控(服务器、系统、应用、程序):zabbix程序发布灰度发布金丝雀发布ansible解决的问题:批量安装应用、配置应用、启动应用批量......
  • 【过关斩将】专栏改名为【运维面试秘籍】公告
    我们的专栏改名了,一开始的名字叫《过关斩将》,但从今天起,我们的专栏名字改为《运维面试秘籍》,其实说是运维面试,但里面很多面试技巧是相通的,不管你从事的是运维还是开发,都会对你有所帮助。原本跟谈的是更新10篇文章,但事实上我们已经直奔100篇文章了,知识点涵盖了运维的方方方面。不......
  • 【Linux】循序渐进学运维-服务篇-nginx入门
    文章目录nginx介绍nginx最新版本号nginx与apache的对比1、nginx相对于apache的优点:2.apache相对于nginx的优点:编译安装nginx1.安装依赖包2.下载nginx包3.解压安装a.解压b.编译&&编译安装c.启动d.查看是否启动nginx的目录结构主要的配置参数nginx介绍Nginx(enginex)......
  • mysql运维-------日志
    1.错误日志错误日志是MySQL中最重要的日志之一,它记录了当mysql启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。该日志是默认开启的,默认放在目录/var/log/,默认的日志文件名为mysqld.log。查看日......
  • Linux运维实战:Centos7.6部署wingftpserver
    一、WingFTPServer介绍WingFTPServer是一款优秀且高速的跨平台FTP服务器软件,对比Windows中自带的FTP服务器,它支持可伸缩的处理器架构并采用异步IO,在速度和效率方面遥遥领先于其他同类产品,稳定可靠,高负载的同时也能持续地正常运行,在网络运维中它契合企业和学校的文件传输,除......
  • 在Linux部署ElasticJob-Lite-UI运维控制台
    前言ElasticJob-Lite-UI是任务的分布式调度解决方案(ElasticJob-Lite)搭配的可视化运维控制台。运维控制台和ElasticJob-Lite并无直接关系,是通过读取作业注册中心(Zookeeper)数据展现作业状态,或更新注册中心数据修改全局配置。它具有这些功能:登录安全控制;注册中心、事件追踪数据源管......
  • 「刷起来」Go必看的进阶面试题详解
    勤学如春起之苗,不见其增日有所长;辍学如磨刀之石,不见其损日有所亏。本文的重点:逃逸分析、延迟语句、散列表、通道、接口。1.逃逸分析逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详......