跳到主要内容

Prometheus面试题

基础概念

核心原理

  1. 什么是Prometheus?它的主要特点是什么?
  2. Prometheus和传统监控系统(如Zabbix)的区别?
  3. Prometheus的架构包含哪些组件?各自的作用?
  4. 什么是时间序列数据库(TSDB)?Prometheus如何存储数据?
  5. Prometheus的数据模型是怎样的?什么是Metric、Label、Sample?

指标类型

  1. Prometheus有哪几种指标类型?分别的使用场景?
  2. Counter和Gauge的区别?什么时候用Counter?
  3. Histogram和Summary的区别?如何选择?
  4. 什么是Bucket?在Histogram中的作用?
  5. 如何设计合理的指标名称和标签?

数据采集

采集机制

  1. Prometheus采集数据的方式是Pull还是Push?为什么?
  2. Pull模式的优缺点是什么?
  3. 什么情况下使用Pushgateway?有什么注意事项?
  4. Prometheus默认的采集间隔是多少?如何调整?
  5. 什么是Job和Instance?它们的关系?

服务发现

  1. Prometheus支持哪些服务发现机制?
  2. 静态配置和动态服务发现的区别?
  3. 如何配置基于文件的服务发现?
  4. Prometheus如何自动发现K8s资源?原理是什么?
  5. 什么是relabel?常见的relabel操作?

Exporter使用

常用Exporter

  1. 什么是Exporter?作用是什么?
  2. Node Exporter监控哪些指标?
  3. 如何使用Blackbox Exporter监控网站可用性?
  4. MySQL Exporter需要关注哪些重要指标?
  5. Redis Exporter监控哪些关键指标?

自定义监控

  1. 如何开发自定义Exporter?
  2. 如何在应用中集成Prometheus客户端?
  3. Spring Boot应用如何暴露Prometheus指标?
  4. 如何监控JVM指标?需要哪些配置?
  5. 自定义指标的最佳实践?

PromQL查询

基础语法

  1. PromQL的基本语法结构?
  2. 如何进行指标的过滤和聚合?
  3. rate()和irate()的区别?使用场景?
  4. increase()函数的作用?与rate()的关系?
  5. 如何计算百分位数?P95、P99的含义?

高级查询

  1. 如何使用PromQL查找CPU使用率最高的Pod?
  2. 如何计算服务的可用率(SLI)?
  3. 如何实现多指标的关联查询?
  4. 什么是Vector Matching?一对一、一对多、多对多匹配?
  5. 如何优化PromQL查询性能?

告警管理

AlertManager

  1. AlertManager的作用是什么?与Prometheus的关系?
  2. 告警的完整流程是怎样的?
  3. 告警规则包含哪些部分?如何编写?
  4. 什么是告警分组(Grouping)?作用是什么?
  5. 告警路由(Routing)如何配置?

告警策略

  1. 什么是告警抑制(Inhibition)?使用场景?
  2. 什么是告警静默(Silence)?如何配置?
  3. 如何避免告警风暴?
  4. 告警去重是如何实现的?
  5. 支持哪些告警通知方式?如何集成钉钉、企业微信?

K8s监控

集群监控

  1. 监控K8s需要部署哪些组件?
  2. kube-state-metrics的作用是什么?监控哪些指标?
  3. metrics-server和Prometheus的区别?
  4. cAdvisor的作用?已经集成在哪里?
  5. 如何监控K8s的控制面组件?

资源监控

  1. 如何监控Node的资源使用情况?
  2. 如何监控Pod的资源使用和限制?
  3. 如何发现资源使用不均衡的情况?
  4. 如何监控PV/PVC的使用情况?
  5. 如何设置K8s资源告警?

应用监控

  1. 如何监控Deployment的副本状态?
  2. 如何监控Service的端点健康状态?
  3. 如何监控Ingress的流量?
  4. 如何实现应用的RED指标监控?
  5. ServiceMonitor是什么?如何使用?

存储与性能

本地存储

  1. Prometheus本地存储(TSDB)的架构?
  2. 什么是Block、WAL、Checkpoint?
  3. 数据保留策略如何配置?
  4. 存储空间如何估算?
  5. 如何优化存储性能?

远程存储

  1. 为什么需要远程存储?
  2. Prometheus支持哪些远程存储方案?
  3. 远程写和远程读的配置?
  4. 如何选择合适的远程存储?
  5. 数据迁移策略?

性能优化

  1. Prometheus出现性能瓶颈如何排查?
  2. 如何减少高基数(High Cardinality)问题?
  3. 内存使用过高如何优化?
  4. 查询超时如何处理?
  5. 如何进行容量规划?

高可用方案

集群部署

  1. Prometheus如何实现高可用?
  2. 联邦集群(Federation)的原理和使用场景?
  3. 什么是全局视图和分片视图?
  4. 如何处理数据去重?

Thanos架构

  1. Thanos解决了Prometheus什么问题?
  2. Thanos的核心组件有哪些?
  3. Thanos Sidecar的作用?
  4. Thanos Query如何实现全局查询?
  5. Thanos Compact的作用?

其他方案

  1. Cortex和Thanos的区别?
  2. VictoriaMetrics的优势?
  3. M3DB的特点?
  4. 如何选择合适的高可用方案?

可视化与集成

Grafana集成

  1. 如何在Grafana中添加Prometheus数据源?
  2. Grafana变量如何使用?
  3. 如何创建高效的Dashboard?
  4. 如何实现Dashboard的模板化?
  5. Grafana告警和Prometheus告警的区别?

生态集成

  1. Prometheus Operator是什么?优势?
  2. 如何与CI/CD集成?
  3. 如何集成到日志系统?
  4. 如何与追踪系统结合?

故障排查

常见问题

  1. Prometheus无法抓取目标如何排查?
  2. 指标数据缺失的可能原因?
  3. 告警不触发如何调试?
  4. 时间不同步导致的问题?

运维实践

  1. Prometheus自身如何监控?
  2. 备份恢复策略?
  3. 版本升级注意事项?
  4. 安全加固建议?

最佳实践

设计原则

  1. 指标设计的最佳实践?
  2. Label使用的注意事项?
  3. 告警规则设计原则?
  4. 如何避免监控盲点?

实战经验

  1. 大规模集群监控经验?
  2. 多集群监控方案?
  3. 成本优化建议?
  4. 监控体系建设经验?

更新时间:2025-01-30