"日志要存多久?"这个问题我一年要被问几十次。问的人身份各不相同:有接到自查通知才开始翻文档的中小企业 IT 负责人,有在做等保整改配套、被测评机构追着要日志样本的团队,也有给金融、医疗类客户做外包服务、合同里白纸黑字写着审计要求的交付负责人。他们的共同点是——手上没有一份能拿得出手的容量账,只能凭感觉买盘,买小了三个月告急,买大了预算被砍。
这篇不打算讲空道理。我想做的是把"日志留存"这件事拆成能落地的三步:先搞清楚合规到底要求你留什么、留多久;再用一个能直接套的公式把容量算出来;硬盘、内存、带宽这些硬件维度则按日志场景重新排一遍优先级。文中所有演算都是示例,参数你可以按自己抓的样本替换。
先给结论,赶时间的话看这五条就够:
1. "网络日志留存不少于六个月"是国内广为人知的合规基线,通常理解为至少六个月,但具体留存期限与范围一律以主管部门要求与业务合同约定为准,别把行业传闻当条文用。
2. 全量留存是最笨也最贵的做法。正确姿势是"监管必须的留全量,其余按价值分层",分层之后容量通常能砍掉一半以上。
3. 容量不是拍脑袋定的:日增量 = 事件条数 × 平均单条字节 × 压缩比;总容量 = 日增量 × 留存天数 × (1 + 索引开销) × 冗余系数。这两个公式套一遍,误差能压到可接受区间。
4. 日志盘的真实风险是写入放大与寿命,不是容量。NVMe 做热层索引,大容量盘做温层,别用消费级盘扛 7×24 写。
5. 存了但读不出来等于没存。append-only、NTP 时间同步、权限最小化、恢复演练,这四件事比多买两块盘重要得多。
先说清楚一件事:这篇文章不打算替任何主管部门下结论,也不会给你编一个条款编号。中国网络安全法体系下,"网络日志留存不少于六个月"是业内广为人知的基线要求,通常理解为至少六个月。这个表述在各类合规培训、测评访谈里被反复提及,大家心里都有数。
但我要提醒的是,具体留存期限、留存范围、留存格式,一律以主管部门的口径与业务合同的约定为准。原因很实在:不同行业的监管口径不一样,金融、医疗、教育、车联网、关键信息基础设施,各自的主管部门要求可能有差异,部分场景要求远超六个月;同时甲方合同里往往写得比监管更细——比如要求留存十二个月、要求日志不可篡改、要求能按用户 ID 反查历史操作。合同义务和法定义务是两回事,都要满足。
见过太多团队把六个月当成唯一标准,盘按 180 天配,结果甲方审计一句话"我们要看去年的操作记录",整个方案推倒重来。日志这种东西有个特点:配的时候嫌多,用的时候嫌少。扩容不是加块盘那么简单——历史数据迁移、索引重建、检索窗口变更,每一步都要停机窗口。
我的建议是:以监管基线为下限,以合同与业务价值为上限,取两者更高的那个,再留 30% 余量。多出来的容量成本,通常远低于临时扩容带来的折腾成本和事故风险。
监管或甲方来查,通常不会只问"你们存了没",会顺着三条线往下追:一是完整性——这段时间里的日志是不是连续,有没有断档;二是可检索性——能不能在可接受的时间内把某个时间窗、某个 IP、某个账号的记录调出来;三是防篡改——能不能证明这份日志没有被事后修改过。这三条决定了你的存储架构怎么搭,比单纯堆容量重要得多。
顺带说一句,涉及等保整改配套的团队,日志这块通常需要配合测评机构提供样本和留存证明。我们这边能做的是提供合规架构建议与协助对接,具体结论以测评机构和主管部门认定为准,谁也不敢替你打包票说"已满足某级要求"。
"日志"这两个字听着是一个东西,实际是六类完全不同的数据。它们的留存价值、单条体积、增长速度差别巨大,混在一起算容量必然算错。我把它们拆成六类讲。
防火墙、交换机、路由器、负载均衡吐出来的 syslog。单条很短,通常一两百字节,但量可以极大——一台跑满的防火墙一天几百万条很常见。这类日志是监管重点关注对象,因为它是"谁从哪个地址访问了什么"的直接证据,基本属于必须全量留存的范围。
Linux 的 messages、secure、audit,Windows 的安全事件日志。单条几百字节到 1KB 不等。登录失败、sudo 提权、账户变更这类事件价值极高,是溯源的主力;系统里大量的 cron、服务启停这类噪音可以降采样或者缩短留存期。
Nginx、Apache 的 access log。这是最容易被低估的一类——一个日活十万的中型站点,加上静态资源、接口调用、爬虫流量,一天几千万条毫不夸张。单条 300–800 字节。全量留 180 天非常贵,但访问日志恰恰是监管与合同里最常被点名要求留存的一类,属于"必须留全量"的典型。
业务程序自己打的日志,格式千奇百怪,单条从几百字节到几十 KB 都有(想象一下把整个请求体打进日志的情况)。这类日志体积弹性最大,也最该治理。ERROR 级全留,INFO 级按价值留,DEBUG 级原则上不进留存池,或者只留最近几天。
谁在什么时候执行了什么语句、影响了多少行。金融、医疗类外包服务商基本绕不开这一类。它的特点是每条都重要,但查询频率极低——平时没人看,出事时逐条翻。这种"低频高价值"的特征决定了它适合放温层甚至冷层,不需要给 NVMe。
运维人员通过堡垒机做了什么,命令级记录,部分场景还有操作录屏。体积不大但价值极高,属于出事时最先被调取的东西。留存期建议直接对齐合同里最长的那一条,别按六个月配。
敢下一个判断:全量留存是最笨也最贵的做法。设计原则应该是"监管必须的留全量、其余按价值分层"。网络设备日志、Web 访问日志这两类基本跑不掉;应用 DEBUG 日志、系统噪音日志完全可以缩短到 7–30 天甚至不入库。按经验,做完分层治理,留存池的体积通常能比无脑全量缩小一半以上,省下来的钱拿去买更好的盘更划算。
这块是本篇的核心。我不打算给你一张"某规模对应某容量"的对照表——那种表看着省事,用起来全是坑,因为日志体积和你的业务形态强相关,跨行业套必错。给公式,你自己填参数。
日增量 = 事件条数 × 平均单条字节 × 压缩比
三个参数怎么拿:
事件条数——别拍脑袋。抽一个业务高峰日(不是周末,不是节假日),从日志平台或者直接 wc -l 数原始文件,得到全天条数。如果业务有明显波峰波谷,取连续七天的平均值再乘 1.2 的峰值系数。
平均单条字节——同样要实测。取一个完整日志文件,用文件总字节数除以行数。注意不同类别日志差异很大,Web 访问日志可能 400 字节,应用日志可能 2KB,要分类各自算。
压缩比——文本日志压缩收益很高,通用压缩算法(zstd、gzip 这一类)压到原始体积的 15%–30% 是常见区间,具体取决于字段重复度。字段越规整、冗余越多,压得越狠。如果你的日志里塞了大量 JSON 且 key 重复,压缩比会更漂亮;如果是已经压过的二进制格式,那就别指望了。这个数必须拿自己的样本压一遍测出来,不要抄别人的。
总容量 = 日增量 × 留存天数 × (1 + 索引开销) × 冗余系数
留存天数:按监管口径与合同要求取,基线按 180 天理解,有更长要求的按更长的算。
索引开销:为了让日志"可检索",检索系统通常会额外生成倒排索引、列存副本、元数据。这部分开销经验值在 20%–50%,看你的检索方案。索引用得越激进(比如给每个字段都建索引),开销越大。我一般按 30% 起步估算。
冗余系数:磁盘不能写满,写满之后检索系统会崩、写入会失败,经验值是水位线控制在 70%–80%。再算上 RAID 或者多副本的开销。物理机做 RAID1 或 RAID6、分布式做多副本,都要乘进去。我一般给 1.3–2.0,单机 RAID1 取 1.3 附近,三副本分布式取 2.0 附近。
下面三组演算全部基于明确列出的假设参数,是为了演示公式怎么用。这些是按上述假设做的示例演算,实际容量请以你自己的日志样本实测为准,不要直接拿数字去下单。
假设:日均事件 200 万条,平均单条 500 字节,压缩比 0.25,留存 180 天,索引开销 30%,冗余系数 1.3。
日增量 = 2,000,000 × 500 × 0.25 = 250,000,000 字节,约 238 MiB,按 0.25 GB/日 算。
总容量 = 0.25 × 180 × 1.3 × 1.3 = 76 GB。
看起来不到 100GB?对,小型站点就是这么点。但实际选型别只配 100GB——系统盘、检索服务本身、临时解压空间都要占地方,还有未来业务增长。结论:1TB 级别的单盘起配,留足余量,比卡着算出来的数字买要稳妥。
假设:日均事件 2000 万条,平均单条 700 字节,压缩比 0.2,留存 180 天,索引开销 30%,冗余系数 1.5(双副本)。
日增量 = 20,000,000 × 700 × 0.2 = 2.8 GB/日。
总容量 = 2.8 × 180 × 1.3 × 1.5 = 982 GB,约 1 TB。
这个量级开始要认真做分层了。近 30 天放热层可检索,30–180 天放温层。热层按 30 天算:2.8 × 30 × 1.3 × 1.5 ≈ 164 GB,给一块 480GB–960GB 的 NVMe 绰绰有余;温层剩下 820 GB 左右,两块大容量盘做 RAID1 或者交给分布式存储都行。分层之后,NVMe 的采购量直接降到原来的六分之一。
假设:日均事件 1 亿条,平均单条 800 字节,压缩比 0.15,留存 180 天,索引开销 40%(字段多、索引建得细),冗余系数 2.0(三副本)。
日增量 = 100,000,000 × 800 × 0.15 = 12 GB/日。
总容量 = 12 × 180 × 1.4 × 2.0 = 6048 GB,约 6 TB。
到这个量级,单机已经不合适了,得上分布式或者专门的日志集群。热层按 7 天算:12 × 7 × 1.4 × 2.0 ≈ 235 GB;温层按 173 天算:约 5.8 TB。热层用 NVMe,温层用大容量近线盘做高密度存储,冷层(超过 180 天的归档)丢对象存储。再一次强调:这是示例演算,参数换成你自己的实测值才是真数。
分层不是新概念,但日志场景的分层有个特殊性:合规要求的是"能拿出来",不是"拿出来要快"。所以分层的边界应该由"查询频率"和"合规要求的响应速度"共同决定,而不是单纯按时间切。
热层承载的是日常排障、安全告警、实时监控。这层的硬指标是检索延迟——告警触发后运维要能在几十秒到几分钟内捞出关联日志,慢了就失去意义。介质选 NVMe 或者企业级 SATA SSD,容量不用大,够放 7–30 天就行。
温层承载的是合规留存的主体。这层的特点是写入一次、几乎不读,偶尔因为审计或者追溯被查一次。用大容量 SATA 盘或者高密盘位机型最划算,重点是单位容量的成本,不是性能。这层容量通常是三层里最大的,也是成本大头。
超过监管与合同要求的期限之后,日志可以进冷层归档,对象存储或者离线介质都行。但这里有个必须讲清的点:合规意义上的留存,要求的是"需要时能读出来"。离线磁带如果读写设备已经停产、驱动装不上、索引丢了,那这份数据在监管眼里等于不存在。归档之前先问自己三个问题:介质还能读吗?索引还在吗?多久能拿到数据?三个都答得上来,才算合规归档。
文本日志的压缩收益非常高,这一点前面公式里已经体现了。通用压缩算法像 gzip、zstd 这一类,原理都是找重复模式做编码替换,日志这种字段高度重复的文本正好是它们的菜。zstd 这类新一点的算法在解压速度和压缩比之间给了更多档位可调,压缩时慢一点能压得更小,反之亦然。
代价要讲清楚:压缩省的是存储空间和温层成本,花的是 CPU。采集端做压缩占用业务机 CPU,检索端做解压占用日志服务器 CPU。如果你的日志服务器 CPU 本来就紧,压缩档位别开太高。
列存是另一个思路。把日志按字段切分成列再分别压缩,同一列的数据类型一致、重复度极高,压缩比能比整行压缩再高一截,而且检索时只读取需要的列,扫描量大幅下降。代价是写入路径变长、实时性下降,且列存通常不适合高频的单条追加写入,需要攒批。对于温层这种"写完基本不改、查询只扫少数字段"的场景,列存非常合适;热层要实时可查,还是行存加索引更直接。
日志接入的完整链路是:接收 → 解析(正则、JSON 解包、字段抽取)→ 归一化 → 压缩 → 落盘。这里面解析和压缩是 CPU 大头。尤其是解析,一条日志如果套了七八条正则做字段抽取,CPU 消耗可能比压缩还高。
选型要点:按峰值留余量,不是按均值。日志有明显的潮汐特征——业务高峰时日志量可能是平峰的三到五倍,故障时还会出现突发式暴涨(比如某个服务进入错误重试循环,一秒钟能吐平时一分钟的量)。CPU 按日均配,峰值时就会堆积,堆积之后采集端缓冲区写满,结果就是丢日志。
经验做法:先按日均算出需要的核数,再乘 1.5–2 的峰值系数。多核比高主频更实用,因为日志处理天然可以并行分片。
内存主要被三块吃掉:检索服务的索引常驻、查询时的中间结果、接入端的缓冲队列。
索引常驻是刚需。倒排索引如果放不下内存,就会频繁走磁盘,检索延迟从秒级掉到几十秒甚至分钟级——这时候运维在告警面前基本等于瞎子。现实里最常见的场景是:上线半年后日志量翻倍,内存没加,检索从"挺快"变成"转圈圈",大家就开始嫌弃这套系统,最后弃用。日志系统被弃用,比日志没存更危险。
接入缓冲同样吃内存。采集端网络抖动、下游写入变慢时,需要内存扛住这一波缓冲,否则就是丢数据。内存不足时检索变慢这件事,不是理论,是每天都在发生的现实。建议:索引按热层数据量的 10%–20% 估内存需求,再给缓冲留 4–8GB,宁可多给。
硬盘这块我愿意多写几句,因为踩坑的人最多。
热层要的是随机读写和检索响应,NVMe 的高队列深度、低延迟正好对路,且热层容量占比小,用贵介质不心疼。温层要的是单位容量成本和稳定写入,大容量企业级 SATA 盘更合适。把温层也铺满 NVMe 是典型的钱花错地方。
说白了,写入放大就是"你想写 1KB,闪存实际擦写了 4KB"。日志场景是持续不断的小块追加写,正好踩在写入放大的高发区。再加上日志服务器常年 7×24 不间断写,盘的写入量累积得非常快。消费级 SSD 标称的 TBW(总写入字节数)本来就不高,在这种场景下寿命会被迅速吃掉,出现掉盘、只读保护等问题。
怎么避:一是用企业级盘,看 DWPD(每日全盘写入次数)这个指标而不是只看容量,日志盘建议选 DWPD 高一点的型号;二是留足 OP(预留空间),别把盘写满,水位线控制在 70%–80%,写满不仅性能崩,写入放大也会恶化;三是监控 SMART 里的磨损指标,设告警,别等掉盘才发现;四是温层这种纯追加、极少随机写的场景,其实对盘更友好,反而不必过度投资。
把分散在各业务节点的日志集中到一台日志服务器,本质是一次持续的内部数据搬运。日均 12GB 听起来不多,摊到每秒也就 140KB 左右,似乎随便什么内网都扛得住——但峰值不是这么算的。
峰值时段日志产生速率可能是均值的数倍,如果采集端做批量推送(攒够一批再发),还会形成瞬时脉冲。业务高峰叠加上报脉冲,内网带宽可能被吃掉一大块,进而影响业务本身的通信。
跨机房传输要另算一笔账。如果业务节点在华南、日志服务器在华北,那么日志是走公网还是走内网互联链路,成本和稳定性完全不同。跨机房、跨地域的流量通常是要单独计费的,长期累积下来不是小数目。建议:日志集中优先走内网互联或专用链路,跨地域采集前先算清楚月度流量费用,别等账单来了才惊讶。
从采集端到日志服务器的这段链路,稳定性优先级高于带宽。原因很直接:慢一点最多是日志延迟几分钟可见,丢一段就是合规意义上的断档——检查时被问"某月某日的记录呢",你答不上来,那就是硬伤。
链路不稳的常见表现是丢包和抖动。丢包直接造成日志缺失;抖动会造成采集端超时重试,重试又加重拥塞,形成恶性循环。所以采集链路要做的三件事是:采集端本地缓存(断链时先落本地,恢复后补传)、传输层可靠投递(带确认和重试)、监控告警(链路异常要第一时间知道,而不是等检查时才发现)。
对等连接的价值在这里体现得很明显——节点之间走稳定的内网互联或对等连接,比绕公网可靠得多,延迟也更可控。如果你的业务和日志服务器分属不同节点,优先问服务商有没有内网互联方案,别默认走公网。
日志服务器放哪儿,是个取舍题。
同机房的好处是采集延迟低、内网带宽成本可控、链路稳定,坏处是风险不隔离——机房级故障(电力、网络、灾害)时,业务和日志一起没了。日志这东西的价值恰恰在出事之后,出事时它也一起没了,那前面全白干。
异地留存一份的意义就在这里:即使主站点整体不可用,日志还在另一个城市可读。代价是跨地域流量成本、数据同步延迟、以及多一套运维。我的立场是:只要业务有一丁点合规压力,就值得异地留一份。不需要异地全量实时,可以只同步"监管必须"的那几类日志,压缩后再传,成本可控。
还有一层考虑是数据属地。金融、医疗、政务类业务往往对数据存放地域有明确要求,日志属于业务数据的衍生,通常要跟着业务走。跨地域甚至跨境留存之前,务必确认合同与监管口径是否允许,别为了容灾把自己送进合规风险里。
日志要能当证据,得经得起四个追问:是不是原始的、时间对不对得上、谁能改、谁看过。
核心思路是写入后不可修改、不可删除,只能往后面追加。实现方式可以是在存储层做(对象存储的合规保留策略、文件系统的追加属性),也可以是在权限层做(采集账号只有写权限,没有改和删的权限)。这一条直接回应"有没有被事后修改"的质疑。
这条我要单独强调。日志的价值在于"关联"——把防火墙记录、系统登录、应用操作按时间轴串起来,还原事件经过。如果各设备时间不一致,串出来的故事就是错的,溯源直接失败。
现实里最常见的翻车:设备时间各自漂移几秒到几分钟,出事后拿着日志去对,发现防火墙记录的"攻击时间"比应用记录的"异常时间"晚了四十秒,于是没法确认两者是同一件事。更糟的是有些设备没配时区,日志里全是 UTC 时间,人工换算时出错。做法:全网统一 NTP 源,日志统一用带时区的时间格式,NTP 服务本身要有监控告警。
日志服务器存着全网最敏感的操作记录,它自己却常常是权限管理最松的一台——这是很讽刺的现实。原则很简单:采集账号只给写,查询账号只给读,删除权限原则上不授予任何人,确需清理走定期任务且留审计记录。
谁登录过日志服务器、谁查过哪些时间段、谁导出过数据,这些操作本身也要记日志,而且这份"日志的日志"要存在别的地方。否则日志服务器被攻陷后,攻击者删掉自己的痕迹,你什么都查不到。说白了,日志服务器是横向移动的绝佳跳板——它通常内网可达所有节点、凭证多、防护弱,攻击者拿下它等于拿到一张内网地图。
很多人以为"落盘了"就等于"合规了"。差得远。备份要解决的是介质故障、误操作、勒索加密这三类问题;恢复演练要解决的是"到底能不能读出来"这个疑问。
我建议的做法很朴素:每季度挑一个时间窗,随机抽一天的历史日志,走一遍完整的恢复和检索流程,记录耗时。演练要真的去读数据、真的去跑一次查询,而不是看一眼备份文件存在就打勾。演练结果要留档——这份记录本身就是合规材料,能证明你"具备可恢复能力"。
还有个点容易被忽略:备份的索引和元数据也要一起备。只备了数据文件、索引丢了,恢复出来的数据要全量重建索引才能查,重建耗时可能是小时级甚至天级,检查时根本来不及。
下面这张表按日志留存场景的几个关键维度做了横向对比。价格一列引用的是官网明示的档位价,以官网实时价为准;凡属推算的都标了"预估,以实际账单为准"。表格里的适应能力描述是我的选型意见,不是服务商官方口径。
| 方案定位 | 存储类型与容量 | 快照与备份 | 内网带宽与节点 | 工单响应 | 价格(月) |
|---|---|---|---|---|---|
| 入门型:小型站点单机留存,日增量 1GB 以内 | SATA SSD 单盘起步,1–2TB,冷热不分层 | 系统盘每日快照,日志数据需自行另备 | 单一节点,采集走内网互联 | 7×24 中文工单 | 大陆起步价:华西 ¥599 / 华东 ¥699 / 华南 ¥799 / 华北 ¥899(以官网实时价为准) |
| 主力型:中型业务热温分层,日增量 1–5GB | NVMe 热层 + 大容量盘温层,总容量 2–6TB | 每日 3 份免费快照、30 秒回滚;硬件故障 10 分钟自动迁移 | 华南/华东/华北多节点,BGP 多线 | 7×24 中文工单,平均 5 分钟响应 | 裸金属 E5-2620 ¥999(以官网实时价为准);加装大容量盘后的整机约 ¥1300–1800(预估,以实际账单为准) |
| 重载型:较大业务日志集群,日增量 10GB 以上 | 多盘位高密机型,NVMe 热层 + 近线大容量温层,10TB 起 | 系统盘快照 + 自建多副本,归档转对象存储 | 多节点内网互联,跨机房同步走专用链路 | 7×24 中文工单,可协助规划存储架构 | 裸金属 E5-2698v4×2 ¥3999 起(以官网实时价为准);满配高密存储后约 ¥5000–7000(预估,以实际账单为准) |
| 异地留存型:主站点之外的第二份日志副本 | 单节点大容量盘,只存"监管必须"的压缩副本 | 依赖异步同步,建议本地再加一层快照 | 中国香港等节点,回国方向 CN2 GIA | 7×24 中文工单 | 中国香港 E3 ¥1500 / ¥1599(以官网实时价为准);欧洲 ¥1299 起、美洲 ¥1699(以官网实时价为准) |
| 轻量型:日志量小但要求独立隔离的合规场景 | 云主机挂载独立数据盘,容量弹性扩容 | 快照策略灵活,可按小时级配置 | 与业务同节点内网互联,延迟低 | 7×24 中文工单,弹性扩容自助 | 一万云 ¥25 起(以官网实时价为准);叠加数据盘后约 ¥200–400(预估,以实际账单为准) |
我给做中型业务日志留存的朋友首推这台,理由很实在。日志处理是典型的多核并行活儿——接收、解析、压缩、索引可以分片跑,E5-2698v4 这种高核数型号正好对路,双路配置下 CPU 余量充足,峰值暴涨时不至于堆积丢日志。内存可以按索引规模加到 128GB 甚至更高,热层索引全常驻,检索不至于掉到走磁盘。
盘位是关键。日志留存最吃的是盘位数量和单盘容量,这台机器的扩展性足够你做"NVMe 热层 + 大容量温层"的分层:前面两块 NVMe 扛热层和索引,后面塞满大容量近线盘扛温层。算过账的都知道,这套组合比全 NVMe 便宜一大截,而检索体验几乎没差别——因为 95% 的查询都落在热层。
另外两个点也值这个价:硬件故障 10 分钟自动迁移,意味着硬盘出问题时不用等你半夜爬起来处理;7×24 中文工单平均 5 分钟响应,日志系统出问题的时候,能找到人说人话比什么都强。一万网络深耕 IDC 19 年(成立于 2007 年),深圳南山总部,自营机柜最快 1 分钟上架,这些不是广告词,是你在扩容或者换盘时真能感受到的响应速度。
如果你的日增量就在 1GB 以内(对应前面示例一那种规模),说实话没必要一上来就上双路裸金属。华南节点起步价 ¥799(以官网实时价为准),配一块独立数据盘做日志卷,把日志和业务数据从物理上分开,这套就能跑得很稳。
为什么强调"独立数据盘"?这是避坑指南里第一条的现实版——日志和数据库挤一块盘,IO 互相拖垮是最常见的翻车姿势。多一块数据盘的成本,远低于一次 IO 打满导致业务卡顿的损失。
华南节点对珠三角的团队还有个隐性好处:内网互联延迟低,日志采集链路稳,丢包概率小。等你日志量涨上来了,再往 E5-2698v4×2 那台迁移,架构是一样的,不用推翻重来。
如果合同里有异地留存要求,或者业务本身对容灾有诉求,可以在中国香港节点(E3 ¥1500 / ¥1599,以官网实时价为准)放一份压缩后的副本,只同步"监管必须"的那几类日志。CN2 GIA 回国方向的低延迟对同步链路有帮助。但要提醒一句:跨境存放涉及数据属地合规,动手之前务必确认合同与主管部门口径是否允许,别为了容灾反而踩线。
为什么坑:"买块 8TB 的盘总够了吧"——这是最典型的拍脑袋。日志量随业务增长是指数级的,拍脑袋买的盘要么三个月告急,要么浪费三年。更麻烦的是满了之后的补救:要么删历史数据(直接踩合规红线),要么紧急扩容(停机、迁移、重建索引)。
怎么避:用本文的公式算一遍,参数必须实测。算完之后盯水位线,设 70% 告警,留足扩容窗口。别把盘写满当目标,写满的代价是检索服务直接崩。
为什么坑:"机器还有空间,日志先放这儿"——然后某天数据库做一次大查询,日志写入排队;或者日志刷盘把 IOPS 吃光,数据库响应变慢。最坏的情况是日志把盘写满,数据库直接拒绝写入,业务停摆。日志是持续不断的写入流,它和数据库这种随机读写型负载天生冲突。
怎么避:物理分离,日志独占一块盘或者一台机器。预算再紧,也至少做到卷级别隔离。这一条没有妥协空间。
为什么坑:溯源全靠时间轴串证据。设备时间各自漂移几十秒甚至几分钟,串出来的因果关系就是错的。还有时区问题——一半设备 UTC、一半设备本地时间,人工换算时出错,白忙一场。这种问题平时完全看不出来,只在出事那一刻爆发。
怎么避:全网统一 NTP 源并监控偏移告警,日志统一用带时区的时间格式存储,采集端记录接收时间和原始时间两个字段便于对齐。
为什么坑:备份任务显示"成功",不代表数据能读出来。索引丢了、压缩格式换了版本、介质老化、密钥丢失——任何一种都能让你在检查现场打不开文件。而"能打开"和"能在要求时间内检索出来"又是两回事。
怎么避:每季度做一次完整恢复演练,随机抽一天历史数据,真跑一次查询,记录耗时并留档。演练记录本身就是合规材料。
为什么坑:日志服务器内网可达所有节点、常年不重启、凭证多、防护弱,是攻击者眼里的香饽饽。拿下它不仅能看到全网的操作记录(相当于拿到内网地图),还能篡改或删除自己的入侵痕迹。很多团队把所有精力花在业务机加固上,唯独漏了这台。
怎么避:权限最小化——采集账号只写、查询账号只读、删除权限不授予;开启审计记录谁查过什么,且这份审计日志要存在别处;日志服务器纳入常规漏洞修复和基线检查范围。
为什么坑:盘按 180 天配,合同里写的是十二个月或者更长,甲方一审计就穿帮。临时扩容的时间成本、迁移风险、以及"这段时间的日志我们没存"这句回答本身的严重程度,都远超多买几块盘的钱。日志这东西,配的时候嫌多,用的时候嫌少。
怎么避:立项时就把监管基线和合同条款并排列出来,取更长的那个,再留 30% 余量。合同评审阶段让 IT 参与,别等交付时才发现留存要求。
看类别。网络设备日志、Web 访问日志、堡垒机操作日志这几类通常属于监管与合同重点关注对象,按全量留存理解更稳妥;应用 DEBUG 日志、系统里的常规启停噪音,价值低、体积大,分层缩短到 7–30 天是合理做法。具体留哪些、留多久,以主管部门口径与合同约定为准。我的立场一贯是"监管必须的留全量,其余按价值分层"——无脑全量是最贵的方案,而且贵得没道理。
大概率不够。Web 访问日志只能证明"某个 IP 在什么时候请求了某个 URL",证明不了"某个账号在服务器上执行了什么命令"。完整的溯源链条需要把网络层、系统层、应用层、数据库层串起来,缺任何一环,事件还原就会出现断点。做等保整改配套的团队尤其要注意,测评时通常要求提供多类别日志的留存证明。建议至少覆盖网络、系统安全、Web、堡垒机这四类。
通用无损压缩(zstd、gzip 这一类)解压后与原始字节完全一致,属于同一份数据的不同表示,通常不影响其作为证据的效力。真正要避免的是有损处理:字段截断、采样丢弃、格式转换时丢精度,这些才可能造成信息缺失。稳妥做法是保留原始文件一段时间,压缩副本用于长期留存;或者保留压缩前后的校验值,便于自证一致。涉及具体认定,以主管部门口径为准。
按查询频率分,不按时间一刀切。需要频繁检索的近 7–30 天放 NVMe,这部分容量占比小,用贵介质不心疼;30–180 天主体放温层,用大容量企业级 SATA 盘,重点看单位容量成本和 DWPD 指标。温层是纯追加写,对随机性能要求不高,铺 NVMe 属于浪费。真正要盯的是写入放大和寿命——日志盘是 7×24 持续写,消费级盘的 TBW 撑不住。
看日志量和留存期。日增量 1GB 以内、留存 180 天,云主机挂载独立数据盘完全够用,弹性扩容是最大优势。日增量到 10GB 以上、总容量 6TB 起步,云上按量计费的存储成本会明显超过物理机,这时候裸金属或者自建集群更划算。中间地带建议两边都算一遍账,把存储单价、快照费用、跨地域流量费都列进去再比。别被"弹性"两个字迷惑,日志是只增不减的,弹性对它意义有限。
只要有一点合规压力,就有必要。日志的价值在出事之后才体现,如果它和业务放在同一个机房,机房级故障时两者一起消失,前面所有投入归零。做法上不必异地全量实时同步——只同步"监管必须"的那几类,压缩后再传,成本可控,延迟也能接受。异地之前先确认数据属地要求,跨境存放(比如放中国香港节点)务必先核实合同与监管口径是否允许。
后果是溯源链条直接断掉。各设备时间漂移几十秒到几分钟,你拿防火墙记录去对应用日志,发现时间对不上,就没法确认两件事是不是同一件事;时区不统一更糟,人工换算时出错,结论完全反过来。这类问题平时毫无征兆,只在出事那一刻爆发,而那时已经没法补救了。做法很简单:全网统一 NTP 源、日志统一用带时区的时间格式、NTP 服务本身要监控告警。
做恢复演练,而且要真跑数据。每季度随机抽一天历史日志,走一遍完整的恢复与检索流程,真的执行查询,记录从发起到拿到结果的总耗时,演练结果留档。只检查"备份文件存在"不算验证——索引缺失、格式版本不兼容、介质老化、密钥丢失,任何一种都会让你在需要时打不开。另外记得连索引和元数据一起备份,否则恢复后要全量重建索引,耗时可能是小时级甚至天级。
日志留存这件事,绝大多数团队不是败在技术上,是败在"没算过账"和"没验过"上。买盘凭感觉、分层凭心情、存完不演练,等到检查组坐下来问"把某年某月某日某账号的操作记录调出来看看",才发现要么容量早满了在轮转覆盖,要么时间在两套时钟里对不上,要么索引丢了查不出来。真正花心思的地方应该是两处:立项时把容量算清楚并留足余量,运行期把恢复演练做成季度惯例。硬件选型反而没那么玄——NVMe 扛热层、大容量盘扛温层、CPU 按峰值留 1.5 倍余量、内存保证索引常驻,这套组合在绝大多数场景都够用。至于合规口径,记住一句话:六个月是广为人知的基线,具体期限与范围永远以主管部门要求和业务合同为准,把传闻当条文是最贵的错误。
本文涉及的规格与价格信息参考一万网络官网(https://www.idc10000.net/)公开页面,包括裸金属服务器、中国大陆各节点(华南、华东、华西、华北)、中国香港节点、欧洲与美洲节点、一万云等产品线的公示价格,以及 7×24 中文工单、平均 5 分钟响应、硬件故障 10 分钟自动迁移、每日 3 份免费快照与 30 秒回滚、5–20G 免费 DDoS 防护、免费备案协助、BGP 多线与 CN2 GIA、自营机柜最快 1 分钟上架等服务说明。文中所有价格以官网实时价为准,标注"预估"的部分为按配置推算,以实际账单为准。具体以签约时最新报价与合同为准。
合规相关内容仅为技术层面的通用实践整理,不构成法律意见。"网络日志留存不少于六个月"为业内广为人知的基线要求,通常理解为至少六个月;具体留存期限、范围与格式,请以主管部门要求及业务合同约定为准。文中容量演算均为基于明确假设的示例,请以自身日志样本实测结果为准。
Copyright © 2013-2020 idc10000.net. All Rights Reserved. 一万网络 科技有限公司 版权所有 深圳市科技有限公司 粤ICP备07026347号
本网站的域名注册业务代理北京新网数码信息技术有限公司的产品