-
Notifications
You must be signed in to change notification settings - Fork 181
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add k8s_metrics track to benchmark refreshes during indexing (#425)
* Add k8s_metrics track to benchmark refreshes during indexing; aka search after write. * Support refresh_interval as a track parameter * Skip testing k8s_metrics against stateful Elasticsearch
- Loading branch information
Showing
9 changed files
with
2,113 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
# Kubernetes (K8s) Metrics Track | ||
K8s Metrics is a track intended for benchmarking refresh on Elasticsearch using a Kubernetes pod metrics dataset. A small corpus of Kibana object definition documents is included for indexing with fast refresh enabled. | ||
|
||
## Track Parameters | ||
|
||
| Setting | Default | Description | | ||
| --- | --- | --- | | ||
| `bulk_indexing_clients` | `8` | The number of bulk indexing clients. | | ||
| `bulk_refresh` | `unset` | Control the refresh behavior for bulk requests. Valid values are `true`, `wait_for`, `false`, or unset. This parameter is always specified as a string. | | ||
| `bulk_size` | `1000` | The batch size of bulk requests. | | ||
| `fast_refresh_bulk_size` | `1` | The bulk batch size of the fast refresh index. | | ||
| `fast_refresh_clients` | `1` | The number of bulk indexing clients for fast refresh indexing. | | ||
| `fast_refresh_indexing_interval` | `15` | The interval, in seconds, for indexing to the fast refresh index. | | ||
| `ingest_percentage` | `100` | The percentage of the document corpus to index. | | ||
| `manual_refresh_clients` | `1` | The number of clients to use for manual refresh operations. | | ||
| `manual_refresh_interval` | `15` | The interval, in seconds, for issuing manual refresh requests. | | ||
| `number_of_replicas` | `1` | The number of replicas to allocate to the corpus data stream. | | ||
| `number_of_shards` | `1` | The number of shards to allocate to the corpus data stream. | | ||
| `refresh_interval` | `unset` | The target data stream refresh interval; e.g., `5s`. If unset, the Elasticsearch default refresh interval is used. | | ||
|
||
## Challenges | ||
|
||
### `append-no-conflicts-metrics-index-with-refresh` (default) | ||
|
||
Index a metrics document corpus and sets the bulk API `refresh` query parameter. By default, Elasticsearch will perform refreshes asynchronously. This challenge is intended to capture refresh latency and the indexing throughput impact of refreshes during bulk indexing. This challenge can be executed against both stateful and serverless Elasticsearch. | ||
|
||
#### Parameters | ||
|
||
* `bulk_indexing_clients` (default: `8`) | ||
* `bulk_refresh` (default: `"true"`) | ||
* `ingest_percentage` (default: `100`) | ||
* `number_of_replicas` (default: `1`) | ||
* `number_of_shards` (default: `1`) | ||
|
||
### `append-no-conflicts-metrics-index-with-intermittent-refresh` | ||
|
||
Index a metrics document corpus while performing intermittent manual refreshes of the target data stream at the specified interval. This challenge is intended to capture refresh latency and the indexing throughput impact of refreshes. This challenge can be executed against both stateful and serverless Elasticsearch. | ||
|
||
#### Parameters | ||
|
||
* `bulk_indexing_clients` (default: `8`) | ||
* `ingest_percentage` (default: `100`) | ||
* `manual_refresh_clients` (default: `1`) | ||
* `manual_refresh_interval` (default: `15`) | ||
* `number_of_replicas` (default: `1`) | ||
* `number_of_shards` (default: `1`) | ||
* `refresh_interval` (defaulit: `unset`) | ||
|
||
### `append-no-conflicts-metrics-index-only` | ||
|
||
Index a metrics document corpus. This challenge can be used as a baseline when comparing benchmarking results with other refresh-oriented track challenges. This challenge can be executed against both stateful and serverless Elasticsearch. | ||
|
||
#### Parameters | ||
|
||
* `bulk_indexing_clients` (default: `8`) | ||
* `ingest_percentage` (default: `100`) | ||
* `number_of_replicas` (default: `1`) | ||
* `number_of_shards` (default: `1`) | ||
* `refresh_interval` (defaulit: `unset`) | ||
|
||
### `append-no-conflicts-metrics-with-fast-refresh` | ||
|
||
Index a metrics document corpus while indexing a small Kibana corpus to a separate fast refresh index. This challange simulates indexing to a smaller index with fast refresh enabled while concurrently bulk indexing to a larger data stream. The race ends once all fast refresh documents have been indexed. Test mode is not supported and will result in an error since the fast refresh corpus contains less than 1000 documents. This challenge can be executed against serverless Elasticsearch. | ||
|
||
#### Parameters | ||
|
||
* `bulk_indexing_clients` (default: `8`) | ||
* `ingest_percentage` (default: `100`) | ||
* `fast_refresh_clients` (default: `1`) | ||
* `fast_refresh_indexing_interval` (default: `30`) | ||
* `number_of_replicas` (default: `1`) | ||
* `number_of_shards` (default: `1`) | ||
* `refresh_interval` (defaulit: `unset`) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,252 @@ | ||
{ | ||
"name": "append-no-conflicts-metrics-index-with-refresh", | ||
"description": "Index a metrics document corpus with control over refresh behavior.", | ||
"default": true, | ||
"schedule": [ | ||
{ | ||
"name": "delete-data-streams", | ||
"operation": { | ||
"operation-type": "delete-data-stream" | ||
} | ||
}, | ||
{ | ||
"name": "delete-track-composable-templates", | ||
"operation": { | ||
"operation-type": "delete-composable-template", | ||
"template": "metrics-kubernetes.pod-template" | ||
} | ||
}, | ||
{ | ||
"name": "delete-track-component-templates", | ||
"operation": { | ||
"operation-type": "delete-component-template" | ||
} | ||
}, | ||
{ | ||
"name": "create-track-component-templates", | ||
"operation": { | ||
"operation-type": "create-component-template" | ||
} | ||
}, | ||
{ | ||
"name": "create-track-composable-templates", | ||
"operation": { | ||
"operation-type": "create-composable-template" | ||
} | ||
}, | ||
{ | ||
"operation": "create-metrics-datastream" | ||
}, | ||
{ | ||
"name": "check-cluster-health", | ||
"operation": { | ||
"operation-type": "cluster-health", | ||
"request-params": { | ||
"wait_for_status": "{{cluster_health | default('green')}}", | ||
"wait_for_no_relocating_shards": "true" | ||
}, | ||
"retry-until-success": true | ||
} | ||
}, | ||
{ | ||
"operation": "bulk-index-metrics-with-refresh", | ||
"clients": {{bulk_indexing_clients | default(8)}} | ||
} | ||
] | ||
}, | ||
{ | ||
"name": "append-no-conflicts-metrics-index-with-intermittent-refresh", | ||
"description": "Index a metrics document corpus while performing intermittent refreshes of the target data stream.", | ||
"schedule": [ | ||
{ | ||
"name": "delete-data-streams", | ||
"operation": { | ||
"operation-type": "delete-data-stream" | ||
} | ||
}, | ||
{ | ||
"name": "delete-track-composable-templates", | ||
"operation": { | ||
"operation-type": "delete-composable-template", | ||
"template": "metrics-kubernetes.pod-template" | ||
} | ||
}, | ||
{ | ||
"name": "delete-track-component-templates", | ||
"operation": { | ||
"operation-type": "delete-component-template" | ||
} | ||
}, | ||
{ | ||
"name": "create-track-component-templates", | ||
"operation": { | ||
"operation-type": "create-component-template" | ||
} | ||
}, | ||
{ | ||
"name": "create-track-composable-templates", | ||
"operation": { | ||
"operation-type": "create-composable-template" | ||
} | ||
}, | ||
{ | ||
"operation": "create-metrics-datastream" | ||
}, | ||
{ | ||
"name": "check-cluster-health", | ||
"operation": { | ||
"operation-type": "cluster-health", | ||
"request-params": { | ||
"wait_for_status": "{{cluster_health | default('green')}}", | ||
"wait_for_no_relocating_shards": "true" | ||
}, | ||
"retry-until-success": true | ||
} | ||
}, | ||
{ | ||
"parallel": { | ||
"completed-by": "bulk-index-metrics", | ||
"tasks": [ | ||
{ | ||
"operation": "bulk-index-metrics", | ||
"clients": {{bulk_indexing_clients | default(8)}} | ||
}, | ||
{ | ||
"operation": "intermittent-manual-refresh", | ||
"clients": {{manual_refresh_clients | default(1)}}, | ||
"target-interval": {{manual_refresh_interval | default(15)}} | ||
} | ||
] | ||
} | ||
} | ||
] | ||
}, | ||
{ | ||
"name": "append-no-conflicts-metrics-index-only", | ||
"description": "Index a metrics document corpus.", | ||
"schedule": [ | ||
{ | ||
"name": "delete-data-streams", | ||
"operation": { | ||
"operation-type": "delete-data-stream" | ||
} | ||
}, | ||
{ | ||
"name": "delete-track-composable-templates", | ||
"operation": { | ||
"operation-type": "delete-composable-template", | ||
"template": "metrics-kubernetes.pod-template" | ||
} | ||
}, | ||
{ | ||
"name": "delete-track-component-templates", | ||
"operation": { | ||
"operation-type": "delete-component-template" | ||
} | ||
}, | ||
{ | ||
"name": "create-track-component-templates", | ||
"operation": { | ||
"operation-type": "create-component-template" | ||
} | ||
}, | ||
{ | ||
"name": "create-track-composable-templates", | ||
"operation": { | ||
"operation-type": "create-composable-template" | ||
} | ||
}, | ||
{ | ||
"operation": "create-metrics-datastream" | ||
}, | ||
{ | ||
"name": "check-cluster-health", | ||
"operation": { | ||
"operation-type": "cluster-health", | ||
"request-params": { | ||
"wait_for_status": "{{cluster_health | default('green')}}", | ||
"wait_for_no_relocating_shards": "true" | ||
}, | ||
"retry-until-success": true | ||
} | ||
}, | ||
{ | ||
"operation": "bulk-index-metrics", | ||
"clients": {{bulk_indexing_clients | default(8)}} | ||
} | ||
] | ||
}, | ||
{ | ||
"name": "append-no-conflicts-metrics-with-fast-refresh", | ||
"description": "Index a metrics document corpus while indexing a small Kibana corpus to a separate fast refresh index.", | ||
"schedule": [ | ||
{ | ||
"name": "delete-data-streams", | ||
"operation": { | ||
"operation-type": "delete-data-stream" | ||
} | ||
}, | ||
{ | ||
"name": "delete-track-composable-templates", | ||
"operation": { | ||
"operation-type": "delete-composable-template", | ||
"template": "metrics-kubernetes.pod-template" | ||
} | ||
}, | ||
{ | ||
"name": "delete-fast-refresh-templates", | ||
"operation": { | ||
"operation-type": "delete-composable-template", | ||
"template": "k8s_metrics-template" | ||
} | ||
}, | ||
{ | ||
"name": "delete-track-component-templates", | ||
"operation": { | ||
"operation-type": "delete-component-template" | ||
} | ||
}, | ||
{ | ||
"name": "create-track-component-templates", | ||
"operation": { | ||
"operation-type": "create-component-template" | ||
} | ||
}, | ||
{ | ||
"name": "create-track-composable-templates", | ||
"operation": { | ||
"operation-type": "create-composable-template" | ||
} | ||
}, | ||
{ | ||
"operation": "create-metrics-datastream" | ||
}, | ||
{ | ||
"name": "check-cluster-health", | ||
"operation": { | ||
"operation-type": "cluster-health", | ||
"request-params": { | ||
"wait_for_status": "{{cluster_health | default('green')}}", | ||
"wait_for_no_relocating_shards": "true" | ||
}, | ||
"retry-until-success": true | ||
} | ||
}, | ||
{ | ||
"parallel": { | ||
"completed-by": "fast-refresh-index", | ||
"tasks": [ | ||
{ | ||
"operation": "bulk-index-metrics", | ||
"clients": {{bulk_indexing_clients | default(8)}} | ||
}, | ||
{ | ||
"operation": "fast-refresh-index", | ||
"clients": {{fast_refresh_clients | default(1)}}, | ||
"target-interval": {{fast_refresh_indexing_interval | default(30)}} | ||
} | ||
] | ||
} | ||
} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
{ | ||
"name": "create-metrics-datastream", | ||
"operation-type": "create-data-stream", | ||
"data-stream": "metrics-kubernetes.pod-rally" | ||
}, | ||
{ | ||
"name": "bulk-index-metrics", | ||
"operation-type": "bulk", | ||
"bulk-size": {{bulk_size | default(1000)}}, | ||
"corpora": "kubernetes-pod-metrics", | ||
"ingest-percentage": {{ingest_percentage | default(100)}} | ||
}, | ||
{ | ||
"name": "bulk-index-metrics-with-refresh", | ||
"operation-type": "bulk", | ||
"bulk-size": {{bulk_size | default(1000)}}, | ||
"corpora": "kubernetes-pod-metrics", | ||
"ingest-percentage": {{ingest_percentage | default(100)}}, | ||
"refresh": "{{bulk_refresh | default('true')}}" | ||
}, | ||
{ | ||
"name": "fast-refresh-index", | ||
"operation-type": "bulk", | ||
"bulk-size": {{fast_refresh_bulk_size | default(1)}}, | ||
"corpora": "k8s-integration", | ||
"include-in-reporting": true | ||
}, | ||
{ | ||
"name": "intermittent-manual-refresh", | ||
"operation-type": "refresh", | ||
"index": "metrics-kubernetes.pod-rally", | ||
"include-in-reporting": true | ||
} |
Oops, something went wrong.