跳到主要内容

ELK面试题

ELK Stack基础

概述与架构

  1. 什么是ELK Stack?各组件的作用是什么?
  2. ELK Stack的典型架构是怎样的?
  3. 为什么需要使用ELK?解决了什么问题?
  4. ELK和EFK的区别?(Fluentd vs Logstash)
  5. 你们公司的ELK架构是怎样的?规模多大?

应用场景

  1. 你们公司都采集了哪些日志?(应用日志、系统日志、安全日志等)
  2. 你们公司的ELK是给谁看的?(开发、运维、安全、业务)
  3. ELK在你们公司的使用场景?
  4. 除了日志分析,ELK还能做什么?
  5. 实时监控和告警是如何实现的?

Elasticsearch详解

ES基础

  1. Elasticsearch在ELK中的作用是什么?
  2. ES的索引如何设计?命名规范?
  3. 你们ELK采集的日志量有多大?索引如何命名?
  4. 索引的生命周期管理?多久删一次?
  5. 如何优化ES存储?(冷热数据分离)
  6. ES集群规模?节点配置?

ES优化

  1. 如果日志量过大,超过了ES的负载能力,如何处理?
  2. 如何防止日志丢失?
  3. ES索引模板如何设计?
  4. 分片和副本如何设置?
  5. 如何监控ES集群健康状态?
  6. ES内存和JVM如何优化?

Logstash详解

Logstash基础

  1. Logstash的作用是什么?主要功能?
  2. Logstash的工作原理?三个阶段(Input、Filter、Output)
  3. 你们使用Logstash做了哪些事情?
  4. Logstash的配置文件结构?
  5. Logstash和Beats的区别?什么时候用哪个?

数据处理

  1. 什么是Grok语法?和正则表达式有什么区别?
  2. 自己写过Grok表达式吗?举例说明
  3. Logstash常用的Filter插件有哪些?
  4. 如何处理多行日志?(multiline)
  5. 如何处理JSON格式的日志?
  6. 如何进行数据转换和富化?

性能优化

  1. Logstash性能优化的方法?
  2. Pipeline配置如何优化?
  3. 如何处理Logstash的背压问题?
  4. Logstash的并发设置?
  5. 如何监控Logstash性能?

Beats家族

Filebeat

  1. Filebeat的作用和原理?
  2. Filebeat配置文件都有哪些内容?
  3. Filebeat如何收集Java日志?实现原理?
  4. Filebeat如何处理多行日志?
  5. Filebeat如何保证数据不丢失?(Registry机制)
  6. Filebeat的Module是什么?使用过哪些?

Kibana详解

基础功能

  1. Kibana的主要功能有哪些?
  2. 如何使用Kibana进行日志搜索?
  3. KQL(Kibana Query Language)语法?
  4. 如何创建Index Pattern?
  5. Saved Objects是什么?如何管理?

可视化

  1. Kibana自己画过图吗?都画过哪些图?
  2. 常用的可视化类型?(柱状图、饼图、地图等)
  3. 如何创建Dashboard?设计原则?
  4. Lens和传统可视化的区别?
  5. Canvas的使用场景?
  6. 如何分享和导出可视化结果?

高级功能

  1. 如何使用Kibana设置告警?(Watcher、Alerting)
  2. Machine Learning功能使用过吗?
  3. APM功能了解吗?
  4. SIEM(Security)功能?
  5. Kibana的Space和权限管理?
  6. 如何优化Kibana性能?

数据采集架构

采集流程

  1. ELK缓存用过哪些?如何对接?
  2. 完整的日志采集流程是什么?
  3. 为什么要加入消息队列?(Kafka、Redis)
  4. 采集架构如何保证高可用?
  5. 如何处理采集过程中的故障?

缓冲层设计

  1. Kafka在ELK中的作用?
  2. 为什么选择Kafka作为缓冲?
  3. Redis做缓冲的优缺点?
  4. 如何设置合理的缓冲大小?
  5. 缓冲层的监控和告警?

数据流转

  1. 数据从采集到展示的完整链路?
  2. 如何保证数据的完整性?
  3. 如何处理数据重复?
  4. 数据格式如何标准化?
  5. 时间戳如何统一处理?

日志处理实践

日志类型处理

  1. 如何处理Nginx访问日志?
  2. 如何处理Java应用日志?(异常堆栈)
  3. 如何处理容器日志?(Docker、K8s)
  4. 如何处理Windows日志?
  5. 如何处理数据库日志?
  6. 如何处理安全设备日志?

日志解析

  1. 如何解析非结构化日志?
  2. 如何处理不同编码的日志?
  3. 如何处理超大日志文件?
  4. 如何处理二进制日志?
  5. 日志字段提取的最佳实践?

异常处理

  1. 解析失败的日志如何处理?
  2. 如何处理日志积压?
  3. 如何处理日志风暴?
  4. 如何识别和过滤无用日志?
  5. 如何处理敏感信息?(脱敏)

性能与优化

整体优化

  1. ELK性能瓶颈通常在哪里?
  2. 如何进行容量规划?
  3. 如何优化采集性能?
  4. 如何优化存储成本?
  5. 如何优化查询性能?

具体优化措施

  1. Filebeat采集优化?(多线程、批量)
  2. Logstash处理优化?(Pipeline、Filter)
  3. ES索引优化?(映射、分片)
  4. Kibana查询优化?
  5. 网络传输优化?

资源管理

  1. CPU资源如何分配?
  2. 内存资源如何规划?
  3. 磁盘I/O如何优化?
  4. 网络带宽如何评估?
  5. 如何进行成本优化?

监控与运维

监控指标

  1. ELK各组件需要监控哪些指标?
  2. 如何监控日志采集延迟?
  3. 如何监控数据丢失?
  4. 如何设置监控告警?
  5. 监控数据如何可视化?

运维管理

  1. ELK集群如何升级?
  2. 如何进行数据备份?
  3. 如何处理故障切换?
  4. 如何进行容量扩展?
  5. 运维自动化实践?

故障处理

  1. Filebeat停止采集如何排查?
  2. Logstash处理缓慢如何解决?
  3. ES集群状态异常如何恢复?
  4. Kibana无法访问如何处理?
  5. 数据延迟过高如何优化?

安全与合规

安全配置

  1. ELK的安全特性有哪些?
  2. 如何配置SSL/TLS加密?
  3. 如何实现用户认证?
  4. 如何设置权限控制?
  5. 如何保护敏感数据?

审计合规

  1. 如何实现审计日志?
  2. 如何满足合规要求?
  3. 数据保留策略?
  4. 访问控制策略?
  5. 安全事件响应?

最佳实践

架构设计

  1. ELK架构设计原则?
  2. 高可用架构如何设计?
  3. 多数据中心如何部署?
  4. 容器化部署方案?
  5. 云上部署建议?

实施建议

  1. ELK项目实施步骤?
  2. 如何进行POC测试?
  3. 如何制定采集标准?
  4. 如何培训使用人员?
  5. 如何建立运维规范?

经验总结

  1. ELK使用中踩过哪些坑?
  2. 有哪些优化经验?
  3. 如何降低运维成本?
  4. 如何提升用户体验?
  5. 未来规划和展望?

更新时间:2025-01-30