hmf-tsdb 快速入门

2023-12-14 22:30
文章标签 入门 快速 tsdb hmf

本文主要是介绍hmf-tsdb 快速入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境要求

  1. jdk8 或以上版本
  2. mongodb3.4 或以上版本
  3. kafka2.2.0 或以上版本

上述软件 如果没有的话,请先安装。其中kafka 和 mongodb 均可以安装在别的机器上,也可以安装在本机。

下载

下载 hmf-tsdb 到本地,然后解压缩。

修改配置文件

打开hmf-tsdb的解压目录,用文本编辑器打开文件application.properties。找到下面两行:

mongo.connStr = mongodb://127.0.0.1:27017

mongo.dbName = tsdb2

然后根据自己安装的mongodb来修改mongo.connStr。mongo.dbName可以不改,程序运行后会自动根据mongo.dbName的值在mongodb中创建相应的数据库。

找到下面这几行:

#kafka consumer

kafka.consumer.bootstrap-servers = 127.0.0.1:9092

kafka.consumer.topic = tsdb-dps

kafka.consumer.group-id = tsdb-store

kafka.consumer.thread.size = 2

根据您安装的kafka服务器,对此处配置进行修改。假如你完全按照默认参数在本地部署的kafka,则无需修改。

运行

  1. 启动Mongodb,略
  2. 启动Kafka自带的zookeeper,略
  3. 启动Kafka,略
  4. 启动hmf-tsdb: 在hmf-tsdb目录,执行 start.cmd(windows)或者start.sh(linux),便可启动hmf-tsdb。然后打开浏览器,访问 http://localhost:8080/query.html , 如果浏览器能顺利打开下面的界面,说明我们运行成功。 查询界面

产生模拟数据

虽然我们已经运行了hmf-tsdb,但我们看不到任何有趣的效果。接下来,我们需要一个模拟器,向kafka推送数据。hmf-tsdb会主动从kafka服务器pull数据,并保存到mongodb中。hmf-tsdb通过内存缓存、磁盘快照存储、磁盘归档存储等各种策略,提供了单机50万 时序数据的写入能力,并可以实时查询各个测点的趋势图。

下载 dps-producer-demo(该模拟器默认每秒钟生成1万时序数据),修改配置文件:

  1. 指定kafka地址: bootstrap.servers = 127.0.0.1:9092

  2. 指定模拟的区域数量、每个区域设备数量、每个设备测点(在有些行业成为指标)量。

area.amount = 10

device.amount = 50

metric.amount = 20

默认情况下 区域数量 设备数量 测点数据=10000。当你不甚了解hmf-tsdb的时候,暂且不要修改这些参数。当测点总量增加的时候,对运行环境会有各种要求:内存、cpu、mongodb的配置等

然后 运行dps-producer-demo目录中的start.cmd或者start.sh。

查询时序数据

现在我们还不了解hmf-tsdb的表达式语法,你暂且直接在query.html的界面中输入:

current{area='area_1',device='device_1'} last[1h]

然后点击“查询”按钮。浏览器就能显示出 最近 1小时内,位置在 ‘area_1’,且设备编号为'device_1'的电流采样值的历史曲线。如下图所示: 查询

如何向hmf-tsdb写入你自己的时序数据

假如你熟悉kafka的这,向hmf-tsdb写入实时数据是一件非常简单的事情:

创建一个kafka producer,然后用producer向kafka服务器 推送时序数据即可。时序数据 以 json格式的字符串来表示,通常是这个样子的:

{"metric":"current","tags":{"area":"area_1","device":"device_1"},"time":1555137083702,"value":50.47901}

其中metric属性是测点名称,tags是其他一些查询和分析需要用到的标签,time是采样时间,value是采样值。tags的内容可以根据应用的需要定制各种不同的tag,而metric,time,value这三个属性是必须的,不可以改动属性名称。

接下来,启动你的hmf-tsdb,就能够从kafka接收并存储时序数据了。

备注:hmf-tsdb提供了直接写入时序数据的api,你的应用 可以不经kafka直接写入hmf-tsdb。但是,我强烈地不建议你这么做。

  1. 因为这种强耦合的架构和部署,会给后来的架构调整或者运维带来诸多不便。假如:你运行hmf-tsdb的服务器磁盘不够 ,需要停机增加磁盘,那么直接写入的这种架构就会在hmf-tsdb停机期间丢失一部分数据。但假如你是经过Kafka写入hmf-tsdb的话,暂停hmf-tsdb不会导致你时序数据的丢失。

  2. 经由kafka写入hmf-tsdb的架构下,kafka还能起到一个削峰填谷的作用,使系统运行更加平滑流畅,不会因为瞬时的使用高峰(比如突然很多人来查询历史数据),导致系统卡顿甚至数据丢失。

这篇关于hmf-tsdb 快速入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/494119

相关文章

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

SpringBoot快速搭建TCP服务端和客户端全过程

《SpringBoot快速搭建TCP服务端和客户端全过程》:本文主要介绍SpringBoot快速搭建TCP服务端和客户端全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录TCPServerTCPClient总结由于工作需要,研究了SpringBoot搭建TCP通信的过程

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.