Apache IoTDB开发之运维和监控工具

简介: 目前,IoTDB为用户提供了使用Java的JConsole工具来监控系统状态或使用IoTDB的开放API来检查数据状态。启动JConsole工具并连接到IoTDB服务器后,咱们大家就可以基本了解IoTDB系统状态,包括CPU占用,内存信息等。

查询历史可视化工具

IoTDB查询历史可视化工具通过监控网页提供指标服务,用于查看查询历史和SQL执行时间。它还可以提供当前主机的内存和 CPU 使用率。

IoTDB查询历史可视化工具的端口是。只需在浏览器中打印的,就可以查看这样的页面:8181ip:8181

监控和日志工具

系统监视器

目前,IoTDB为用户提供了使用Java的JConsole工具来监控系统状态或使用IoTDB的开放API来检查数据状态。

系统状态监控

启动JConsole工具并连接到IoTDB服务器后,咱们大家就可以基本了解IoTDB系统状态,包括CPU占用,内存信息等

JMX MBean Monitoring

通过使用JConsole工具并与JMX连接,您可以看到一些系统统计信息和参数。本节介绍如何使用 JConsole 选项卡监控 IoTDB 服务进程打开的文件数量、数据文件的大小等。连接到 JMX 后,您可以通过选项卡找到命名的,如下图所示。MbeanMBeanorg.apache.iotdb.serviceMBeans

Monitor下有几个属性,包括在不同文件夹中打开的文件数,数据文件大小统计信息和某些系统参数的值。通过双击与属性对应的值,它还可以显示该属性的折线图。特别是,所有打开的文件计数统计信息目前仅支持除 .对于不支持的操作系统,这些统计信息将返回 。有关监视器属性的具体介绍,请参阅以下部分。MacOSLinuxCentOS-2

MBean 监视器属性列表
  • 数据大小字节
名字 数据大小字节
描述 数据文件的总大小。
单位 字节
类型
  • FileNodeNum
名字 FileNodeNum
描述 文件节点的计数号。(目前不支持)
类型
  • 溢出缓存大小
名字 溢出缓存大小
描述 乱序数据缓存的大小。(目前不支持)
单位 字节
类型
  • BufferWriteCacheSize
名字 BufferWriteCacheSize
描述 BufferWriter 缓存的大小。(目前不支持)
单位 字节
类型
  • 基目录
名字 基目录
描述 数据文件的绝对目录。
类型 字符串
  • 提前写入日志状态
名字 提前写入日志状态
描述 预写日志 (WAL) 的状态。 表示已启用 WAL 。True
类型 布尔
  • TotalOpenFileNum
名字 TotalOpenFileNum
Description All the opened file number of IoTDB server process.
Type Int
  • DeltaOpenFileNum
名字 DeltaOpenFileNum
描述 打开的IoTDB服务器进程的TsFile文件号。
默认目录 /数据/数据/已结算
类型 国际
  • WalOpenFileNum
名字 WalOpenFileNum
描述 IoTDB 服务器进程打开的预写日志文件号。
默认目录 /数据/沃尔
类型 国际
  • 元数据打开文件编号
名字 元数据打开文件编号
描述 打开的 IoTDB 服务器进程的元数据文件编号。
默认目录 /data/system/schema
类型 国际
  • 摘要打开文件编号
名字 摘要打开文件编号
描述 打开的IoTDB服务器进程的信息文件号。
默认目录 /数据/系统/信息
类型 国际
  • 套接字打开文件编号
名字 套接字打开文件编号
描述 操作系统的套接字链接(TCP 或 UDP)编号。
类型 国际
  • 合并周期在第二
名字 合并周期在第二
描述 IoTDB 服务进程周期性触发合并进程的时间间隔。
单位 第二
类型
  • 关闭周期在秒
名字 关闭周期在秒
描述 IoTDB 服务进程定期将内存数据刷新到磁盘的时间间隔。
单位 第二
类型

数据状态监控

该模块是IoTDB为用户提供的统计监控方法,用于存储数据信息。我们将统计数据记录在系统中并将其存储在数据库中。当前 0.8.0 版本的 IoTDB 提供了写入数据的统计信息。

