主题切换
📊 ELK分布式日志管理系统
📖 系统介绍
TIP
ELK是一套强大的日志收集、分析和可视化解决方案,由Elasticsearch、Logstash和Kibana三个核心组件组成。
核心组件
组件 | 功能描述 | 特点 |
---|---|---|
Elasticsearch | 实时搜索和分析引擎 | 分布式存储、全文检索、实时分析 |
Logstash | 日志收集和处理工具 | 数据收集、转换、过滤、输出 |
Kibana | 数据可视化平台 | 图形化界面、数据展示、实时监控 |
⚙️ 配置指南
1. 基础配置
在application.yml
中配置ELK服务地址:
yaml
wueasy:
elk:
url: elk.wueasy.com:5000 # ELK服务地址
2. 日志配置
在resources
目录下创建logback-spring.xml
配置文件:
xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!-- 日志存储路径配置 -->
<property name="LOG_HOME" value="./logs" />
<!-- 应用名称和ELK地址配置 -->
<springProperty scope="context" name="logName" source="spring.application.name" defaultValue="log"/>
<springProperty scope="context" name="elkUrl" source="wueasy.elk.url" defaultValue=""/>
<!-- 控制台输出配置 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d %-5level [%X{requestId} - %X{traceId} - %X{spanId}] [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- Logstash输出配置 -->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${elkUrl}</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<!-- 文件输出配置 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/${logName}.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d %-5level [%X{requestId} - %X{traceId} - %X{spanId}] [%thread] %logger{36} - %msg%n</pattern>
</encoder>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志级别配置 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
<appender-ref ref="LOGSTASH" />
</root>
</configuration>
🚀 部署指南
Docker部署(推荐)
TIP
使用Docker部署ELK可以快速搭建完整的日志管理环境。
- 拉取镜像
bash
docker pull elasticsearch:7.17.3
docker pull logstash:7.17.3
docker pull kibana:7.17.3
- 创建网络
bash
docker network create elk-network
- 启动Elasticsearch
bash
docker run -d \
--name elasticsearch \
--net elk-network \
-p 9200:9200 \
-e "discovery.type=single-node" \
elasticsearch:7.17.3
- 启动Logstash
bash
docker run -d \
--name logstash \
--net elk-network \
-p 5000:5000 \
logstash:7.17.3
- 启动Kibana
bash
docker run -d \
--name kibana \
--net elk-network \
-p 5601:5601 \
kibana:7.17.3
💡 最佳实践
1. 日志收集建议
- 合理配置日志级别
- 使用结构化日志格式
- 添加关键业务标识
2. 性能优化
- 配置合适的日志轮转策略
- 设置适当的缓冲区大小
- 定期清理过期日志
3. 监控建议
- 配置日志告警阈值
- 监控系统资源使用
- 定期备份重要日志
🔍 常见问题
连接失败排查
- 检查ELK服务地址配置
- 验证网络连通性
- 确认服务状态
日志丢失问题
- 检查磁盘空间
- 验证日志配置
- 确认写入权限