0

学习Influxdb

 2 years ago
source link: https://www.imhanjm.com/2018/11/18/%E5%AD%A6%E4%B9%A0influxdb/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

学习Influxdb

发表于 2018-11-18

| 0 Comments

最近要实现接口监控, 准备用主流的时序数据库influxdb.

influxdb的库也 database, 概念和mysql一样
influxdb的表叫 MEASUREMENTS, 意义更贴切, 测量的复数形式.
influxdb的一行数据叫 point, 就像做物理实验的打点, 每个点有其值和属性
influxdb的字段分类为 tag 和 field, field就是值, tag是其属性. 拿接口来说, 字段有 service_name, instance_id, method, handler_name, method, request_url, response_code, content_length, response_size, duration. 显然, 前面7个字段是tag, 特点是一般不是数值变量, 可枚举的, 所以influxdb对tag加了索引. 后面3个是field, 是数值变量, 是范围变化的, 不需要加索引.

对于插入数据, influxdb同时提供了单条和批量插入的API. 开始不知道有批量方式, 来一条插一条, influxdb CPU巨高. 后面在官网文档找到了办法, 改用批量插入, 大大降低了CPU占用, 官方推荐是5k~1w条数据一批.

https://docs.influxdata.com/influxdb/v1.7/concepts/glossary/#batch

InfluxData recommends batch sizes of 5,000-10,000 points,
although different use cases may be better served by significantly smaller or larger batches.

influxdb同时提供了HTTP接口和UDP接口. UDP的好处在于减少了HTTP头部的开销, 性能更好

  1. # 创建数据库
    CREATE DATABASE "db_name"
    # 显示所有数据库
    SHOW DATABASES
    # 删除数据库
    DROP DATABASE "db_name"
    # 使用数据库
    USE mydb
  2. # 显示该数据库中的表
    SHOW MEASUREMENTS
    # 创建表, 插入数据时会自动创建
    # 删除表
    DROP MEASUREMENT "measurementName"
  3. 查看数据保留策略 retention polices

    SHOW RETENTION POLICIES ON "testDB"
  4. 创建新的Retention Policies并设置为默认值

    	# DURATION 保留多少天
    # REPLICATION 副本数
    CREATE RETENTION POLICY "rp_name" ON "db_name" DURATION 30d REPLICATION 1 DEFAULT
# 创建一个连续查询, 每10秒计算一个接口响应耗时平均值到新表
CREATE CONTINUOUS QUERY cq_http_handler_stats_duration ON statsdb BEGIN SELECT mean("duration") INTO http_handler_stats_average_duraion_10s FROM http_handler_stats GROUP BY time(10s) END

# 如果成功创建, 那么过了第一个周期后, SHOW MEASUREMENTS 能看到多了一张表

# 显示创建的连续查询
SHOW CONTINUOUS QUERIES

# 删除
DROP CONTINUOUS QUERY cq_http_handler_stats_duration ON statsdb

grafana 是 influxdb 的良好伴侣, 写个query语句就能得到很炫酷的图形. 比如接口请求量图表按handler_name, response_code, time(10s) group by就得到了.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK