菜单
文档breadcrumb arrow Grafana Mimirbreadcrumb arrow 管理breadcrumb arrow 工具breadcrumb arrow Mimir-continuous-test
开源

Grafana mimir-continuous-test

作为开发者,您可以使用 mimir-continuous-test 工具对运行中的 Grafana Mimir 集群进行冒烟测试。此工具可以识别在开发过程中难以发现的一类 bug。支持两种操作模式:

  • mimir-continuous-test 作为您环境中持续运行的部署,可用于长时间检测运行中的 Grafana Mimir 集群问题。
  • mimir-continuous-test 作为临时的冒烟测试工具,可在对 Grafana Mimir 集群进行配置更改后用于验证基本功能。

下载并运行 mimir-continuous-test

  • 使用 Docker
bash
docker pull "grafana/mimir-continuous-test:latest"
docker run grafana/mimir-continuous-test
  • 使用本地二进制文件

下载适合您操作系统和架构的 mimir 二进制文件,并使其可执行。

对于 AMD64 架构的 Linux,执行以下命令:

bash
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 标志配置的端口:

bash
# 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 时,请使用提供的告警。