首页/系统与基础设施/自动化运维速查/批量采集与结果上报模式
批量执行与作业50 条

批量采集与结果上报模式

批量采集与上报是两件事:采集在多台目标上只读取数据(指标、资产、配置、日志摘要),上报把结果汇聚到集中端。落地要点是选推送还是拉取、给每条结果一个幂等键、保持时钟一致、失败时本地留存可补传,避免重复统计与静默丢数据。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​​​‌‌​‌‌​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌‌​​​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌‌​‌​​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌​‌‌‌​​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

采集与上报的分工

采集负责在目标侧取数:本机负载、磁盘水位、已装包清单、关键配置文件、服务状态;上报负责把取到的内容送到中心端汇总。传输方向有两种基本形态:推送(目标侧主动发出,适合大规模、跨防火墙、结果需要及时到达)与拉取(中心按节奏逐个取,节拍由中心控制,适合规模不大或临时排查)。混合做法是目标侧先落本地快照,再批量压缩推送,兼顾失败可补传与中心压力可控。

基本信息

采集对象指标、资产清单、配置内容与指纹、服务状态、日志摘要
传输通道推送(代理主动发出)、拉取(中心按节拍取)、混合(本地快照加批量推送)
幂等键主机名加 UTC 时间戳,或用内容指纹,避免重复计数
关键约束时钟需同步;采集动作应只读;上报失败要能补传

典型使用场景

  • 资产盘点:定期回收已装软件、监听端口、挂载点清单
  • 合规抽查:取回关键配置项取值作为证据材料
  • 容量评估:采集水位与增长趋势,支撑扩容决策
  • 故障取样:快速从整批主机取回同口径的现场数据
  • 配置备份:把设备与主机的运行配置定期收回归档
  • 灰度验证:收集试点批次的运行结果,与全量对比

采集与上报骨架

采集与上报骨架
#!/bin/bash
# 采集:只读取本机信息,落本地快照,不修改任何系统状态
stamp=$(date -u +%Y%m%dT%H%M%SZ)
host=$(hostname -f)
out=/var/lib/collect/$host-$stamp.json     # 幂等键:主机名 + UTC 时间戳
mkdir -p /var/lib/collect
{
  printf '{"host":"%s","ts":"%s",' "$host" "$stamp"
  printf '"load":"%s",' "$(cut -d' ' -f1 /proc/loadavg)"
  printf '"disk":"%s"}' "$(df -P / | awk 'NR==2{print $5}')"
} > "$out"

# 上报:压缩后推送,失败留在本地等下一轮补传
gzip -f "$out" || exit 0
for i in 1 2 3; do
  curl -fsS --max-time 10 -T "$out.gz" "https://center.example.com/collect/" && rm -f "$out.gz" && break
  sleep $((i*5))                           # 退避重试,避免整批同时打爆中心
done

# 中心侧按幂等键去重:同一主机同一时间戳只入账一次

推送与拉取对照

模式方向优点代价适用规模
推送目标到中心及时,能穿防火墙需目标侧有凭据与网络出口数百到数万台
拉取中心到目标节拍可控,无需目标出网中心需凭据,规模大时耗时长数十到数百台
混合本地快照加推送失败可补传,中心压力可控需要目标侧暂存空间弹性规模
人工抽采人工触发零常驻成本无法持续,口径易不一致临时排查
时间统一是采集能用的前提:所有主机与中心保持一致的时间源,时间戳建议用 UTC 记录,展示时再换本地时区。时钟错乱会让同一批数据看起来前后颠倒,趋势分析直接失效。
采集内容常含敏感信息:进程环境变量、连接串、配置文件里的口令。上报前按字段过滤或掩码,采集通道也要做鉴权与加密,避免把凭据复制到中心端。

易错点

  • 结果没有幂等键:重试或补传时同一条数据重复入账,统计值虚高
  • 依赖本地时钟且未同步:时间戳错乱,趋势与关联分析无法使用
  • 采集脚本顺手做了写操作(如清理临时文件、重启服务):巡检动作变成变更,风险失控
  • 全部目标同一时刻上报:中心连接数被打满,采集大面积失败
  • 上报失败静默丢弃、不留本地副本:数据缺口事后无法补,报表长期偏低

数据来源与参考

  • Prometheus 官方文档:拉取模型与 Pushgateway 推送模式
  • Ansible 官方文档:事实采集与 gather_facts 控制
  • RFC 3339:日期与时间表示(统一时间戳格式)

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/batch-collection-reporting-patterns.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​​​‌‌​‌‌​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌‌​​​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌‌​‌​​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌​‌‌‌​​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​