用户可以选择启用或关闭数据统计监控功能(在配置文件中设置项目)。enable_stat_monitor

写入数据监视器

目前系统写入数据的统计可以分为两大模块:全局写入数据统计和存储组写入数据统计全局写入数据统计记录用户写入的点数和请求数。存储组写入数据统计记录了某个存储组的数据。

系统默认每5秒采集一次数据,并将统计信息写入IoTDB并存储在系统指定的位置。(如果需要更改统计频率,可以在配置文件中设置该back_loop_period_in_second entry发动机层了解详情)。系统刷新或重启后,IoTDB不会恢复统计信息,统计信息将从零重启。

为了避免统计信息的过度使用,我们增加了定期清除统计信息无效数据的机制。系统会定期删除无效数据。用户可以设置触发频率(,默认为600s,见章节stat_monitor_retain_interval_in_second发动机层有关详细信息),以设置删除数据的频率。通过设置有效数据持续时间(,默认值为 600s,请参阅部分stat_monitor_detect_freq_in_second entry发动机层有关详细信息)来设置有效数据的时间段,即在清除操作触发时间内的数据stat_monitor_detect_freq_in_second为有效数据。为了保证系统的稳定性,不允许频繁删除统计信息。因此,如果配置参数时间小于默认值(600s),系统将中止配置参数并使用默认参数。

使用子句来获取与其他时间相同的写入数据统计信息很方便。select

以下是写入数据统计信息:

  • TOTAL_POINTS(全球)
名字 TOTAL_POINTS
描述 计算全局写入点数。
类型 写入数据统计信息
时间序列名称 root.stats.write.global.TOTAL_POINTS
重新启动系统后重置 是的
从root.stats.write.global中选择TOTAL_POINTS
  • TOTAL_REQ_SUCCESS(全球)
名字 TOTAL_REQ_SUCCESS
描述 计算全局成功请求数。
类型 写入数据统计信息
时间序列名称 root.stats.write.global.TOTAL_REQ_SUCCESS
重新启动系统后重置 是的
从root.stats.write.global中选择TOTAL_REQ_SUCCESS
  • TOTAL_REQ_FAIL(全球)
名字 TOTAL_REQ_FAIL
描述 计算全局失败请求数。
类型 写入数据统计信息
时间序列名称 root.stats.write.global.TOTAL_REQ_FAIL
重新启动系统后重置 是的
从root.stats.write.global中选择TOTAL_REQ_FAIL
  • TOTAL_POINTS_FAIL(全球)
名字 TOTAL_POINTS_FAIL
描述 计算全局失败写入点数。
类型 写入数据统计信息
时间序列名称 root.stats.write.global.TOTAL_POINTS_FAIL
重新启动系统后重置 是的
从root.stats.write.global中选择TOTAL_POINTS_FAIL
  • TOTAL_POINTS_SUCCESS(全球)
名字 TOTAL_POINTS_SUCCESS
描述 计算 c。
类型 写入数据统计信息
时间序列名称 root.stats.write.global.TOTAL_POINTS_SUCCESS
重新启动系统后重置 是的
从root.stats.write.global中选择TOTAL_POINTS_SUCCESS
  • TOTAL_REQ_SUCCESS(存储组)
名字 TOTAL_REQ_SUCCESS
描述 计算特定存储组的成功请求数
类型 写入数据统计信息
时间序列名称 root.stats.write.<storage_group_name>.TOTAL_REQ_SUCCESS
重新启动系统后重置 是的
从root.stats.write.中选择TOTAL_REQ_SUCCESS<storage_group_name>
  • TOTAL_REQ_FAIL(存储组)
名字 TOTAL_REQ_FAIL
描述 计算特定存储组的失败请求数
类型 写入数据统计信息
时间序列名称 root.stats.write.<storage_group_name>.TOTAL_REQ_FAIL
重新启动系统后重置 是的
从root.stats.write.中选择TOTAL_REQ_FAIL<storage_group_name>
  • TOTAL_POINTS_SUCCESS(存储组)
