Skip to content

Cilium Service Mesh 可观测性测验

本测验检验你对 Hubble、指标收集、服务地图、Golden Signals 监控和 OpenTelemetry 集成的理解。

测验题目

1. 以下哪项不是 Hubble 的主要组件?

A. Hubble Observer B. Hubble Relay C. Hubble Router D. Hubble UI

显示答案

答案:C. Hubble Router

解释: Hubble 的主要组件包括 Hubble Observer(嵌入在 Cilium Agent 中)、Hubble Relay(集群范围的流量聚合)、Hubble UI(可视化仪表板)和 Hubble CLI(命令行界面)。Hubble Router 不是现有组件。

2. 在 Hubble CLI 中,哪个命令可仅筛选和观察 HTTP 流量?

A. hubble observe --type http B. hubble observe --protocol http C. hubble observe --filter http D. hubble observe --layer http

显示答案

答案:B. hubble observe --protocol http

解释:hubble observe --protocol http 命令仅筛选 HTTP 协议流量。其他协议(tcp、dns 等)也可以用相同方式筛选。

3. 要在 Prometheus 中收集 Hubble 指标,需要在 values.yaml 中启用哪个设置?

A. hubble.prometheus.enabled: true B. hubble.metrics.enabled C. hubble.export.prometheus: true D. prometheus.hubble: true

显示答案

答案:B. hubble.metrics.enabled

解释: 要启用 Hubble 指标,请在 hubble.metrics.enabled 下以列表形式指定要收集的指标类型(dns、drop、tcp、flow、http 等)。此外,设置 serviceMonitor.enabled: true 可让 Prometheus Operator 自动抓取。

4. 以下哪项不是监控中的四个 Golden Signals 之一?

A. Latency B. Traffic C. Availability D. Saturation

显示答案

答案:C. Availability

解释: Google SRE 定义的四个 Golden Signals 是 Latency、Traffic、Errors 和 Saturation。Availability 不包含在 Golden Signals 中,而是通过 Errors 指标间接衡量。

5. 在 Hubble 中观察被策略拒绝的流量,正确的命令是什么?

A. hubble observe --denied B. hubble observe --verdict DROPPED C. hubble observe --blocked D. hubble observe --policy-denied

显示答案

答案:B. hubble observe --verdict DROPPED

解释:--verdict DROPPED 选项会筛选被网络策略拒绝的流量。相反,--verdict FORWARDED 显示被允许的流量。

6. 在 PromQL 查询中,使用哪个函数来衡量 HTTP P99 延迟?

A. avg() B. histogram_quantile() C. rate() D. sum()

显示答案

答案:B. histogram_quantile()

解释: P99 延迟等百分位指标使用 histogram_quantile() 函数。例如:histogram_quantile(0.99, rate(hubble_http_request_duration_seconds_bucket[5m]))。其中,0.99 表示第 99 个百分位。

7. 以下哪项不是 Hubble UI 提供的主要功能?

A. Service Map B. Flow Timeline C. Auto Scaling D. Namespace Filter

显示答案

答案:C. Auto Scaling

解释: Hubble UI 提供服务地图、流量时间线、Namespace 筛选、判定筛选以及单个流量的 L7 详情。Auto Scaling 是工作负载管理功能,而不是可观测性功能。

8. 在 Cilium 中,计算 HTTP 错误率的 PromQL 查询的正确形式是什么?

A. hubble_http_errors_total / hubble_http_requests_total B. sum(rate(hubble_http_responses_total{status=~"5.."}[5m])) / sum(rate(hubble_http_responses_total[5m])) C. count(hubble_http_errors) / count(hubble_http_requests) D. hubble_http_error_rate

显示答案

答案:B. sum(rate(hubble_http_responses_total{status=~"5.."}[5m])) / sum(rate(hubble_http_responses_total[5m]))

解释: HTTP 错误率的计算方式是将 5xx 响应数量除以总响应数量。rate() 函数计算每秒速率,status 标签筛选器(status=~"5..")仅选择服务器错误。

9. 在 Hubble 中,仅观察发往特定服务的流量时使用哪个选项?

A. --destination-service B. --to-service C. --target-service D. --svc

显示答案

答案:B. --to-service

解释:hubble observe --to-service <service-name> 命令会筛选发往特定服务的流量。相反,--from-service 会筛选源自特定服务的流量。

10. 在 Cilium 中,哪个指标监控连接跟踪表利用率?

A. cilium_ct_usage B. cilium_datapath_conntrack_active C. cilium_connections_total D. cilium_ct_table_size

显示答案

答案:B. cilium_datapath_conntrack_active

解释: cilium_datapath_conntrack_active 指标表示当前活跃连接数。它可与 cilium_datapath_conntrack_max 一起使用,以计算连接跟踪表利用率。

11. 使用哪个选项可接收 JSON 格式的 Hubble 输出?

A. --format json B. -o json C. --json D. --output-type json

显示答案

答案:B. -o json

解释:hubble observe -o json 命令以 JSON 格式输出。这对于通过管道传递给 jq 等工具进行进一步处理很有用。

12. 将 OpenTelemetry Collector 与 Hubble 集成时使用什么协议?

A. HTTP REST API B. OTLP (OpenTelemetry Protocol) C. Prometheus Remote Write D. StatsD

显示答案

答案:B. OTLP (OpenTelemetry Protocol)

解释: Hubble 可使用 OpenTelemetry Protocol (OTLP) 将流量数据导出到 OpenTelemetry Collector。这允许将数据路由到 Jaeger、Prometheus、Loki 等各种后端。