时序数据库之InfluxDB及其Telegraf的使用

本文介绍了时序数据库的重要性,特别是InfluxDB作为领先的技术选型。通过Docker在CentOS7上快速部署InfluxDB,并展示了如何使用Web控制台初始化设置。接着,文章详细解释了Telegraf的安装、配置和启动,作为数据采集代理,用于收集如CPU信息等指标。最后,展示了如何在InfluxDB中创建Dashboard并观测数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


【转载请注明出处: https://leytton.blog.csdn.net/article/details/120806860

1 背景

目前对于时序大数据的存储和处理往往采用关系型数据库的方式进行处理,但由于关系型数据库天生的劣势导致其无法进行高效的存储和数据的查询。时序大数据解决方案通过使用特殊的存储方式,使得时序大数据可以高效存储和快速处理海量时序大数据,是解决海量数据处理的一项重要技术。该技术采用特殊数据存储方式,极大提高了时间相关数据的处理能力,相对于关系型数据库它的存储空间减半,查询速度极大的提高。【1】

时序数据库主要用于存储基于时间序列的指标数据,例如一个Web页面的PV、UV等指标,将其定期采集,并打上时间戳,就是一份基于时间序列的指标。时序数据库通常用来配合前端页面来展示一段时间的指标曲线。【2】

2 技术选型

打开数据库排名网站DB-Engines Ranking,左侧选择时序数据库(Time Series DBMS),如下图所示:
在这里插入图片描述
可见,InfluxDB遥遥领先,其他数据库也可以去查找相关资料了解其特性,比如说:

Apache Druid,国内很多大厂都有使用,如阿里、土豆、优酷、微博、小米、滴滴、有赞等,参考 http://druid.apache.org/druid-powered
比较常见的使用场景【3】:

  • 点击流分析(web 和 mobile 分析)
  • 风控分析
  • 网路遥测分析(网络性能监控)
  • 服务器指标存储
  • 供应链分析(制造业指标)
  • 应用性能指标
  • 商业智能/实时在线分析系统 OLAP

TDengine,国产数据库,据官网介绍,性能碾压大部分时序数据库,参考https://www.taosdata.com/cn/documentation

更多可以参考这篇文章:《时间序列数据库(TSDB)初识与选择》

本文着重关注InfluxDB。

3 InfluxDB

InfluxDB是一款Go语言写的时序数据库,开源版不支持集群。但单机性能强、生态好,SDK以及文档丰富。

安装

打开官方文档,里面有各种系统的安装方式,本文测试环境为CentOS7,在此我们使用docker安装体验:

docker run --name influxdb -p 8086:8086 influxdb:2.0.9

Web控制台

打开Web控制台 http://localhost:8086,填入账号密码、团队组织信息、以及初始化桶名称(将用于存储数据保留策略等系统信息)
Web控制台
进入控制台后,分三步开始,采集加载数据->创建观察面板->设置预警
在这里插入图片描述

加载数据源

加载数据源可以是采用丰富的客户端库进行数据写入,也可以直接使用各种各样的Telegraf插件采集数据。Telegraf是一个数据采集代理,类似与ElasticSearch的Logstash,需要安装才能使用。
在这里插入图片描述
比如我们要采集CPU信息,提示需要安装Telegraf,如下图:
在这里插入图片描述

4 Telegraf的使用

Telegraf的使用分三步:

  1. 安装Telegraf
  2. 配置插件
  3. 启动服务

安装Telegraf

打开Telegraf文档,查看安装和使用手册。

执行以下命令:

cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
sudo yum install telegraf

配置插件

打开/etc/telegraf/telegraf.conf文件,配置CPU信息采集(默认已配置)。
在这里插入图片描述

我们创建一个桶用于存储测试数据,可以设置数据自动删除的时间:
在这里插入图片描述
配置采集到的数据输出到创建的桶里:
在这里插入图片描述

启动服务

sudo systemctl start telegraf

创建Dashboard,并把数据添加进来即可直观查看图表:
在这里插入图片描述
后续再测试客户端SDK。

5 参考文献

【1】时序数据库简介
【2】InfluxDB引擎浅析
【3】十分钟了解 Apache Druid

### 关于时序数据库 InfluxDB 的详细介绍 #### InfluxDB 基本概念 InfluxDB 是一款专为时间序列数据设计的开源分布式数据库,能够高效处理大量带时间戳的数据。该数据库特别适用于记录随时间变化的各种度量指标、事件以及其它分析数据。 #### 主要特性 - **高性能写入和查询能力**:针对高频率的时间序列数据进行了优化,可以快速地执行大量的插入操作并提供高效的查询性能。 - **内置支持多种协议**:除了HTTP API外还提供了Line Protocol等多种方式用于接收外部系统的遥测数据输入[^1]。 - **丰富的生态系统工具集**:包括但不限于Telegraf作为其官方推荐的数据收集器;Chronograf用来可视化展示数据;Kapacitor负责告警触发等功能模块共同构成了完整的解决方案栈[^3]。 #### 应用场景实例 对于某些特定类型的业务需求来说,迁移至像InfluxDB这样的专用时序库能带来显著优势。比如,在涉及商品防伪验证或者货物运输路径追踪的应用里,通过把传统SQL Server里的订单详情迁移到这里之后就可以更方便地实现产品生命周期内的全程追溯管理了[^2]。另外,在面对诸如物联网设备产生的海量传感器读数这类极短周期更新的信息流时,选用此类专业软件同样显得尤为重要[^4]。 ```python from influxdb import InfluxDBClient client = InfluxDBClient('localhost', 8086, 'root', 'root', 'example') json_body = [ { "measurement": "cpu_load_short", "tags": { "host": "server01", "region": "us-west" }, "time": "2009-11-10T23:00:00Z", "fields": { "value": 0.64 } } ] client.write_points(json_body) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值