批量拉取采集是什么
批量拉取是把多台主机上的文件或数据取回中心,用于日志集中分析、巡检结果汇总、备份产物归档。它与分发方向相反,难点也不同:命名必须带主机名与时间戳,否则同名文件会互相覆盖;采集要可重入,重复拉取不应制造重复数据;大文件需要断点续传;中心侧的磁盘容量与写入速率要能承接所有主机同时上传的峰值。采集方式分中心主动拉取与目标端主动上报两类,取舍取决于网络可达性与实时性要求。
基本信息
| 常用手段 | rsync 拉取、Ansible fetch、scp、HTTP 上传接口、日志采集代理 |
|---|---|
| 命名规范 | 主机名 + 日期时间 + 序号,保证全局唯一 |
| 幂等处理 | 落盘前校验或按唯一键去重,避免重复入库 |
| 关键风险 | 同名覆盖、半截文件、中心磁盘打满 |
典型使用场景
- 收集所有主机的应用日志做集中检索与分析
- 采集巡检脚本产出的结果文件汇总成报表
- 拉取备份产物统一归档到中心存储
- 从边缘节点回收运行数据用于离线分析
- 采集后按策略清理源端文件以释放空间
拉取与命名示例
拉取与命名示例
ansible all -m fetch -a 'src=/var/log/app/error.log dest=./collected/ flat=no' # 保留主机目录
rsync -avz --partial host:/var/log/app/ ./collected/$(date +%F)/ # 按日期分目录
scp host:/tmp/report.json ./collected/report-$(date +%Y%m%d-%H%M%S).json # 文件名带时间戳
find ./collected -type f -size 0 -print # 找出空文件
find ./collected -name '*.json' -size +1M -print # 找出异常大文件采集手段对比
| 手段 | 发起方 | 适用场景 |
|---|---|---|
| rsync 拉取 | 中心 | 目录与大批文件,支持增量与续传 |
| Ansible fetch | 中心 | 与批量执行共用同一套清单 |
| scp 单次 | 中心 | 少量文件、临时取回 |
| HTTP 上传接口 | 目标端 | 目标侧网络受限或需要近实时上报 |
| 采集代理 | 目标端 | 持续采集、结构化日志、按行发送 |
目标端主动上报不受 NAT 与防火墙入向限制,接近实时,但需要在目标端部署代理;中心主动拉取无需装代理、便于统一控制采集时间与配额,但在目标端处于内网时可能不可达。
边拉取边删除源文件在网络中断或校验失败时会造成数据丢失,只有确认中心侧已完整落盘并通过校验后,才应删除源端文件。