名字 TOTAL_POINTS_SUCCESS
描述 计算特定存储组的成功写入点数。
类型 写入数据统计信息
时间序列名称 root.stats.write.<storage_group_name>.TOTAL_POINTS_SUCCESS
重新启动系统后重置 是的
从root.stats.write.中选择TOTAL_POINTS_SUCCESS<storage_group_name>
  • TOTAL_POINTS_FAIL(存储组)
名字 TOTAL_POINTS_FAIL
描述 计算特定存储组的失败写入点数。
类型 写入数据统计信息
时间序列名称 root.stats.write.<storage_group_name>.TOTAL_POINTS_FAIL
重新启动系统后重置 是的
从root.stats.write.中选择TOTAL_POINTS_FAIL<storage_group_name>

注意:

<storage\_group\_name _msttexthash="756647346" _msthash="2254">应替换为实际存储组名称,并且存储组中的“.”需要替换为“_”。例如,存储组名称为“root.a.b”,在统计信息中使用时,它将更改为“root_a_b”</storage\_group\_name>

在这里,我们给出一些使用写入数据统计信息的示例。

如果想知道全局成功写入点数,可以使用子句查询其值。查询语句如下所示:select

  1. select TOTAL_POINTS_SUCCESS from root.stats.write.global

如果想知道root.ln(存储组)的成功写入点数,下面是查询语句:

  1. select TOTAL_POINTS_SUCCESS from root.stats.write.root_ln

如果想知道系统中当前的时间序列点,可以使用函数进行查询。下面是查询语句:MAX_VALUE

  1. select MAX_VALUE(TOTAL_POINTS_SUCCESS) from root.stats.write.root_ln

文件大小监视器

有时我们担心 IoTDB 的数据文件大小如何变化,也许是为了帮助计算剩余多少磁盘空间或数据摄取速度。文件大小监视器提供了多个统计信息,以显示不同类型的文件大小如何变化。

文件大小监视器默认使用相同的共享参数每 5 秒收集一次文件大小数据,back_loop_period_in_second

与写入数据监视器不同,当前文件大小监视器不会定期删除统计数据。

您还可以像其他时间序列一样使用子句来获取文件大小统计信息。select

以下是文件大小统计信息:

  • 数据
名字 数据
描述 以字节为单位计算数据目录下所有文件大小的总和(默认)。data/data
类型 文件大小统计
时间序列名称 root.stats.file_size。数据
重新启动系统后重置
从root.stats.file_size中选择数据。数据
  • 安定
名字 安定
描述 以字节为单位计算所有大小(默认为 下)的总和。如果有多个目录,例如 ,此统计信息是它们大小的总和。TsFiledata/data/settledTsFile{data/data/settled1, data/data/settled2}
类型 文件大小统计
时间序列名称 root.stats.file_size。安定
重新启动系统后重置
选择已结算root.stats.file_size。安定
  • 溢出
名字 溢出
描述 以字节为单位计算所有大小(默认为 下)的总和。out-of-order data filedata/data/unsequence
类型 文件大小统计
时间序列名称 root.stats.file_size。溢出
重新启动系统后重置
选择“从root.stats.file_size溢出”。溢出
  • 沃尔玛
名字 沃尔玛
描述 以字节为单位计算所有大小(默认为 下)的总和。Write-Ahead-Log filedata/wal
类型 文件大小统计
时间序列名称 root.stats.file_size。沃尔玛
重新启动系统后重置
从root.stats.file_size中选择 WAL。沃尔玛
  • 信息
名字 信息
描述 以字节为单位计算所有 等文件大小(在 下)的总和。.restoredata/system/info
类型 文件大小统计
时间序列名称 root.stats.file_size.信息
重新启动系统后重置
从root.stats.file_size.INFO 中选择“信息”
  • 图式
名字 图式
描述 以字节为单位计算所有大小(下)的总和。metadata filedata/system/metadata
类型 文件大小统计
时间序列名称 root.stats.file_size。图式
重新启动系统后重置
从root.stats.file_size中选择架构。图式

性能监视器

介绍

为了掌握 iotdb 的性能,我们添加了这个模块来计算每个操作的时间消耗。该模块可以统计每个操作的平均耗时量,以及每个操作的时间消耗量属于某个时间范围的比例。输出位于log_measure.log文件中。下面是一个输出示例。

配置参数

位置:conf/iotdb-engine.properties

