基于PHP使用influxdb搭建监控服务系统

上一篇:window10 安装influxdb

     监控系统如何选择合适的时序数据库?

一、认识关键词概念

InfluxDB是领先的开源时间序列数据库(TSDB)。
InfluxDB使用Go语言编写,适用于各类时间序列数据的高效存储与检索。

influxdb中的database、measurement、point

database:数据库,同Mysql等关系型数据库中的“数据库Database”

measurement:数据表,相当于关系型数据库中的“表Table”

point:数据点,表示单条数据记录,相当于关系型数据库中的“一行数据”

由于database和measurement与传统数据库基本相同,这里不做过多解释,以下针对influxdb中特有的Point进行讲解。

retention policy:单个measurement可以有不同的retention policy。measurement默认会有一个autogen的保留策略,autogen中的数据永不删除且备份数replication为1(只有一份数据,在集群中起作用)

Point

Point由时间(time)、数据(field)、标签(tags)三类字段组成。

time:代表每条数据的时间字段,是measurement中的数据主键,因此time字段具有索引属性。一条point只能有一个time。

field:代表各种数据的字段,例如气温、压力、股价等,field字段没有索引属性。一条point可以包括多个field。

tag:代表各类非数据字段,例如设备编码、地区、姓名等,tag字段有索引属性。一条point可以包括多个tag。

例子

两位科学家langstroth和perpetua于2015年8月18日在两个不同位置进行一项计算蝴蝶和蜜蜂数量的统计实验。假设他们使用同一个database,并使用同一个名为census的measurement录入数据。以下表示某一个point的样例数据:

 其中time为time字段。butterflies和honeybees分别代表蝴蝶和蜜蜂的数量,因此他们是field字段。location和scientist代表科学家的位置和名字,因此他们是tag字段。

与常见的数据库的对比

  • 概念名称   Influxdb                    关系型数据库
    数据库      database                    database
    表             measurement             table
    行             points                         row
    列             tag,field,timestamp    column

InfluxDB独有的概念

  • Point: 代表一行的数据,由时间戳(time)、数据(field)和标签(tags)组成

  • tag sets: tags在InfluxDB中会按照字典序排序,不管是tag-key还是tag-value,只要不一致就分别属于两个key

  • tag: 标签,表名+tag一起作为数据库的索引是“key-value”的形式

  • field name: InfluxDB支持一条数据插入多个fieldName。但实际存储中还是被当做多条数据存储

  • timestamp: 每一条数据都需要指定一个时间戳,在 TSM 存储引擎中会特殊对待,以为了优化后续的查询操作

  • Series: 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起

  • retention policy: 存储策略,用于设置数据保留的时间,每个数据库刚开始会自动创建一个默认的存储策略 autogen,数据保留时间为永久,之后用户可以自己设置,例如保留最近2小时的数据。插入和查询数据时如果不指定存储策略,则使用默认存储策略,且默认存储策略可以修改。InfluxDB 会定期清除过期的数据

  • Shard: 在 InfluxDB 中是一个比较重要的概念,它和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file

二、PHP客户端

适用于PHP的InfluxDB客户端库

注意:该库与InfluxDB 1.x一起使用。 要连接到InfluxDB 2.x实例,请使用客户端。

概述 一个易于使用的库,用于将InfluxDB与PHP结合使用。 

创建了influxdb-php库,使其具有python influxdb客户端的php端口。 这样,在不同的编程语言之间将有一个通用的抽象库。

安装 可以使用composer完成安装:

$ composer require influxdb/influxdb-php

PHP 5.3和PHP 5.4用户注意 如果您使用PHP 5.3和PHP 5.4,则仍支持0.1.x版本(错误修复和新版本修复)。

0.1.x分支将在PHP 5.3和PHP 5.4上运行,但不包含1.0.0版本具有的所有功能,例如UDP支持。 入门 初始化一个新的客户端对象:

参考:https://github.com/influxdata/influxdb-client-php

https://github.com/influxdata/influxdb-php

https://www.jianshu.com/p/2b6390e6bbbe

PHP的InfluxDB客户端库使用 - evenvi

InfluxDB名词解释-InfluxDB教程|InfluxDB中文网

posted @ 2022-10-20 23:40  码农编程进阶笔记  阅读(400)  评论(0编辑  收藏  举报
返回顶部 有事您Q我