通过 rsyslog 将各主机日志经 TCP 转发至中心 服务器;2. 服务端启用 rsyslog 的 imtcp 模块接收并按主机分离存储;3. 搭建 ELK(Elasticsearch、Logstash、Kibana)实现日志的解析、索引与可视化展示;4. 配置 TLS 加密、访问控制及索引清理策略保障安全与稳定;5. 可扩展引入 Kafka 应对百台以上规模的日志吞吐需求。

在大规模 Linux 服务器环境中,分散的日志管理会极大增加故障排查和安全审计的难度。构建一个统一日志中心,能够集中收集、存储、检索和分析所有主机的日志,是运维体系中的关键环节。以下是如何部署一套高效、稳定的 Linux 系统统一日志中心的完整方案。
选择日志采集与传输 工具
要实现日志集中化,第一步是将各台 Linux 主机上的日志发送到中央服务器。常用且成熟的 工具 有:
- rsyslog:系统自带,轻量稳定,支持 TLS 加密和可靠传输,适合基础日志转发。
- syslog-ng:功能更丰富,支持复杂的过滤和 路由 规则,适用于复杂场景。
- Fluentd / Fluent Bit:云原生架构下推荐,支持多格式解析和插件扩展。
若环境以传统服务为主,rsyslog 是最直接的选择。配置方式如下:
在客户端(需发送日志的服务器)编辑 /etc/rsyslog.conf 或新建 /etc/rsyslog.d/10-forward.conf:
*.* @@log-server-ip:514
使用 @@ 表示 TCP 协议,保证传输可靠性。重启服务生效:
systemctl restart rsyslog
搭建日志接收服务器
统一日志中心的核心是一台专用的日志接收服务器,运行日志服务并开放 端口 接收来自客户端的日志。
在服务端配置 rsyslog 接收远程日志:
编辑 /etc/rsyslog.conf,取消以下行的注释以启用 TCP 接收:
module(load="imtcp") input(type="imtcp" port="514")
可选:按主机名分离日志文件,便于管理:
$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%$YEAR%-%$MONTH%-%$DAY%.log" *.* ?RemoteLogs
保存后重启服务:
systemctl restart rsyslog
确保 防火墙 放行 514 端口:
firewall-cmd --add-port=514/tcp --permanent && firewall-cmd --reload
集成日志存储与可视化平台
仅集中存储还不够,需要可搜索、可告警的可视化系统。ELK(Elasticsearch + Logstash + Kibana)或 EFK(Fluentd 替代 Logstash)是主流方案。
基本部署流程:
- Elasticsearch:负责日志索引与存储,安装后调整 jvm.options 和 elasticsearch.yml 中的内存与网络配置。
- Logstash(或使用 Fluentd):接收 rsyslog 发来的日志,做结构化解析(如提取时间、程序名、级别等),再写入 Elasticsearch。
- Kibana:提供 Web 界面,创建仪表盘、设置过滤器和告警。
示例 Logstash 配置(接收 syslog):
input {syslog { port => 5140} } output {elasticsearch { hosts => ["http://localhost:9200"] index => "logs-syslog-%{+YYYY.MM.dd}" } }
安全与维护建议
统一日志中心涉及敏感信息,必须做好 安全防护:
- 使用 TLS 加密日志传输,避免明文暴露。
- 限制日志访问权限,Kibana 配置用户认证(如通过 Nginx 反向代理加账号密码)。
- 定期归档旧日志,结合 curator 工具清理 Elasticsearch 索引。
- 监控日志中心自身状态,防止因日志洪峰导致服务崩溃。
基本上就这些。从 rsyslog 转发,到中心接收,再到 ELK 展示,整个链路清晰可控。对于中小规模环境,这套方案足够稳定;若节点数超过百台,可引入 Kafka 做缓冲,提升吞吐能力。关键是让日志“看得见、查得快、存得住”。