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

举报
小云悠悠zZ 发表于 2023/08/31 22:09:34 2023/08/31
【摘要】 目前,IoTDB为用户提供了使用Java的JConsole工具来监控系统状态或使用IoTDB的开放API来检查数据状态。启动JConsole工具并连接到IoTDB服务器后,咱们大家就可以基本了解IoTDB系统状态,包括CPU占用,内存信息等。

查询历史可视化工具

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

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

查询历史可视化工具 - 图1

监控和日志工具

系统监视器

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

系统状态监控

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

JMX MBean Monitoring

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

监控和日志工具 - 图2

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文件中。下面是一个输出示例。

监控和日志工具 - 图3

配置参数

位置: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”。您可以找到:

监控和日志工具 - 图4

属性

  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”。您将获得如下图所示的结果:

监控和日志工具 - 图5## 系统日志

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。

监控和日志工具 - 图6

连接后,单击并查找(如图4.2所示)。MBeanch.qos.logback.classic.default.ch.qos.logback.classic.jmx.JMXConfigurator监控和日志工具 - 图7

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

监控和日志工具 - 图8

接口说明

  • 重新加载默认配置

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

  • 重新加载按文件名

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

  • getLoggerEffectiveLevel

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

  • 获取记录器级别

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。