Grafana mimir-continuous-test
作为开发者,您可以使用 mimir-continuous-test 工具对运行中的 Grafana Mimir 集群进行冒烟测试。此工具可以识别在开发过程中难以发现的一类 bug。支持两种操作模式:
- mimir-continuous-test 作为您环境中持续运行的部署,可用于长时间检测运行中的 Grafana Mimir 集群问题。
- mimir-continuous-test 作为临时的冒烟测试工具,可在对 Grafana Mimir 集群进行配置更改后用于验证基本功能。
下载并运行 mimir-continuous-test
- 使用 Docker
docker pull "grafana/mimir-continuous-test:latest"
docker run grafana/mimir-continuous-test
- 使用本地二进制文件
下载适合您操作系统和架构的 mimir 二进制文件,并使其可执行。
对于 AMD64 架构的 Linux,执行以下命令:
curl -Lo mimir https://github.com/grafana/mimir/releases/latest/download/mimir-linux-amd64
chmod +x mimir
mimir -target=continuous-test
注意
独立的 mimir-continuous-test 二进制文件 已弃用。
配置 mimir-continuous-test
Mimir-continuous-test 需要后端 Grafana Mimir 集群的端点以及用于写入和查询测试指标的身份验证
- 设置
-tests.write-endpoint
为写入路径的基础端点。移除 URL 末尾的斜杠。该工具会将特定的 API 路径附加到 URL,例如用于 remote-write API 的/api/v1/push
。 - 设置
-tests.read-endpoint
为读取路径的基础端点。移除 URL 末尾的斜杠。该工具会将特定的 API 路径附加到 URL,例如用于 range-query API 的/api/v1/query_range
。 - 设置用于在测试中写入和读取指标的身份验证方式。优先级顺序如下:
-tests.bearer-token
用于 bearer token 身份验证。-tests.basic-auth-user
和-tests.basic-auth-password
用于 basic 身份验证。-tests.tenant-id
设置为租户 ID,默认为anonymous
。
- 设置
-tests.smoke-test
以运行一次测试并立即退出。在此模式下,测试失败时进程退出代码非零。
注意
您可以运行
mimir -help
列出所有可用的配置选项。mimir-continuous-test 的所有配置选项都以tests
开头。
工作原理
Mimir-continuous-test 定期运行一组测试,将数据写入 Mimir,查询回该数据,并检查查询结果是否符合预期。该工具暴露指标,您可以使用这些指标来告警测试失败,并且该工具会记录失败测试的详细信息。
导出的指标
Mimir-continuous-test 在 /metrics
端点暴露以下 Prometheus 指标,该端点监听您通过 -server.metrics-port
标志配置的端口:
# HELP mimir_continuous_test_writes_total Total number of attempted write requests.
# TYPE mimir_continuous_test_writes_total counter
mimir_continuous_test_writes_total{test="<name>"}
{test="<name>"}
# HELP mimir_continuous_test_writes_failed_total Total number of failed write requests.
# TYPE mimir_continuous_test_writes_failed_total counter
mimir_continuous_test_writes_failed_total{test="<name>",status_code="<code>"}
# HELP mimir_continuous_test_writes_request_duration_seconds Duration of the requests
# TYPE mimir_continuous_test_writes_request_duration_seconds histogram
mimir_continuous_test_writes_request_duration_seconds_bucket{test="<name>",le="0.001"}
mimir_continuous_test_writes_request_duration_seconds_bucket{test="<name>",le="0.004"}
mimir_continuous_test_writes_request_duration_seconds_bucket{test="<name>",le="0.016"}
mimir_continuous_test_writes_request_duration_seconds_bucket{test="<name>",le="0.064"}
mimir_continuous_test_writes_request_duration_seconds_bucket{test="<name>",le="0.256"}
mimir_continuous_test_writes_request_duration_seconds_bucket{test="<name>",le="1.024"}
mimir_continuous_test_writes_request_duration_seconds_bucket{test="<name>",le="+Inf"}
mimir_continuous_test_writes_request_duration_seconds_sum{test="<name>"}
mimir_continuous_test_writes_request_duration_seconds_count{test="<name>"}
# HELP mimir_continuous_test_queries_total Total number of attempted query requests.
# TYPE mimir_continuous_test_queries_total counter
mimir_continuous_test_queries_total{test="<name>"}
# HELP mimir_continuous_test_queries_failed_total Total number of failed query requests.
# TYPE mimir_continuous_test_queries_failed_total counter
mimir_continuous_test_queries_failed_total{test="<name>"}
# HELP mimir_continuous_test_query_result_checks_total Total number of query results checked for correctness.
# TYPE mimir_continuous_test_query_result_checks_total counter
mimir_continuous_test_query_result_checks_total{test="<name>"}
# HELP mimir_continuous_test_query_result_checks_failed_total Total number of query results failed when checking for correctness.
# TYPE mimir_continuous_test_query_result_checks_failed_total counter
mimir_continuous_test_query_result_checks_failed_total{test="<name>"}
# HELP mimir_continuous_test_queries_request_duration_seconds Duration of the requests
# TYPE mimir_continuous_test_queries_request_duration_seconds histogram
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="false",test="<name>",le="0.001"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="false",test="<name>",le="0.004"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="false",test="<name>",le="0.016"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="false",test="<name>",le="0.064"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="false",test="<name>",le="0.256"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="false",test="<name>",le="1.024"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="false",test="<name>",le="+Inf"}
mimir_continuous_test_queries_request_duration_seconds_sum{results_cache="false",test="<name>"}
mimir_continuous_test_queries_request_duration_seconds_count{results_cache="false",test="<name>"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="true",test="<name>",le="0.001"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="true",test="<name>",le="0.004"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="true",test="<name>",le="0.016"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="true",test="<name>",le="0.064"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="true",test="<name>",le="0.256"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="true",test="<name>",le="1.024"}
mimir_continuous_test_queries_request_duration_seconds_bucket{results_cache="true",test="<name>",le="+Inf"}
mimir_continuous_test_queries_request_duration_seconds_sum{results_cache="true",test="<name>"}
mimir_continuous_test_queries_request_duration_seconds_count{results_cache="true",test="<name>"}
告警
Grafana Mimir 告警 包括对 mimir-continuous-test 跟踪的失败的检查。运行 mimir-continuous-test 时,请使用提供的告警。