指标监控监控大盘CLI告警MCP 服务【免费下载链接】glancesGlances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.项目地址https://gitcode.com/gh_mirrors/gl/glances点击查看免费下载Glances 内置了面向 TimescaleDB 的导出接口可将主机各项系统指标以 hypertable超表形式持续写入基于 PostgreSQL 的时序数据库支持按主机名分段、按插件维度组织数据为后续基于 SQL 的查询与 Grafana 可视化提供数据底座。读完本文你将掌握 TimescaleDB 导出器的配置方法、命令行启用方式、底层数据模型与建表逻辑以及当前实现的功能边界。TimescaleDB 导出器概述TimescaleDB 章节的导出器列表中看到 timescaledb 的身影它与其他导出器CSV、InfluxDB、Kafka、ClickHouse 等并列共同构成 Glances 的数据出口体系。对应的导出实现位于 glances/exports/glances_timescaledb/init.py核心类Export继承自基类 glances/exports/export.py 中的GlancesExport与其余导出器共享同一套配置加载、插件枚举与导出生命周期框架。环境准备与依赖TimescaleDB 导出器通过psycopgpsycopg 3驱动连接 PostgreSQL/TimescaleDB。在 all-requirements.txt 中可以确认其依赖声明psycopg3.3.5psycopg-binary3.3.5非 PyPy 实现下提供二进制加速因此启用该导出功能前需要确保环境中安装了上述依赖可执行pip install psycopg psycopg-binary或直接安装带完整依赖的 Glances 发行版本。此外你还需要一个可访问的 TimescaleDB 服务端实例。配置连接参数TimescaleDB 导出器的连接信息需要在 Glances 配置文件的[timescaledb]节中定义。默认配置文件 conf/glances.conf 中给出了完整的参考配置[timescaledb] # Configuration for the --export timescaledb option hostlocalhost port5432 dbglances userpostgres passwordpassword # Overwrite device name (default is the FQDN) # Most of the time, you should not overwrite this value #hostnamemycomputer各参数含义如下参数必填默认值说明host是无TimescaleDB 服务器地址port是无TimescaleDB 服务端口PostgreSQL 默认 5432db是无目标数据库名称导出的 hypertable 将建在该库中user否无连接用户名password否无连接密码hostname否当前主机 FQDN 的第一段覆盖写入数据时的主机标识从源码来看参数加载逻辑在Export.__init__中通过基类的load_conf方法完成见 glances/exports/glances_timescaledb/init.pyself.export_enable self.load_conf( timescaledb, mandatories[host, port, db], options[user, password, hostname] )其中host、port、db是必填项若缺失或节不存在导出器会直接退出并提示Missing TimescaleDB configuser、password、hostname为可选项。若未显式配置hostname则默认取platform.node()返回的主机名去除域名部分后的值即 FQDN 的第一段这一默认值将作为数据表中的主机标识使用见 glances/exports/glances_timescaledb/init.py。启动导出配置完成后在命令行中启用导出$ glances --export timescaledbGlances 会据此建立到 TimescaleDB 的连接并在日志中输出如下信息INFO 级别Stats will be exported to TimescaleDB server: host:port连接串的构造方式为hosthost portport dbnamedb useruser passwordpassword见 glances/exports/glances_timescaledb/init.py如果连接失败会记录 CRITICAL 日志并以退出码 2 终止进程。此外Glances 还提供与导出配合的通用 CLI 参数例如--stop-after N可在写入 N 次后自动停止便于在自动化测试或一次性采集中控制运行时长。仓库中的集成测试脚本 tests/test_export_timescaledb.sh 演示了一套完整的验证流程用 Docker 启动timescale/timescaledb-ha:pg17容器、创建glances数据库、以--export timescaledb --stop-after 10方式运行 Glances再通过 psql 查询cpu表并校验 CSV 导出行数——这也是你在本地快速验证配置是否生效的可靠做法。数据模型hypertable 的组织方式这是 TimescaleDB 导出器区别于其他导出器的最核心设计可以归纳为以下三条规则源码与文档双重印证规则一每个插件一张 hypertable。在update方法中导出器遍历可导出的插件列表为每个插件维护独立的creation_list建表字段与values_list待插入数据。在export方法中首先查询information_schema.tables判断表是否已存在不存在则以插件名创建 hypertable见 glances/exports/glances_timescaledb/init.pyCREATE TABLE plugin (...) WITH ( timescaledb.hypertable, timescaledb.partition_columntime, timescaledb.segmentby segmentby );即每个插件的表都显式声明为 TimescaleDB hypertable并以time列作为分区列。例如 CPU 插件的统计会进入名为cpu的超表中。规则二按时间分区。每张表都包含一个time TIMESTAMPTZ NOT NULL列插入数据时由导出器以 UTC 当前时间datetime.now(timezone.utc)填充TimescaleDB 将按该列自动进行时间维度的分区从而实现时序数据的按时间裁剪与高效查询。规则三按主机分段segmentby。每张表还固定包含hostname_id TEXT NOT NULL列写入值即为前面计算的hostname默认 FQDN 第一段。该列被加入timescaledb.segmentby选项使同一数据库中可以容纳多台主机的数据查询时按hostname_id精确过滤即可。规则四带 key 的插件额外分段。对于以列表形式输出、且元素含key字段的插件典型如 network其 key 为接口名导出器会将 key 以key_id TEXT NOT NULL列的形式加入表并追加到timescaledb.segmentby中从而实现对同一主机内多个子项多网卡等的独立分段见 glances/exports/glances_timescaledb/init.py。以 network 为例表结构大致如下time TIMESTAMPTZ NOT NULL -- 分区列写入时自动填充 hostname_id TEXT NOT NULL -- 分段列标识主机 key_id TEXT NOT NULL -- 分段列标识接口名 字段1 类型 NULL 字段2 类型 NULL ...类型映射与数据归一化在动态建表时Glances 依据 Python 值的运行时类型type(value).__name__选择 PostgreSQL 列类型映射表定义于源码顶部的convert_types字典见 glances/exports/glances_timescaledb/init.pyPython 类型PostgreSQL 类型说明boolBOOLEAN布尔值intBIGINT64 位整数floatDOUBLE PRECISION双精度浮点strTEXT字符串tuple/listTEXT元组/列表以逗号分隔字符串存储NoneTypeDOUBLE PRECISION空值以 DOUBLE PRECISION 处理避免 NULL 类型歧义除time、hostname_id、key_id三个元数据列外插件统计字段均以 NULL 约束的上述类型落列。插入前normalize方法会将 list/tuple 值展开为逗号分隔字符串并对单元素布尔列表做特例处理避免被字符串化其余类型交由 psycopg 原生绑定None 直接映射为 SQL NULL见 glances/exports/glances_timescaledb/init.py。字段命名与内容修正导出器在写入前会对统计内容做几处调整见 glances/exports/glances_timescaledb/init.py过滤内部字段每个插件的导出字典中会移除plugin_disable字段避免将开关状态误写入时序数据。合并阈值字段将插件的阈值limits字段合并进统计字典使告警阈值与测量值同表存储。保留字改名由于user是 PostgreSQL 的保留关键字cpu 插件中的user字段会被重命名为user_cpupercpu 插件中对应为user_percpu。这是文档明确记载的限制且从源码可以确认这一重命名对 dict 型插件与 list 型插件均生效user_plugin命名模式。写入与事务处理数据写入采用参数化批量插入防止 SQL 注入语句形如见 glances/exports/glances_timescaledb/init.pyINSERT INTO plugin (col1, col2, ...) VALUES (%s, %s, ...)表名与列名通过sql.Identifier引用值通过占位符绑定一个插件在一次更新周期内可能插入多行list 型插件每项一行通过executemany批量写入。每完成一个插件的写入即执行一次client.commit()确保数据尽快落盘。进程退出时exit方法会先强制 commit并等待约 3 秒后再关闭连接以尽量保证尾部数据写入完整见 glances/exports/glances_timescaledb/init.py。查询示例数据写入后即可用标准 SQL 进行时序查询。例如查看最近一小时cpu表的用户态与系统态 CPU 使用率SELECT time, hostname_id, user_cpu, system FROM cpu WHERE time now() - interval 1 hour ORDER BY time DESC;需要说明的是由于字段名由插件运行时动态决定具体列名以实际建表结果为准而time、hostname_id、key_id若存在三个列在任何表中都是固定的可以作为所有查询的稳定锚点。若数据库存放了多台主机务必在查询条件中带上hostname_id进行过滤。当前限制TimescaleDB 导出器目前存在以下已知限制文档 docs/gw/timescaledb.rst 与源码注释相互印证sensors、fs、diskio 三个插件不支持导出。源码中update方法明确将这三个插件从导出列表中剔除见 glances/exports/glances_timescaledb/init.py原因注释为这些插件的字段列表不一致fields list is not the same无法套用统一的动态建表模型。user字段需要改名。因user是 PostgreSQL 保留字cpu 导出为user_cpu、percpu 导出为user_percpu。小结Glances 的 TimescaleDB 导出器以每插件一超表 时间分区 主机/键分段的模型把系统监控数据组织成适合 SQL 查询与长期存储的时序结构。配置仅需在 conf/glances.conf 的[timescaledb]节填写连接信息随后以glances --export timescaledb启动即可配合 Grafana 的 PostgreSQL 数据源即可直接基于这些 hypertable 搭建监控大盘。需要注意其在 sensors/fs/diskio 上的功能边界并在多主机场景下善用hostname_id维度过滤数据。赞分享指标监控监控大盘CLI告警MCP 服务【免费下载链接】glancesGlances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.项目地址https://gitcode.com/gh_mirrors/gl/glances点击查看免费下载相关推荐rqlite监控数据导出InfluxDB与TimescaleDB集成rqlite监控数据导出InfluxDB与TimescaleDB集成 概述 rqlite作为分布式SQLite数据库解决方案其监控数据对于集群稳定性至关重要数据库分布式数据库关系型数据库Glances 集成 OpenTSDB将系统监控指标导出到时间序列数据库的完整指南Glances 集成 OpenTSDB将系统监控指标导出到时间序列数据库的完整指南 本篇技术指南围绕 Glances 的 opentsdb 导出模块展开讲解指标监控监控大盘CLI告警MCP 服务PostgreSQL时序数据库实践TimescaleDB与awesome-postgres集成终极指南PostgreSQL时序数据库实践TimescaleDB与awesome postgres集成终极指南 时序数据正成为现代应用的核心从物联网设备监控到金融交文档知识库数据库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考