ELK面试题
ELK Stack基础
概述与架构
- 什么是ELK Stack?各组件的作用是什么?
- ELK Stack的典型架构是怎样的?
- 为什么需要使用ELK?解决了什么问题?
- ELK和EFK的区别?(Fluentd vs Logstash)
- 你们公司的ELK架构是怎样的?规模多大?
应用场景
- 你们公司都采集了哪些日志?(应用日志、系统日志、安全日志等)
- 你们公司的ELK是给谁看的?(开发、运维、安全、业务)
- ELK在你们公司的使用场景?
- 除了日志分析,ELK还能做什么?
- 实时监控和告警是如何实现的?
Elasticsearch详解
ES基础
- Elasticsearch在ELK中的作用是什么?
- ES的索引如何设计?命名规范?
- 你们ELK采集的日志量有多大?索引如何命名?
- 索引的生命周期管理?多久删一次?
- 如何优化ES存储?(冷热数据分离)
- ES集群规模?节点配置?
ES优化
- 如果日志量过大,超过了ES的负载能力,如何处理?
- 如何防止日志丢失?
- ES索引模板如何设计?
- 分片和副本如何设置?
- 如何监控ES集群健康状态?
- ES内存和JVM如何优化?
Logstash详解
Logstash基础
- Logstash的作用是什么?主要功能?
- Logstash的工作原理?三个阶段(Input、Filter、Output)
- 你们使用Logstash做了哪些事情?
- Logstash的配置文件结构?
- Logstash和Beats的区别?什么时候用哪个?
数据处理
- 什么是Grok语法?和正则表达式有什么区别?
- 自己写过Grok表达式吗?举例说明
- Logstash常用的Filter插件有哪些?
- 如何处理多行日志?(multiline)
- 如何处理JSON格式的日志?
- 如何进行数据转换和富化?
性能优化
- Logstash性能优化的方法?
- Pipeline配置如何优化?
- 如何处理Logstash的背压问题?
- Logstash的并发设置?
- 如何监控Logstash性能?
Beats家族
Filebeat
- Filebeat的作用和原理?
- Filebeat配置文件都有哪些内容?
- Filebeat如何收集Java日志?实现原理?
- Filebeat如何处理多行日志?
- Filebeat如何保证数据不丢失?(Registry机制)
- Filebeat的Module是什么?使用过哪些?
Kibana详解
基础功能
- Kibana的主要功能有哪些?
- 如何使用Kibana进行日志搜索?
- KQL(Kibana Query Language)语法?
- 如何创建Index Pattern?
- Saved Objects是什么?如何管理?
可视化
- Kibana自己画过图吗?都画过哪些图?
- 常用的可视化类型?(柱状图、饼图、地图等)
- 如何创建Dashboard?设计原则?
- Lens和传统可视化的区别?
- Canvas的使用场景?
- 如何分享和导出可视化结果?
高级功能
- 如何使用Kibana设置告警?(Watcher、Alerting)
- Machine Learning功能使用过吗?
- APM功能了解吗?
- SIEM(Security)功能?
- Kibana的Space和权限管理?
- 如何优化Kibana性能?
数据采集架构
采集流程
- ELK缓存用过哪些?如何对接?
- 完整的日志采集流程是什么?
- 为什么要加入消息队列?(Kafka、Redis)
- 采集架构如何保证高可用?
- 如何处理采集过程中的故障?
缓冲层设计
- Kafka在ELK中的作用?
- 为什么选择Kafka作为缓冲?
- Redis做缓冲的优缺点?
- 如何设置合理的缓冲大小?
- 缓冲层的监控和告警?
数据流转
- 数据从采集到展示的完整链路?
- 如何保证数据的完整性?
- 如何处理数据重复?
- 数据格式如何标准化?
- 时间戳如何统一处理?
日志处理实践
日志类型处理
- 如何处理Nginx访问日志?
- 如何处理Java应用日志?(异常堆栈)
- 如何处理容器日志?(Docker、K8s)
- 如何处理Windows日志?
- 如何处理数据库日志?
- 如何处理安全设备日志?
日志解析
- 如何解析非结构化日志?
- 如何处理不同编码的日志?
- 如何处理超大日志文件?
- 如何处理二进制日志?
- 日志字段提取的最佳实践?
异常处理
- 解析失败的日志如何处理?
- 如何处理日志积压?
- 如何处理日志风暴?
- 如何识别和过滤无用日志?
- 如何处理敏感信息?(脱敏)
性能与优化
整体优化
- ELK性能瓶颈通常在哪里?
- 如何进行容量规划?
- 如何优化采集性能?
- 如何优化存储成本?
- 如何优化查询性能?
具体优化措施
- Filebeat采集优化?(多线程、批量)
- Logstash处理优化?(Pipeline、Filter)
- ES索引优化?(映射、分片)
- Kibana查询优化?
- 网络传输优化?
资源管理
- CPU资源如何分配?
- 内存资源如何规划?
- 磁盘I/O如何优化?
- 网络带宽如何评估?
- 如何进行成本优化?
监控与运维
监控指标
- ELK各组件需要监控哪些指标?
- 如何监控日志采集延迟?
- 如何监控数据丢失?
- 如何设置监控告警?
- 监控数据如何可视化?
运维管理
- ELK集群如何升级?
- 如何进行数据备份?
- 如何处理故障切换?
- 如何进行容量扩展?
- 运维自动化实践?
故障处理
- Filebeat停止采集如何排查?
- Logstash处理缓慢如何解决?
- ES集群状态异常如何恢复?
- Kibana无法访问如何处理?
- 数据延迟过高如何优化?
安全与合规
安全配置
- ELK的安全特性有哪些?
- 如何配置SSL/TLS加密?
- 如何实现用户认证?
- 如何设置权限控制?
- 如何保护敏感数据?
审计合规
- 如何实现审计日志?
- 如何满足合规要求?
- 数据保留策略?
- 访问控制策略?
- 安全事件响应?
最佳实践
架构设计
- ELK架构设计原则?
- 高可用架构如何设计?
- 多数据中心如何部署?
- 容器化部署方案?
- 云上部署建议?
实施建议
- ELK项目实施步骤?
- 如何进行POC测试?
- 如何制定采集标准?
- 如何培训使用人员?
- 如何建立运维规范?
经验总结
- ELK使用中踩过哪些坑?
- 有哪些优化经验?
- 如何降低运维成本?
- 如何提升用户体验?
- 未来规划和展望?
更新时间:2025-01-30