如何在多服务器模式下配置统一的错误日志记录_集中式审计与操作回溯排查

秋芳君_2466

秋芳君_2466

2026-05-06

932人浏览

原创

多服务器日志应通过 rsyslog/tcp+tls 统一转发至日志服务器,配置 $actionqueuetype linkedlist 和时间同步;容器需显式设 $localhostname;审计日志需 auditd+rsyslog 链路打通并规整字段防 es 卡顿。

多服务器日志怎么统一写到一个地方?

直接用远程 syslog 或日志收集器(比如 rsyslog + syslog-ng)转发,别自己写脚本轮询 scp。自建同步逻辑在服务重启、网络抖动、时钟不同步时极易丢日志,且无法保证顺序。

常见错误现象:Connection refused(目标端口没开)、Message too long(UDP 截断)、Permission denied(SELinux 或文件权限拦了 socket)。

  • 生产环境优先走 TCP + TLS,避免 UDP 丢包和伪造
  • rsyslog 的 $ActionQueueType LinkedList 和 $ActionResumeRetryCount -1 必须配,否则网络断几秒就丢一批日志
  • 所有服务器的 /etc/rsyslog.conf 里加一行:*.* @@log-server:514(双 @ 表示 TCP)
  • 时间必须同步:chronyd 或 ntpd 要跑稳,不然审计回溯时序全乱

集中式日志里如何区分是哪台服务器的操作?

不能只靠 IP,NAT、负载均衡、容器动态 IP 都会让来源不可靠。得靠日志内容里的主机标识字段,且这个字段要由客户端主动注入,不能依赖服务端解析。

使用场景:排查某个 sudo 操作是谁在哪台机器上执行的;定位某次配置变更发生在哪台节点。

  • Linux 系统日志默认带 hostname,但容器内常为空,需在 rsyslog 配置中显式设置:$LocalHostname your-app-node-03
  • 应用日志(如 Python 的 logging)要手动加 host 字段:logger.info("user login", extra={"host": os.getenv('HOSTNAME', 'unknown')})
  • 避免用 %HOSTNAME% 模板变量——它取的是 rsyslog 进程启动时的 hostname,容器重启后可能没更新

审计日志怎么防篡改又保留原始操作上下文?

核心矛盾:日志要防删改,但又要能查到命令行、用户、TTY、进程树这些上下文。光靠 auditd 不够,它不记录命令参数;光靠 shell history 更不行,它可被绕过、清空、不实时。

关键点:把 auditd + bash audit plugin + rsyslog 三者链路打通,且所有环节启用完整性校验。

  • 开启 auditd 的 augenrules --load 并加载规则:-a always,exit -F arch=b64 -S execve -k exec
  • 在 /etc/audit/rules.d/ 加规则文件,确保 auditctl -s | grep enabled 输出为 enabled 1
  • rsyslog 转发前必须启用 $ActionFileDefaultTemplate RSYSLOG_ForwardFormat,否则 audit 日志的 key-value 结构会被打平成纯文本,丢失 exe="/usr/bin/sudo" 这类关键字段
  • 不要用 logger 命令手动生成审计日志——它没有 auditd 的 syscall 级捕获能力,sudo 提权操作会漏掉

为什么 elasticsearch + filebeat 架构查审计日志总卡顿?

不是 ES 性能差,是日志字段没规整、查询没收敛。审计日志里大量高基数字段(如 pid、uid、comm)不做处理,一次模糊查询就扫全量 shard。

性能影响:单条 sudo -u admin /bin/bash 操作在 ES 里生成 3~5 条不同 type 的日志(exec、cwd、path),不聚合根本没法回溯完整动作链。

  • filebeat 的 processors 必须做字段裁剪:drop_fields 删掉 agent.hostname(已由 host.name 覆盖)、input.type(固定为 log)
  • ES index template 中,对 auditd.key、auditd.exe 这类字段设为 "index": false,只用于聚合,不参与全文检索
  • 用 auditd 的 -F key=auth 规则给登录类事件打标,Kibana 里直接按 auditd.key: "auth" 过滤,比搜 message: "sshd" 快一个数量级

最易被忽略的一点:所有服务器的 auditd 日志路径(/var/log/audit/audit.log)必须用 filebeat 的 close_inactive: 5m 关闭,否则文件句柄泄漏,跑一周后采集停摆。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
大数据分析工具有哪四个
大数据分析工具有哪四个

大数据分析的四个工具分别是rapidminer、Hpcc、Hadoop和Pentaho bi。大数据分析用于从各种来源生成的原始数据中提取有价值的数据。这些数据帮助我们获得有意义的见解、隐藏的模式、未知的相关性、市场趋势等等,具体取决于行业。大数据分析的主要动机是提供有价值的见解,以便为未来做出更好的决策。php中文网为大家带来了大数据分析的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

4956

5

Java 大数据处理基础(Hadoop 方向)
Java 大数据处理基础(Hadoop 方向)

本专题聚焦 Java 在大数据离线处理场景中的核心应用,系统讲解 Hadoop 生态的基本原理、HDFS 文件系统操作、MapReduce 编程模型、作业优化策略以及常见数据处理流程。通过实际示例(如日志分析、批处理任务),帮助学习者掌握使用 Java 构建高效大数据处理程序的完整方法。

2025.12.08

1249

12

大数据专业学习教程
大数据专业学习教程

本专题整合了大数据专业学习相关教程,阅读专题下面的文章了解更多详细内容。

2026.01.05

243

5

python处理大数据合集
python处理大数据合集

本专题整合了python处理大数据相关教程,阅读专题下面的文章了解更多详细内容。

2026.01.05

466

22

服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

920

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2872

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

956

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

849

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习