前言
InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。特色功能包括
1、基于时间序列,支持与时间有关的相关函数
2、可度量性:你可以实时对大量数据进行计算
3、基于事件:它支持任意的事件数据
原理
1)tag–标签,在InfluxDB中,tag是一个非常重要的部分,表名+tag一起作为数据库的索引,是“key-value”的形式。
2)field–数据,field主要是用来存放数据的部分,也是“key-value”的形式。
3)timestamp–时间戳,作为时序型数据库,时间戳是InfluxDB中最重要的部分,在插入数据时可以自己指定也可留空让系统指定。
说明:在插入新数据时,tag、field和timestamp之间用空格分隔。
4)series–序列,所有在数据库中的数据,都需要通过图表来展示,而这个series表示这个表里面的数据,可以在图表上画成几条线。
5)Retention policy–数据保留策略,可以定义数据保留的时长,每个数据库可以有多个数据保留策略,但只能有一个默认策略。。
6)Point–点,表示每个表里某个时刻的某个条件下的一个field的数据,因为体现在图表上就是一个点,于是将其称为point。
环境准备
安装influxdb数据库就不细说。直接说python和influxdb的交互。
pip install influxdb==5.2.0
influxdb数据库表
上代码
操作influxdb数据库代码进行封装如下:
from influxdb import InfluxDBClient
import pytz
import time
import dateutil.parser
import datetime
class DBApi(object):
"""
通过infludb获取数据
"""
def __init__(self, ip, port):
"""
初始化数据
:param ip:influxdb地址
:param port: 端口
"""
self.db_name = 'system'
self.use_cpu_table = 'cpu_summary' # cpu使用率表
self.phy_mem_table = 'mem'# 物理内存表
self.traffic_table = 'net'# 接收流量表
self.disk_table = 'disk'# 磁盘表
self.swap_table = 'swap' # 交换分区表
self.client = InfluxDBClient(ip, port, '', '', self.db_name) # 连接influxdb数据库
说明
influxdb.InfluxDBClient(host=u'localhost', port=8086, username=u'root', password=u'root', database=None, ssl=False, verify_ssl=False, timeout=None, retries=3, use_udp=False, udp_port=4444, proxies=None)
参数
host (str) – 用于连接的InfluxDB主机名称,默认‘localhost’
port (int) – 用于连接的Influxport端口,默认8086
username (str) – 用于连接的用户名,默认‘root’
password (str) – 用户密码,默认‘root’
database (str) – 需要连接的数据库,默认None
ssl (bool) – 使用https连接,默认False
verify_ssl (bool