Prometheus 测验
用于测试你对 Prometheus 理解程度的测验。
- Prometheus 的数据收集方式是什么?
- A) Push-based - 应用程序发送指标
- B) Pull-based - Prometheus 从目标抓取指标
- C) Streaming-based - 实时数据流
- D) Batch-based - 定期文件传输
显示答案
答案:B) Pull-based - Prometheus 从目标抓取指标
解释: Prometheus 是一个 Pull-based 指标收集系统,它会通过 HTTP 定期从目标的 /metrics 端点抓取指标。这种方法的优点是可以集中控制收集目标和间隔,并自动检测目标的可用性。
- 用于计算过去 5 分钟 HTTP 请求速率的正确 PromQL 查询是什么?
- A)
rate(http_requests_total, 5m) - B)
rate(http_requests_total[5m]) - C)
increase(http_requests_total[5m]) - D)
avg(http_requests_total[5m])
- A)
显示答案
答案:B) rate(http_requests_total[5m])
解释:rate() 函数计算 Counter 指标的每秒平均增长速率。范围向量使用方括号 [] 指定时间。increase() 返回总增长量,而 avg() 是一个计算平均值的聚合函数。rate(http_requests_total[5m]) 计算 5 分钟内每秒的请求数。
- Prometheus Operator 中的 ServiceMonitor 的作用是什么?
- A) 部署 Prometheus 服务器
- B) 定义告警规则
- C) 定义要监控的服务和抓取配置
- D) 创建 Grafana 仪表板
显示答案
答案:C) 定义要监控的服务和抓取配置
解释: ServiceMonitor 是 Prometheus Operator 的一个 CRD,用于以声明式方式定义监控 Kubernetes 服务的抓取配置。你可以配置目标 Service 选择器、端点、抓取间隔、标签重标记等。PrometheusRule 处理告警规则,而 Prometheus CRD 处理服务器部署。
- 关于 histogram_quantile 函数,哪个说法是正确的?
- A) 它只能与 Summary 指标一起使用
- B) 它从 Histogram bucket 计算分位数
- C) 它返回精确的分位数值
- D) 它计算 Counter 指标的变化速率
显示答案
答案:B) 它从 Histogram bucket 计算分位数
解释:histogram_quantile() 从 Histogram bucket 数据计算分位数。例如,histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) 计算 p95 延迟。它根据 bucket 边界返回近似值;如需精确分位数,请使用 Summary。
- 以下哪个组件未包含在 kube-prometheus-stack Helm chart 中?
- A) Prometheus Operator
- B) Grafana
- C) VictoriaMetrics
- D) Alertmanager
显示答案
答案:C) VictoriaMetrics
解释: kube-prometheus-stack 是一个 Helm chart,其中包括 Prometheus Operator、Prometheus、Alertmanager、Grafana、kube-state-metrics、node-exporter 等。VictoriaMetrics 是一个独立项目,通过 victoria-metrics-k8s-stack chart 安装。
- Prometheus 中 Remote Write 的主要用途是什么?
- A) 提高本地存储性能
- B) 将数据发送到长期指标存储
- C) 发送实时告警
- D) 同步 Grafana 仪表板
显示答案
答案:B) 将数据发送到长期指标存储
解释: Remote Write 是一项将 Prometheus 收集的指标发送到外部系统(VictoriaMetrics、Mimir、AMP、Cortex 等)的功能。由于 Prometheus 的本地存储在保留期和可扩展性方面存在限制,因此使用 Remote Write 将数据发送到专用存储中进行长期保留。
- PrometheusRule CRD 中
for字段的作用是什么?- A) 设置规则评估间隔
- B) 设置告警触发前条件持续的时间
- C) 设置告警重新发送间隔
- D) 设置指标保留期限
显示答案
答案:B) 设置告警触发前条件持续的时间
解释: PrometheusRule 中的 for 字段设置告警条件满足后、告警实际触发前的等待时间。例如,for: 5m 表示该条件必须持续 5 分钟后才会触发告警。这可防止由短暂峰值导致的不必要告警。
- PromQL 中
predict_linear函数的用途是什么?- A) 计算当前值的绝对值
- B) 基于线性回归预测未来值
- C) 对时间序列数据排序
- D) 转换标签值
显示答案
答案:B) 基于线性回归预测未来值
解释:predict_linear(v range-vector, t scalar) 使用线性回归预测未来值。例如,predict_linear(node_filesystem_avail_bytes[6h], 24*60*60) < 0 可根据当前趋势预测磁盘空间是否会在 24 小时内耗尽。它适用于容量规划和主动告警。
- Alertmanager 的
groupBy设置的作用是什么?- A) 仅向特定组发送告警
- B) 按指定标签对告警分组
- C) 设置告警优先级
- D) 移除重复告警
显示答案
答案:B) 按指定标签对告警分组
解释:groupBy 按指定标签对告警分组,并将其作为单个通知发送。例如,groupBy: ['alertname', 'namespace'] 将具有相同 alertname 和 namespace 的告警分组。这可防止告警风暴,并允许将相关告警一同查看。
- WAL(Write-Ahead Log)在 Prometheus TSDB 中的作用是什么?
- A) 查询缓存
- B) 预写记录以防止数据丢失
- C) 存储告警历史记录
- D) 存储仪表板设置
显示答案
答案:B) 预写记录以防止数据丢失
解释: WAL(Write-Ahead Log)是一种日志,在数据从内存完全写入磁盘块之前按顺序记录数据。即使 Prometheus 异常终止,也可以通过 WAL 恢复数据,以防止数据丢失。这是一种常用于数据库的持久性机制。