在日常工作中,数据往往分散存储于多台服务器,特别是需要从 Linux 服务器上结构各异的日志文件或 CSV 数据表中快速提取关键字段——例如请求时间、状态码与响应时长——并将它们整合为一张规范的 Excel 汇总表。如果手动完成这项工作,不仅耗时费力,还容易出错。而借助 Codex 的图表解析功能,可以轻松实现整套流程的自动化,操作也并不复杂。
首先需要明确几个核心前提:数据源必须保持规整,Codex 服务必须处于就绪状态,字段名称必须严格一致。只要这些条件满足,后续工作就只是按顺序执行命令而已。
确认 Codex 服务已部署并能够正常访问
登录 Linux 服务器后,第一步是检查 Codex 是否正常运行。执行 systemctl status codex-server 命令,如果系统返回 active (running),说明服务已在线;若显示 inactive 或报错信息,则需要手动启动:sudo systemctl start codex-server。
服务启动后,还需确认 API 是否已准备好接受任务。使用 curl -s http://localhost:8080/health | jq '.status' 快速验证,看到返回结果为 "ok" 方可继续。如果返回为空或直接报错,很可能是端口被占用或配置尚未生效,此时切勿急于执行后续步骤。
准备待解析的数据源
接下来,将所有需要处理的 CSV 或 TSV 文件统一放入 /data/input/ 目录中。这里有一个容易忽略的细节:文件编码必须为 UTF-8,并且首行必须是明确的字段名称,例如 timestamp,status_code,resp_time 这类格式。编码不匹配会导致中文列名变成乱码,进而造成字段匹配失败,所有工作将白费。务必提前排除这一隐患。
如果手头的原始日志是纯文本格式(如 Nginx 的 access.log),则需先使用 awk 或 sed 进行预处理,将其转换为 CSV 格式:
awk '{print $1 "," $9 "," $10}' /var/log/nginx/access.log > /data/input/nginx_parsed.csv
这一步是必须的,无法跳过。Codex 本身无法直接解析非结构化的日志,它只识别带有明确分隔符和表头的表格文件。预处理工作做得扎实,后续流程才会顺畅。
编写 Codex 解析指令文件
在 /data/config/ 目录下创建一个配置文件,命名为 extract.yaml,内容示例如下:
input_dir: /data/input
output_file: /data/output/summary.xlsx
fields:
- timestamp
- status_code
- resp_time
aggregations:
- group_by: [status_code]
metrics: [count, a vg(resp_time)]
请特别注意:fields 列表中的字段名必须与 CSV 文件第一行的标题完全一致——大小写及空格都不能有任何差异。多一个空格,字段提取结果就会为空,这个陷阱非常隐蔽,需要格外留意。
aggregations 部分为可选配置。如果你只需要将原始数据简单拼接,不需要任何聚合统计,可以直接删除整个 aggregations 块,干净利落。
执行解析并生成 Excel 文件
配置编写完毕,数据也已准备就绪,接下来就是收尾的执行步骤。
首先,进入 Codex 的安装目录(通常位于 /opt/codex);然后,执行命令 ./codex parse --config /data/config/extract.yaml;接着,等待终端输出 ✅ Exported to /data/output/summary.xlsx,出现此提示即表示成功。
生成的 Excel 文件默认包含两个工作表:RawData(原始合并数据)和 Aggregation(聚合统计结果)。如果配置中未定义 aggregations,则只会生成 RawData 这一个工作表。
最后,前往 /data/output/ 目录确认文件是否存在,使用 file /data/output/summary.xlsx 验证其确为 Microsoft Excel 格式,而非 HTML 或 ZIP 伪装的假文件。
