Prometheus面试题
基础概念
核心原理
- 什么是Prometheus?它的主要特点是什么?
- Prometheus和传统监控系统(如Zabbix)的区别?
- Prometheus的架构包含哪些组件?各自的作用?
- 什么是时间序列数据库(TSDB)?Prometheus如何存储数据?
- Prometheus的数据模型是怎样的?什么是Metric、Label、Sample?
指标类型
- Prometheus有哪几种指标类型?分别的使用场景?
- Counter和Gauge的区别?什么时候用Counter?
- Histogram和Summary的区别?如何选择?
- 什么是Bucket?在Histogram中的作用?
- 如何设计合理的指标名称和标签?
数据采集
采集机制
- Prometheus采集数据的方式是Pull还是Push?为什么?
- Pull模式的优缺点是什么?
- 什么情况下使用Pushgateway?有什么注意事项?
- Prometheus默认的采集间隔是多少?如何调整?
- 什么是Job和Instance?它们的关系?
服务发现
- Prometheus支持哪些服务发现机制?
- 静态配置和动态服务发现的区别?
- 如何配置基于文件的服务发现?
- Prometheus如何自动发现K8s资源?原理是什么?
- 什么是relabel?常见的relabel操作?
Exporter使用
常用Exporter
- 什么是Exporter?作用是什么?
- Node Exporter监控哪些指标?
- 如何使用Blackbox Exporter监控网站可用性?
- MySQL Exporter需要关注哪些重要指标?
- Redis Exporter监控哪些关键指标?
自定义监控
- 如何开发自定义Exporter?
- 如何在应用中集成Prometheus客户端?
- Spring Boot应用如何暴露Prometheus指标?
- 如何监控JVM指标?需要哪些配置?
- 自定义指标的最佳实践?
PromQL查询
基础语法
- PromQL的基本语法结构?
- 如何进行指标的过滤和聚合?
- rate()和irate()的区别?使用场景?
- increase()函数的作用?与rate()的关系?
- 如何计算百分位数?P95、P99的含义?
高级查询
- 如何使用PromQL查找CPU使用率最高的Pod?
- 如何计算服务的可用率(SLI)?
- 如何实现多指标的关联查询?
- 什么是Vector Matching?一对一、一对多、多对多匹配?
- 如何优化PromQL查询性能?
告警管理
AlertManager
- AlertManager的作用是什么?与Prometheus的关系?
- 告警的完整流程是怎样的?
- 告警规则包含哪些部分?如何编写?
- 什么是告警分组(Grouping)?作用是什么?
- 告警路由(Routing)如何配置?
告警策略
- 什么是告警抑制(Inhibition)?使用场景?
- 什么是告警静默(Silence)?如何配置?
- 如何避免告警风暴?
- 告警去重是如何实现的?
- 支持哪些告警通知方式?如何集成钉钉、企业微信?
K8s监控
集群监控
- 监控K8s需要部署哪些组件?
- kube-state-metrics的作用是什么?监控哪些指标?
- metrics-server和Prometheus的区别?
- cAdvisor的作用?已经集成在哪里?
- 如何监控K8s的控制面组件?
资源监控
- 如何监控Node的资源使用情况?
- 如何监控Pod的资源使用和限制?
- 如何发现资源使用不均衡的情况?
- 如何监控PV/PVC的使用情况?
- 如何设置K8s资源告警?
应用监控
- 如何监控Deployment的副本状态?
- 如何监控Service的端点健康状态?
- 如何监控Ingress的流量?
- 如何实现应用的RED指标监控?
- ServiceMonitor是什么?如何使用?
存储与性能
本地存储
- Prometheus本地存储(TSDB)的架构?
- 什么是Block、WAL、Checkpoint?
- 数据保留策略如何配置?
- 存储空间如何估算?
- 如何优化存储性能?
远程存储
- 为什么需要远程存储?
- Prometheus支持哪些远程存储方案?
- 远程写和远程读的配置?
- 如何选择合适的远程存储?
- 数据迁移策略?
性能优化
- Prometheus出现性能瓶颈如何排查?
- 如何减少高基数(High Cardinality)问题?
- 内存使用过高如何优化?
- 查询超时如何处理?
- 如何进行容量规划?
高可用方案
集群部署
- Prometheus如何实现高可用?
- 联邦集群(Federation)的原理和使用场景?
- 什么是全局视图和分片视图?
- 如何处理数据去重?
Thanos架构
- Thanos解决了Prometheus什么问题?
- Thanos的核心组件有哪些?
- Thanos Sidecar的作用?
- Thanos Query如何实现全局查询?
- Thanos Compact的作用?
其他方案
- Cortex和Thanos的区别?
- VictoriaMetrics的优势?
- M3DB的特点?
- 如何选择合适的高可用方案?
可视化与集成
Grafana集成
- 如何在Grafana中添加Prometheus数据源?
- Grafana变量如何使用?
- 如何创建高效的Dashboard?
- 如何实现Dashboard的模板化?
- Grafana告警和Prometheus告警的区别?
生态集成
- Prometheus Operator是什么?优势?
- 如何与CI/CD集成?
- 如何集成到日志系统?
- 如何与追踪系统结合?
故障排查
常见问题
- Prometheus无法抓取目标如何排查?
- 指标数据缺失的可能原因?
- 告警不触发如何调试?
- 时间不同步导致的问题?
运维实践
- Prometheus自身如何监控?
- 备份恢复策略?
- 版本升级注意事项?
- 安全加固建议?
最佳实践
设计原则
- 指标设计的最佳实践?
- Label使用的注意事项?
- 告警规则设计原则?
- 如何避免监控盲点?
实战经验
- 大规模集群监控经验?
- 多集群监控方案?
- 成本优化建议?
- 监控体系建设经验?
更新时间:2025-01-30