尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Glances CSV 导出完整指南:将系统监控数据持续写入 CSV 文件

Glances CSV 导出完整指南:将系统监控数据持续写入 CSV 文件 指标监控监控大盘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 的 CSV 导出功能展开介绍如何将 CPU、内存、网络、文件系统等实时监控指标以 CSV 格式持续写入文件供 Excel、Pandas、Grafana 等下游工具做离线分析与可视化。读完本文你将掌握 CSV 导出命令的完整参数、CSV 文件的内部格式与追加/覆盖语义、如何通过--disable-plugin/--enable-plugin裁剪导出字段以及如何在配置文件中用正则过滤敏感字段并了解仓库内对应的自动化验证脚本确保你的导出链路可靠可用。一、CSV 导出是什么CSV逗号分隔值是 Glances 众多导出后端Gateway中的最简单一种它不需要数据库或消息队列只需一个本地文件即可。Glances 会把每一个采样周期内的插件统计数据扁平化为一行记录连同时间戳一起追加到 CSV 文件中非常适合记录一段时间内的监控历史之后再做离线分析的场景。在 Glances 的导出架构中所有导出器都继承自 glances/exports/export.py 中的GlancesExport基类CSV 导出器则是其中覆盖update()方法的特例因为需要额外管理文件头部。其完整实现位于 glances/exports/glances_csv/init.py。二、快速上手一分钟开始导出CSV 导出通过命令行一键开启最小命令如下$ glances --export csv --export-csv-file /tmp/glances.csv --quiet参数说明参数含义默认值--export csv启用 CSV 导出模块无默认不导出--export-csv-file path指定 CSV 输出文件路径./glances.csv--quiet/-q静默模式不在终端渲染 TUI 界面关闭其中--export-csv-file与--export-csv-overwrite两个参数在 glances/main.py 中注册parser.add_argument(--export, destexport, helpenable export module (comma-separated list)) parser.add_argument( --export-csv-file, default./glances.csv, destexport_csv_file, helpfile path for CSV exporter ) parser.add_argument( --export-csv-overwrite, actionstore_true, defaultFalse, destexport_csv_overwrite, ... )需要说明的是Glances 默认以约 3 秒为周期刷新采样可通过-t seconds调整刷新率因此 CSV 文件的增长节奏与采样周期一致--quiet让终端只保留日志输出避免 TUI 与导出相互干扰属于推荐的配套参数。三、CSV 文件的内部格式CSV 文件的结构非常简单只有两部分第一行表头 Header统计字段的描述即列名其余各行数据 Data每个采样周期的统计值。具体到 Glances 的实现见 glances/exports/glances_csv/init.py表头与数据行的构建规则为首列固定为timestamp值为time.strftime(%Y-%m-%d %H:%M:%S)格式的本地时间字符串该设计对应 issue#708 的需求其余列按插件命名空间展开每个字段的列名格式为插件名.字段名例如cpu.user、mem.used、network.interface_name等嵌套字典会被递归展开build_export()会递归遍历插件的 dict 结构把嵌套键拼接成扁平列名见 glances/exports/export.py同时布尔值会被序列化为 JSON 字符串列表值以空格连接。由此一个典型的 CSV 文件大致长这样示意timestamp,cpu.user,cpu.system,cpu.idle,mem.total,mem.used,load.min1,load.min5 2026-09-19 02:55:11,3.2,1.1,95.7,16777216000,8388608000,0.12,0.15 2026-09-19 02:55:14,2.9,1.0,96.1,16777216000,8390000000,0.11,0.14注意CSV 导出会排除内部插件alert、help、plugin、psutilversion、quicklook、version等这些插件不会出现在导出数据中相关逻辑定义在GlancesExport.non_exportable_plugins见 glances/exports/export.py。四、追加写入与覆盖写入理解文件生命周期Glances 对 CSV 文件采用默认追加策略这是为了支持长时间连续监控而不丢失历史数据文件不存在自动以写模式w创建文件并在首个采样周期写入表头文件已存在以追加模式a打开前提是已有文件的表头与本次导出的表头完全一致表头不匹配追加被拒绝日志中输出Cannot append data to existing CSV file. Headers are different.错误数据行不会写入。这一逻辑在 glances/exports/glances_csv/init.py 的构造函数中实现文件存在时会先以只读方式读取旧表头self.old_header随后在首次update()时与本次生成的表头比对见同文件第 91-105 行。从源码结构看这种先比对表头再决定是否追加的设计是为了防止不同插件组合产出的异构数据被错误地拼接进同一个文件。如果希望每次启动 Glances 时丢弃旧文件、从零开始记录使用--export-csv-overwrite$ glances --export csv --export-csv-file /tmp/glances.csv --export-csv-overwrite --quiet该参数让构造函数无条件进入写模式w并清空旧表头缓存相当于删除重建。五、裁剪导出内容按需控制字段范围默认情况下 CSV 会导出所有启用插件的全部字段数据量可能很大。Glances 提供了两种裁剪方式且两者可以组合使用。5.1 禁用指定插件用--disable-plugin排除不需要的插件逗号分隔$ glances --export csv --export-csv-file /tmp/glances.csv --disable-plugin load,swap --quiet5.2 只保留指定插件用--disable-plugin all配合--enable-plugin实现白名单模式只导出关心的插件$ glances --export csv --export-csv-file /tmp/glances.csv --disable-plugin all --enable-plugin cpu,mem,load --quiet注意--disable-plugin all必须与--enable-plugin同时使用否则 Glances 会以 critical 级别日志报错并退出退出码 2。这一校验位于 glances/main.pyif args and args.disable_plugin and all in args.disable_plugin.split(,): if not args.enable_plugin: logger.critical(all key in --disable-plugin needs to be used with --enable-plugin) sys.exit(2)从使用角度看白名单模式还有一个附带好处因为表头由实际导出插件决定固定插件组合意味着表头稳定后续多次追加到同一 CSV 文件时更容易满足表头一致性要求。六、配置文件层面的字段过滤exclude_fields除了命令行裁剪插件Glances 还提供全局导出配置段[export]其中的exclude_fields选项用正则表达式列表精确过滤字段。该选项在配置文件 conf/glances.conf 中默认注释[export] # Common section for all exporters # Do not export following fields (comma separated list of regex) #exclude_fields.*_critical,.*_careful,.*_warning,.*\.key$例如取消注释后任何插件字段只要完整匹配.*_critical、.*_careful、.*_warning或.*\.key$之一都会被排除在导出之外[export] exclude_fields.*_critical,.*_careful,.*_warning,.*\.key$实现上基类在load_common_conf()中读取该选项见 glances/exports/export.py并在build_export()遍历字段时通过is_excluded()逐项做**完整正则匹配re.fullmatch忽略大小写**过滤见同文件第 238-240 行与第 331 行。该选项对所有导出器通用CSV 导出同样生效常用于剔除阈值装饰字段*_critical等或进程 key 字段从而在源头压缩数据体积。七、源码级原理一次 CSV 写入的完整流程结合 glances/exports/glances_csv/init.py 的Export.update()方法CSV 导出的数据流如下通过stats.getAllExportsAsDict(plugin_list...)取回所有可导出插件的统计 dict首行构建[timestamp]表头随后遍历每个插件用基类build_export()将插件 dict 扁平化为(列名, 值)列表为每个字段添加插件名.前缀如cpu.user保证不同插件间列名不冲突若是新文件则写入表头若为已有文件则比对旧表头一致才继续写入数据行并立即flush()确保数据落盘避免进程异常退出时丢失缓冲。仓库内的自动化验证脚本 tests/test_export_csv.sh 完整复现了这一流程并做校验#!/bin/bash # Exit on error set -e # Run glances with export to CSV file, stopping after 10 writes echo Glances starts to export system stats to CSV file /tmp/glances.csv (duration: ~ 20 seconds) rm -f /tmp/glances.csv .venv/bin/python -m glances --export csv --export-csv-file /tmp/glances.csv --stop-after 10 --quiet echo Checking CSV file... .venv/bin/python ./tests-data/tools/csvcheck.py -i /tmp/glances.csv -l 9该脚本用--stop-after 10让 Glances 在写入 10 次采样后自动退出适合脚本化、批处理式采集随后用 tests-data/tools/csvcheck.py 检查除表头外应恰好有 9 行数据10 次采样中首次只写表头、每行列数一致、可选校验列数是否与表头一致。它同时展示了 CSV 导出的典型批处理用法——配合--stop-after与--quiet即可在 cron 或 CI 中定时抓取一段监控快照。八、实用场景小结长期趋势记录直接运行--export csv常驻导出按天滚动文件名避免单文件过大定时快照采集--stop-after N控制采样次数后自动退出适合 cron 定时任务精简字段--disable-plugin/--disable-plugin all --enable-plugin ...控制插件粒度exclude_fields控制字段粒度历史数据一致性多次追加到同一文件前确认插件组合未变化避免表头不匹配导致追加失败错误会记录在 Glances 日志中离线分析导出的 CSV 可直接用 Pandas 读取timestamp列可作为索引做时间序列分析。如需了解 CSV 之外的导出目标InfluxDB、Prometheus、Kafka、Graphite 等及其配置方式可继续阅读 docs/gw/index.rst 中的各导出器章节。赞分享指标监控监控大盘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点击查看免费下载相关推荐让老Mac重新运行最新macOSOpenCore Legacy Patcher 从备份到满血复活的 7 步实战手册让老Mac重新运行最新macOSOpenCore Legacy Patcher 从备份到满血复活的 7 步实战手册 你点开了那台 2012 年 MacBook操作系统固件驱动开发domain-admin监控导出CSV/Excel数据导出domain admin监控导出CSV/Excel数据导出 还在为域名和SSL证书监控数据无法批量导出而烦恼一文掌握domain admin数据导出全攻略Handsontable数据导入导出Excel、CSV文件处理完全指南Handsontable数据导入导出Excel、CSV文件处理完全指南 Handsontable是一款功能强大的JavaScript电子表格组件提供了完善的前端UI组件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表