1. 项目概述
最近在搭建一个本地日志处理系统时,遇到了如何高效地将业务日志从文件系统传输到Doris数据库的挑战。经过多次尝试和优化,最终采用了Logstash+Kafka+Doris的架构方案。这个方案不仅解决了日志实时采集和存储的问题,还通过Kafka实现了日志的缓冲和可靠传输。下面我将详细介绍这个系统的搭建过程和关键配置。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 整体架构解析
系统采用三层架构设计:
- 采集层:Logstash负责监控和解析本地日志文件
- 传输层:Kafka作为消息队列缓冲日志数据
- 存储层:Doris数据库提供高性能的日志存储和查询能力
这种架构的优势在于:
- 解耦了日志生产者和消费者
- 通过Kafka提高了系统的可靠性和扩展性
- Doris的列式存储特别适合日志分析场景
2.2 组件选型考量
选择Logstash作为采集工具主要基于以下考虑:
- 内置丰富的输入/输出插件
- 支持多种日志格式解析
- 社区活跃,文档完善
Kafka的选用则是因为:
- 高吞吐量的消息队列
- 支持消费者组模式
- 消息持久化和重放能力
Doris作为存储层的优势:
- 兼容MySQL协议,易于集成
- 支持实时数据分析
- 优秀的查询性能
3. 环境准备与部署
3.1 服务器环境配置
系统部署在192.168.1.168服务器上,配置如下:
- 操作系统:CentOS 7.9
- CPU:8核
- 内存:32GB
- 存储:500GB SSD
提示:建议生产环境使用独立部署的Kafka集群,而非与Logstash同机部署,以获得更好的性能和可靠性。
3.2 目录结构规划
为确保系统规范运行,设计了以下目录结构:
code复制/data
├── cross-border
│ ├── logstash
│ │ ├── pipeline # Logstash配置文件
│ │ └── config # 系统配置文件
├── kafka-consumer # Kafka消费者脚本
└── logs # 业务日志存储
├── log_20260225.log
├── log_20260226.log
└── log_20260227.log
3.3 权限设置
执行以下命令设置目录权限:
bash复制mkdir -p /data/{cross-border/logstash,kafka-consumer,logs}
chmod -R 755 /data/cross-border
chown -R logstash:logstash /data/cross-border/