**表 -参数和说明**

参数 默认值 描述
enable_performance_stat 子模块的统计性能是否启用。
performance_stat_display_interval 60000 显示统计结果的间隔以毫秒为单位。
performance_stat_memory_in_kb 20 用于performance_stat的内存(以 KB 为单位)。

JMX MBean

使用端口 31999 连接到 jconsole,然后在菜单栏中选择“MBean”。展开侧边栏并选择“org.apache.iotdb.db.cost.statistic”。您可以找到:

属性

  1. EnableStat:无论统计是否开启,如果为真,模块都会记录每个操作的耗时并打印结果;它是不可编辑的,但可以通过下面的功能进行更改。
  2. 显示间隔(以毫秒为单位):打印结果之间的间隔。更改不会立即生效。要使更改生效,您应该调用 startContinuStatistics() 或 startOneTimeStatistics()。
  3. 操作开关:指示是否应计算一种操作的统计信息的映射,键为操作名称,值为 true 表示操作的统计信息已启用,否则禁用。此参数不能直接更改,它可以通过操作“changeOperationSwitch()”进行更改。

操作

  1. startContinuStatistics:以“DisplayIntervalInMs”的间隔启动统计信息和输出。
  2. startOneTimeStatistics:延迟启动“DisplayIntervalInMs”的统计信息和输出。
  3. 停止统计:停止统计。
  4. clearStatisticalState():清除当前统计结果,重置统计结果。
  5. changeOperationSwitch(字符串操作名称,布尔操作状态):设置是否监视某种操作。参数 'operationName' 是操作的名称,在属性 operationSwitch 中定义。参数操作状态是是否启用统计信息。如果状态切换成功,函数将返回 true,否则返回 false。

为 IOTDB 的贡献者添加自定义监控项

添加操作

在org.apache.iotdb.db.cost.statistic.Operation中添加枚举。

在监控区域添加定时码

在监控开始区域添加计时代码:

  1. long t0 = System. currentTimeMillis();

在监控停止区域添加定时代码:

  1. Measurement.INSTANCE.addOperationLatency(Operation, t0);

缓存命中率统计

概述

为了提高查询性能,IOTDB缓存了ChunkMetaData和TsFileMetaData。用户可以通过调试级日志和MXBean查看缓存命中率,并根据缓存命中率和系统内存调整缓存占用的内存。使用MXBean查看缓存命中率的方法如下:

  1. 使用端口 31999 连接到 jconsole,并在上面的菜单项中选择“MBean”。
  2. 展开侧边栏并选择“org.apache.iotdb.db.service”。您将获得如下图所示的结果:

## 系统日志

IoTDB允许用户通过修改日志配置文件来配置IoTDB系统日志(如日志输出级别)。系统日志配置文件的默认位置位于 $IOTDB_HOME/conf 文件夹中。

默认日志配置文件名为 logback.xml。用户可以通过添加或更改 xml 树节点参数来修改系统运行日志的配置。需要注意的是,使用日志配置文件对系统日志的配置在修改后不会立即生效,而是在重新启动系统后生效。logback.xml的使用与往常一样。

同时,为了方便开发者和DBA对系统的调试,我们提供了多个JMX接口来动态修改日志配置,实时配置系统的Log模块,而无需重启系统。

动态系统日志配置

连接 JMX

这里我们使用JConsole与JMX连接。

启动JConsole,与IoTDB服务器建立新的JMX连接(可以选择本地进程或输入IP和PORT进行远程连接,IoTDB JMX服务的默认操作端口为31999)。图 4.1 显示了 JConsole 的连接 GUI。

连接后,单击并查找(如图4.2所示)。MBeanch.qos.logback.classic.default.ch.qos.logback.classic.jmx.JMXConfigurator

在JMXConfigurator窗口中,为您提供了6个操作,如图4.3所示。您可以使用那里的接口来执行操作。

接口说明

  • 重新加载默认配置

此方法是重新加载默认登录配置文件。用户可以先修改默认配置文件,然后调用该方法将修改后的配置文件重新加载到系统中以生效。

  • 重新加载按文件名

