DevOps 面试题大全(七·上):监控系统 Prometheus/Grafana/ELK 25 题详解
前言
监控是 DevOps 的眼睛,帮助发现系统问题、性能瓶颈。本文整理 50 道监控面试题,涵盖 Prometheus、Grafana、ELK 等主流工具。
一、基础概念题(1-15 题)
1. 监控系统核心指标
- USE 方法:Utilization, Saturation, Errors
- RED 方法:Rate, Errors, Duration
- 黄金指标:延迟、流量、错误、饱和度
2. Prometheus 架构
- Prometheus Server - 时序数据库
- Exporters - 指标采集器
- PromQL - 查询语言
- Alertmanager - 告警管理
- Grafana - 可视化
3. Prometheus 数据模型
- Metric Name - 指标名称
- Labels - 标签键值对
- Timestamp - 时间戳
- Value - 指标值
4. 指标类型
- Counter - 只增不减(请求数)
- Gauge - 可增可减(内存使用)
- Histogram - 直方图(响应时间)
- Summary - 摘要(分位数)
5. PromQL 基础查询
# 瞬时向量
http_requests_total
# 范围向量
http_requests_total[5m]
# 标签过滤
http_requests_total{method="POST",job="api"}
# 聚合函数
sum(rate(http_requests_total[5m])) by (job)
6. 常用聚合函数
- sum - 求和
- avg - 平均
- max/min - 最大/最小
- count - 计数
- rate - 增长率
- irate - 瞬时增长率
7. Grafana 核心概念
- Data Source - 数据源
- Dashboard - 仪表盘
- Panel - 面板
- Query - 查询
- Alert - 告警
- Variable - 变量
8. ELK Stack 组成
- Elasticsearch - 搜索分析引擎
- Logstash - 日志收集处理
- Kibana - 可视化
- Beats - 轻量采集器
9. 日志收集架构
Filebeat → Logstash → Elasticsearch → Kibana
10. 告警级别分类
- P0 - 致命(系统不可用)
- P1 - 严重(核心功能受损)
- P2 - 警告(性能下降)
- P3 - 提示(需要关注)
11-15. 更多基础题
| 题号 | 题目 | 要点 |
|---|---|---|
| 11 | Prometheus 存储方式? | 时序数据库,TSDB |
| 12 | 服务发现机制? | K8s, EC2, Consul 等 |
| 13 | Blackbox Exporter 作用? | 探测 HTTP/TCP/ICMP |
| 14 | Alertmanager 功能? | 去重、分组、路由、静默 |
| 15 | 日志 vs 指标区别? | 日志是事件,指标是聚合 |
二、进阶实战题(16-25 题)
16. Prometheus 配置示例
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['node1:9100', 'node2:9100']
- job_name: 'kubernetes'
kubernetes_sd_configs:
- role: pod
17. 告警规则配置
groups:
- name: example
rules:
- alert: HighCPU
expr: avg(rate(node_cpu_seconds_total[5m])) > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "CPU 使用率过高"
description: "{{ $labels.instance }} CPU 超过 80%"
18. Alertmanager 路由配置
route:
group_by: ['alertname', 'cluster']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receiver: 'default'
routes:
- match:
severity: critical
receiver: 'pagerduty'
- match:
severity: warning
receiver: 'slack'
19. Grafana Dashboard 导入
使用社区模板(ID: 8919 Node Exporter, 315 K8s),或自定义创建。
20. 自定义 Exporter
使用 Prometheus Client Library(Go/Python/Java)暴露 /metrics 端点。
21. 日志查询语法
# Lucene 语法
status:500 AND method:POST
# KQL (Kibana)
http.response.status_code : 500 and http.request.method : "POST"
# 聚合
GET /logs/_search
{
"aggs": {
"status_codes": {
"terms": { "field": "http.response.status_code" }
}
}
}
22. 指标类型选择
- 请求总数 → Counter
- 当前连接数 → Gauge
- 响应时间分布 → Histogram
- API 延迟百分位 → Summary
23. 服务发现配置
scrape_configs:
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
24. 联邦集群配置
多层 Prometheus 架构,边缘采集 → 中心聚合 → 全局视图。
25. 高可用方案
- 多副本 Prometheus
- Thanos/Cortex 长期存储
- VictoriaMetrics 替代方案
- Alertmanager 集群
下篇预告:26-50 题,涵盖高级查询、故障排查、最佳实践等
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。





