`

InfluxDB 开源分布式时序、事件和指标数据库

阅读更多

      InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。

特点

  • schemaless(无结构),可以是任意数量的列
  • Scalable
  • min, max, sum, count, mean, median 一系列函数,方便统计
  • Native HTTP API, 内置http支持,使用http读写
  • Powerful Query Language 类似sql
  • Built-in Explorer 自带管理工具

管理界面:

API

InfluxDB 支持两种api方式

  • HTTP API
  • Protobuf API

Protobuf 还未开发完成, 官网文档都没有

如何使用 http api 进行操作?

比如对于foo_production这个数据库,插入一系列数据,可以发现POST 请求到 /db/foo_production/series?u=some_user&p=some_password, 数据放到body里。

数据看起来是这样的:

下面的"name": "events", 其中"events"就是一个series,类似关系型数据库的表table

[
  {
    "name": "events",
    "columns": ["state", "email", "type"],
    "points": [
      ["ny", "paul@influxdb.org", "follow"],
      ["ny", "todd@influxdb.org", "open"]
    ]
  },
  {
    "name": "errors",
    "columns": ["class", "file", "user", "severity"],
    "points": [
      ["DivideByZero", "example.py", "someguy@influxdb.org", "fatal"]
    ]
  }
]

格式是json,可以在一个POST请求发送多个 series, 每个 series 里的 points 可以是多个,但索引要和columns对应。

上面的数据里没有包含time 列,InfluxDB会自己加上,不过也可以指定time,比如:

[
  {
    "name": "response_times",
    "columns": ["time", "value"],
    "points": [
      [1382819388, 234.3],
      [1382819389, 120.1],
      [1382819380, 340.9]
    ]
  }
]

time 在InfluxDB里是很重要的,毕竟InfluxDB是time series database
在InfluxDB里还有个sequence_number字段是数据库维护的,类似于mysql的 主键概念

InfluxDB 增删更查都是用http api来完成,甚至支持使用正则表达式删除数据,还有计划任务。

比如:

发送POST请求到 /db/:name/scheduled_deletes, body如下,

{
  "regex": "stats\..*",
  "olderThan": "14d",
  "runAt": 3
}

这个查询会删除大于14天的数据,并且任何以stats开头的数据,并且每天3:00 AM运行。

更加详细查看官方文档: http://influxdb.org/docs/api/http.html

查询语言

InfluxDB 提供了类似sql的查询语言

看起来是这样的:

select * from events where state == 'NY';

select * from log_lines where line =~ /error/i;

select * from events where customer_id == 23 and type == 'click';

select * from response_times where value > 500;

select * from events where email !~ /.*gmail.*/;

select * from nagios_checks where status != 0;

select * from events 
where (email =~ /.*gmail.* or email =~ /.*yahoo.*/) and state == 'ny';

delete from response_times where time > now() - 1h

非常容易上手, 还支持Group ByMerging SeriesJoining Series, 并内置常用统计函数,比如max, min, mean 等

文档: http://influxdb.org/docs/query_language/

常用语言的库都有,因为api简单,也很容易自己封装。

InfluxdDB作为很多监控软件的后端,这样监控数据就可以直接存储在InfluxDB
StatsDCollectDFluentD

还有其它的可视化工具支持InfluxDB, 这样就可以基于InfluxDB很方便的搭建监控平台

InfluxDB 数据可视化工具

InfluxDB 用于存储基于时间的数据,比如监控数据,因为InfluxDB本身提供了Http API,所以可以使用InfluxDB很方便的搭建了个监控数据存储中心。

对于InfluxDB中的数据展示,官方admin有非常简单的图表, 看起来是这样的

除了自己写程序展示数据还可以选择:

tasseo

tasseo,为Graphite写的Live dashboard,现在也支持InfluxDB,tasseo 比较简单, 可以配置的选项很少。

Grafana

Grafana是一个纯粹的html/js应用,访问InfluxDB时不会有跨域访问的限制。只要配置好数据源为InfluxDB之后就可以,剩下的工作就是配置图表。Grafana 功能非常强大。使用ElasticsSearch保存DashBoard的定义文件,也可以Export出JSON文件(Save ->Advanced->Export Schema),然后上传回它的/app/dashboards目录。

配置数据源:

   datasources: {      
      influx: {
        default: true,
        type: 'influxdb',
        url: 'http://<your_influx_db_server>:8086/db/<db_name>',
        username: 'test',
        password: 'test',
      }
    },

分享到:
评论

相关推荐

    深入理解InfluxDB——时序数据库详解与实践.docx

    它是一款开源的、分布式的时序数据库,具有高性能、可扩展性和多分布式等特点,广泛用于监控系统、智能电网、工业物联网等领域。InfluxDB 是一种专为时序数据设计的数据库,旨在提供高性能、高可扩展性以及持久化的...

    OPC实时数据发布到MQTT及存储InfluxDB时序数据库

    InfluxDB是一个高性能的开源时序数据库,专门设计用于存储和查询时间序列数据,如监控数据和物联网(IoT)数据。在本案例中,InfluxDB用于存储从OPC服务器获取的实时数据,其优点在于能够快速写入大量时间序列数据,并...

    influxdb-1.8.1_windows_amd64.zip

    Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。 它有三大特性: 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等); 度量(Metrics):对实

    centos influxdb安装 详细!Centos7.X搭建Grafana+Jmeter+Influxdb性能实时监控

    接下来,我们将引入InfluxDB,这是一个用Go语言开发的开源分布式时序数据库,非常适合存储指标、事件和分析数据。InfluxDB的查询语言简洁且高效,可以方便地处理时间序列数据,这对于监控系统的性能变化至关重要。 ...

    ASP.NET Core2读写InfluxDB时序数据库的方法教程

    Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖,下面这篇文章主要给大家介绍了关于ASP.NET Core2读写InfluxDB时序数据库的相关资料,需要的朋友可以参考下

    influxdb-1.3.7.x86_64.rpm

    InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。 它有三大特性: 1. Time Series (时间序列):你可以使用与时间有关的相关函数(如...

    influxdb-1.7.1_linux_amd64.tar.gz

    《InfluxDB:分布式时序数据库的深度解析》 InfluxDB是一款专为时间序列数据设计的开源数据库,尤其在监控、物联网(IoT)、性能指标和日志记录等领域表现出色。它由InfluxData公司开发,以高效处理大量时间戳数据而...

    influxdb-1.7.10_windows_amd64.zip

    InfluxDB,一个由InfluxData公司开发的开源分布式时序、时间和指标数据库,以其高效能、易扩展的特点,广泛应用于实时数据处理与分析领域。这个数据库系统完全用Go语言编写,确保了其在运行时的高效性和轻量级特性,...

    分布式时序数据库QTSDB的设计与实现

    实现上,是基于开源单机时序数据库influxdb1.7开发的分布式版本,除了具有influxdb本身的特性之外,还有容量扩展、副本容错等集群功能。主要特点如下:为时间序列数据专门编写的高性能数据存储,兼顾写入性能和磁盘...

    influxdb-1.7.7-64.rar

    nfluxDB 是一个开源分布式时序、事件和指标数据库。使用Go语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。 它有三大特性: 1. Time Series (时间序列):你可以使用与时间有关的相关函数(如...

    时序数据库

    InfluxDB 是一个用 Go 语言编写的开源分布式时序数据库,它专为处理时间序列数据而设计。与传统的关系型数据库不同,InfluxDB 提供了一些独特的概念: 1. Point:Point 是 InfluxDB 中的基本数据单位,它由时间戳、...

    InfluxDB-1.1.0 Windows x64

    Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。 它有三大特性: 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等); 度量(Metrics):对实时...

    influxdb-1.2.4_windows_amd64.rar

    《InfluxDB:开源分布式时序数据库在Windows平台上的应用》 InfluxDB,作为一款专为时序数据设计的开源分布式数据库,以其高效、稳定和易用性赢得了广大开发者和运维人员的喜爱。这款数据库系统尤其适用于处理大量...

    InfluxDB-1.0.2 Windows x64

    Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。 它有三大特性: 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等); 度量(Metrics):对实时...

    influxdb-1.5.2_windows_amd64.zip

    Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。 它有三大特性: 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等); 度量(Metrics):对实时...

    InfluxDB-1.2.4 Windows x64

    Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。 它有三大特性: 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等); 度量(Metrics):对实时...

    influxdb-1.5.2_windows_amd64

    Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。 它有三大特性: 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等); 度量(Metrics):对实时...

    influxdb-1.7.1_windows_amd64.zip

    Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。 它有三大特性: 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等); 度量(Metrics):对实时...

    influxdb-handbook

    InfluxDB 是一个用 Go 语言编写的开源分布式时序、事件和指标数据库,它是为处理实时数据而设计的。与传统的关系型数据库相比,InfluxDB 支持更高性能的写入和查询操作,尤其适合于存储和分析时间序列数据,如监控...

    influxdb-1.2.4_windows64位

    Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。 它有三大特性: 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等); 度量(Metrics):对实时...

Global site tag (gtag.js) - Google Analytics