雨云集中日志实战:rsyslog 多机日志收拢排查提速

雨云多机日志集中收集实战:rsyslog 推模式架构、内网转发避坑与合规边界
发布于 更新于
14

多台雨云VPS跑起来之后,日志散在每台机器上是最耽误事的一件事。上次一台美国VPS半夜被扫端口,我得挨台登上去翻 /var/log,等定位到来源已经过了半小时。后来我把所有机器的日志用 rsyslog 收拢到一台日志机,再把关键项接进看板,排查时间直接砍掉一大半。这篇就讲我是怎么在雨云上搭这套集中日志的,以及踩过的坑。

为什么要在雨云上做集中日志

单台机器看日志靠 tail -f 和 Netdata 的实时指标(我之前写过一篇《雨云VPS装Netdata实时看板》)就够了,但机器一多就乱:

  • 一台 Web 报 502,你不知道是上游应用崩了,还是数据库那台的连接被打满,两台日志各看各的很难串起来;
  • SSH 暴力破解的尝试分布在三四台机器,单看毫无规律,收拢后能立刻看出是同一批 IP 在扫;
  • OOM、磁盘写满这类问题往往先在某一台上冒头,等蔓延到其他机器再看就已经晚了。

所以集中日志的本质不是”存起来”,而是把跨主机的因果链拼出来。这也是它和监控指标最大的区别:Netdata 告诉你”现在很卡”,日志告诉你”为什么卡、谁干的”。

架构怎么选:推还是拉

雨云上我试过两种摆法,最后用的是推模式(rsyslog 客户端转发),原因是简单、宕机影响面小。

推模式:每台业务机装 rsyslog,把 /var/log/auth.log/var/log/syslog/var/log/nginx/error.log 转发到一台专门的日志机。业务机挂了不影响其他机器,最多丢了那一台的日志。

拉模式(比如 Filebeat 去那边抓):中心节点要能访问每台机器,权限和防火墙都更麻烦,机器一多中心很容易成为瓶颈。

如果你机器数在十台以内,推模式足够。再多建议上 Loki 这类带索引的方案,不过那属于另一个量级,本文先不展开。

动手:日志机先就位

挑一台配置不用太高的机器当日志机,我用的就是雨云香港节点的一台小规格 VPS,免备案、对外带宽稳,平时 CPU 占用几乎可以忽略。

关键点:日志机和业务机尽量走内网,不要走公网转发 514 端口。雨云有内网互联和私有网络(多台机器组 VPC),同区域机器之间内网互通、不占公网流量也不暴露端口,安全性和成本都更好。跨区域的机器如果只能走公网,务必用 TLS 加密转发,别明文把日志甩到互联网上。

日志机上的 rsyslog 开一个接收模块即可(imtcp 或 imudp),把收到的日志按主机名分目录落盘,后面排查时直接 grep 对应主机名就行。

业务机:把日志推出去

每台业务机改 rsyslog 配置,加一条转发规则,把需要的日志发往日志机的地址。auth、syslog、Nginx 错误这三个是我必转的,基本覆盖了安全、系统和 Web 三类问题。

转之前我习惯先在业务机上本地留一份,再做远程转发——双保险,日志机万一维护,本地还能查。宝塔和 1Panel 面板的机器也一样,面板的操作日志在各自目录,想收也可以额外加规则,不冲突。

有个细节容易漏:转发规则写好后要 restart rsyslog,别只 reload,部分老旧版本 reload 不重新加载远程目标。

收拢之后,我看什么

日志进了一处,真正省时间的是这几类查询:

  • SSH 登录:把 auth.logFailed passwordAccepted 按来源 IP 聚合,哪台被扫得凶一目了然,比单台看那篇 SSH 安全加固教程讲的 SSH 加固告警更全局;
  • Nginx 5xx:哪台、哪个 upstream 在持续报错,直接定位是应用挂了还是后端连不上;
  • OOM:搜 Out of memory,看是被谁吃掉的,结合 Netdata 的内存曲线能确认是不是 slowly leak。

我把这几个维度做成了几个简单看板卡片,每天扫一眼就行,不用再登每台机器。

合规边界要画清楚

日志里会带用户名、来源 IP、访问路径这些信息,属于《个人信息保护法》管的范畴,集中存放更得注意:

  • 日志机只放运维需要的系统日志,不收业务数据库里的用户明文数据;
  • 按《数据安全法》做访问控制,日志机不对外开放查询端口,只在内网或跳板机可达;
  • 留存周期设上限,过期清掉,不无限堆积;
  • 用途限定在故障排查和安全审计,不把日志能力用于突破国家网络管控,也不对外提供扫描类服务。

香港、美国节点虽然免备案,但该守的合规底线一样要守。

几个我踩过的坑

  • 时区不一致:业务机有的是 UTC 有的是 CST,日志对不上时间线。统一设成同一时区,或者在转发时打上机器本地时间戳并标注主机名;
  • 硬盘写爆:日志机磁盘小,不轮转很快满。配好 logrotate,按大小切分、保留 N 份;
  • 514 端口暴露:一开始图省事走公网明文,被扫了一波。后来全部切到内网 VPC,公网只留必要端口;
  • 重复日志:某台机器既本地留又转发,日志机里出现两份。检查业务机是不是 *. 全量转发又叠加了模块重复发送,收窄规则即可。

适合从哪开始

不用一步到位。先挑两台机器 + 一台日志机把链路跑通,确认能收到、能搜到,再逐步把其他机器接进来。等稳定了,再把 SSH 登录异常、5xx 错误这类高频项做成看板。等机器规模再上一个台阶,再考虑 Loki 这类带标签索引的方案。

如果你还没在雨云上开机器,香港、美国节点免备案、带宽稳、价格也便宜,做日志机和业务机性价比都高,用雨云优惠码 admin01 五折新开几台小规格先试这套架构最划算。

常见问题(FAQ)

雨云上做集中日志,业务机和日志机必须同地域吗?
不必须。同地域可以走内网 VPC 互联,安全和成本最好;跨地域只能走公网时务必用 TLS 加密转发,别明文传。香港、美国这类免备案节点之间跨公网也更省心。
rsyslog 和 Filebeat 该怎么选?
十台以内、只要集中存加搜,rsyslog 推模式最轻量,日志机几乎零负担。如果要做带标签的检索、和 Grafana/Loki 联动做可视化,Filebeat 加 Loki 更合适,但运维成本更高。
集中日志会违反合规吗?
不会,前提是只收系统运维日志(SSH、Nginx 错误、系统消息),不收业务库里的用户明文数据,做好访问控制和留存上限,用途限定在排障和安全审计。这和网络安全法、个人信息保护法、数据安全法的要求是一致的。
日志机挂了会丢业务机日志吗?
只要业务机本地也保留一份(推荐做法),日志机维护期间只丢集中视角,本机仍能查。恢复后新的日志继续转发,已本地留存的部分不受影响。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600

在雨云跑了一年多,工单开过、7天无理由退款也实际走了一遍。这篇摊开讲雨云售后的真实路数:工单节奏、退款限制、自助文档,以及哪些坑别踩。