此方法加载具有指定路径和名称的 logback 配置文件,然后使其生效。此方法接受名为 p1 的 String 类型的参数,该参数是需要指定加载的配置文件的路径。

  • getLoggerEffectiveLevel

此方法是获取指定记录器的当前日志级别。此方法接受名为 p1 的字符串类型参数,该参数是指定记录器的名称。此方法返回当前对指定记录器有效的日志级别。

  • 获取记录器级别

此方法是获取指定记录器的日志级别。此方法接受名为 p1 的字符串类型参数,该参数是指定记录器的名称。此方法返回指定记录器的日志级别。应该注意的是,此方法与该方法之间的区别在于该方法返回在配置文件中设置的指定记录器的日志级别。如果用户未设置记录器的日志级别。,然后返回空。根据 Logger 的日志级别继承机制,如果未显式设置记录器的级别,它将从其最近的祖先继承日志级别设置。此时,调用该方法将返回记录器生效的日志级别;调用将返回空值。getLoggerEffectiveLevelgetLoggerEffectiveLevelgetLoggerLevel

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
106 1
|
4天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
15 2
|
21天前
|
数据处理 Apache 数据库
将 Python UDF 部署到 Apache IoTDB 的详细步骤与注意事项
【10月更文挑战第21天】将 Python UDF 部署到 Apache IoTDB 中需要一系列的步骤和注意事项。通过仔细的准备、正确的部署和测试,你可以成功地将自定义的 Python UDF 应用到 Apache IoTDB 中,为数据处理和分析提供更灵活和强大的支持。在实际操作过程中,要根据具体情况进行调整和优化,以确保实现最佳的效果。还可以结合具体的代码示例和实际部署经验,进一步深入了解和掌握这一过程。
20 2
|
21天前
|
存储 物联网 数据处理
如何使用 Apache IoTDB UDF
【10月更文挑战第21天】使用 Apache IoTDB 的 UDF 可以为用户提供更大的灵活性和扩展性,帮助用户更好地处理和分析物联网数据。通过合理编写和使用 UDF,用户可以充分发挥 IoTDB 的潜力,实现更复杂、更高效的数据处理和分析任务。
24 2
|
1月前
|
运维 Java Linux
【运维基础知识】掌握VI编辑器:提升你的Java开发效率
本文详细介绍了VI编辑器的常用命令,包括模式切换、文本编辑、搜索替换及退出操作,帮助Java开发者提高在Linux环境下的编码效率。掌握这些命令,将使你在开发过程中更加得心应手。
32 2
|
30天前
|
存储 运维 监控
实时计算Flink版在稳定性、性能、开发运维、安全能力等等跟其他引擎及自建Flink集群比较。
实时计算Flink版在稳定性、性能、开发运维和安全能力等方面表现出色。其自研的高性能状态存储引擎GeminiStateBackend显著提升了作业稳定性,状态管理优化使性能提升40%以上。核心性能较开源Flink提升2-3倍,资源利用率提高100%。提供一站式开发管理、自动化运维和丰富的监控告警功能,支持多语言开发和智能调优。安全方面,具备访问控制、高可用保障和全链路容错能力,确保企业级应用的安全与稳定。
38 0
|
3月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
174 9
Apache IoTDB进行IoT相关开发实践
|
3月前
|
运维 Devops 持续交付
自动化运维之路:从脚本到DevOps探索后端开发:从基础到高级实践
【8月更文挑战第28天】在数字化时代的浪潮中,企业对于IT运维的要求越来越高。从最初的手动执行脚本,到如今的自动化运维和DevOps实践,本文将带你领略运维的演变之旅。我们将探索如何通过编写简单的自动化脚本来提升效率,进而介绍DevOps文化的兴起及其对现代运维的影响。文章将为你揭示,通过持续集成、持续部署和微服务架构的实践,如何构建一个高效、可靠的运维体系。准备好让你的运维工作变得更加智能化和自动化了吗?让我们一起踏上这段旅程。 【8月更文挑战第28天】 本文旨在为初学者和有一定经验的开发者提供一个深入浅出的后端开发之旅。我们将一起探索后端开发的多个方面,包括语言选择、框架应用、数据库设计
|
3月前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
52 1
|
3月前
|
运维 Kubernetes 监控

推荐镜像

更多