• 基于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中文网

  • 相关阅读:
    [C++][编程风格]C++命名规则
    [Android]搜索关键字飞入飞出效果 (转)
    android,性能优化,内存优化管理,高级缓存 (转)
    Java内存泄露原因详解
    Java之线程(2) 调时器
    Java之线程(1) 传统线程机制的回顾
    Hibernate(1) 阻抗不匹配
    No4.传统线程同步通信技术
    Android内存溢出
    MAT Memory Analyzer Tool 插件装配(图解)(转)
  • 原文地址:https://www.cnblogs.com/lxwphp/p/16811847.html
Copyright © 2020-2023  润新知