{"id":27933467,"url":"https://github.com/timescale/promscale-benchmark","last_synced_at":"2025-10-25T14:13:24.427Z","repository":{"id":62530094,"uuid":"540140176","full_name":"timescale/promscale-benchmark","owner":"timescale","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-06T12:09:23.000Z","size":639,"stargazers_count":9,"open_issues_count":4,"forks_count":5,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-05-07T04:58:53.435Z","etag":null,"topics":["benchmark","metrics","observability","promscale","tracing"],"latest_commit_sha":null,"homepage":"https://www.timescale.com/promscale/","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timescale.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null}},"created_at":"2022-09-22T19:32:22.000Z","updated_at":"2024-12-03T08:45:19.000Z","dependencies_parsed_at":"2023-02-06T01:10:12.366Z","dependency_job_id":null,"html_url":"https://github.com/timescale/promscale-benchmark","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timescale%2Fpromscale-benchmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timescale%2Fpromscale-benchmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timescale%2Fpromscale-benchmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timescale%2Fpromscale-benchmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timescale","download_url":"https://codeload.github.com/timescale/promscale-benchmark/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252816948,"owners_count":21808704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmark","metrics","observability","promscale","tracing"],"created_at":"2025-05-07T04:58:57.765Z","updated_at":"2025-10-25T14:13:19.388Z","avatar_url":"https://github.com/timescale.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Promscale-Benchmark\n\nThis repository will contain resources that will be used to benchmark\n[Promscale](https://github.com/timescale/promscale) using [Avalanche](https://github.com/prometheus-community/avalanche).\nFor now this will focus on utilizing [tobs](https://github.com/timescale/tobs)\nHelm chart to install to a K8s cluster. At this moment we are only using this\nto test ingestion of Prometheus data into Promscale using the `remote-write`\nendpoint in Promscale.\n\n- [Promscale-Benchmark](#promscale-benchmark)\n  - [Prerequisites](#prerequisites)\n  - [Stack Setup](#stack-setup)\n    - [Cluster provisioning](#cluster-provisioning)\n      - [Local](#local)\n      - [Amazon EKS](#amazon-eks)\n    - [Stack installation](#stack-installation)\n    - [Updating](#updating)\n    - [Pod placement](#pod-placement)\n  - [Benchmark scenarios](#benchmark-scenarios)\n    - [Available scenarios](#available-scenarios)\n    - [Run a scenario](#run-a-scenario)\n    - [Configure scenario](#configure-scenario)\n  - [Grafana](#grafana)\n\n## Prerequisites\n\nTo run this benchmark you will need to have at least the following tools installed.\n\n* [docker](https://www.docker.com/) - For local testing only\n* [kind](https://kind.sigs.k8s.io/) - For local testing only\n* [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)\n* [helm](https://helm.sh)\n* [make](https://www.gnu.org/software/make/)\n\n## Stack Setup\n\nIn this repo we have a local Helm chart that can be used to install and manage\nboth tobs and Avalanche configurations into a Kubernetes Cluster.\n\nThe helm chart can be used on any Kubernetes cluster.\n\n### Cluster provisioning\n\n#### Local\n\nStart a local kind cluster and install [cert-manager](https://cert-manager.io/)\n\n```shell\nmake start-kind\n```\n\nVerify that you have access to the local cluster\n\n```shell\nkubectl get nodes\n```\n\n#### Amazon EKS\n\nGo to [docs/eks.md](docs/eks.md) for instructions on how to provision and manage an EKS cluster.\n\n### Stack installation\n\nWe are using Helm to install the latest tobs stack with `values.yaml` pre-configured for\nthe benchmark environment.\n\nThe default installation will install tobs in `bench` namespace and can be executed with:\n\n```shell\nmake stack\n```\n\nTo check if the stack was installed correctly you can run:\n\n```shell\nkubectl get po -n bench\n\nNAME                                                         READY   STATUS      RESTARTS        AGE\nopentelemetry-operator-controller-manager-7b69d9856f-8nhcm   2/2     Running     0               3m40s\nprometheus-tobs-kube-prometheus-stack-prometheus-0           2/2     Running     0               3m26s\ntobs-connection-secret-9m45w                                 0/1     Completed   0               3m40s\ntobs-grafana-6c545d5fc8-7hr9k                                3/3     Running     0               3m40s\ntobs-kube-prometheus-stack-operator-75985bb949-x2bxv         1/1     Running     0               3m40s\ntobs-kube-state-metrics-5cfc875576-9pp5b                     1/1     Running     0               3m40s\ntobs-opentelemetry-collector-6869598c59-tbncl                1/1     Running     0               107s\ntobs-prometheus-node-exporter-hc6s6                          1/1     Running     0               3m40s\ntobs-promscale-57855f5c46-zn562                              1/1     Running     4 (2m54s ago)   3m40s\ntobs-timescaledb-0                                           2/2     Running     0               3m40s\n```\n\nBy default Promscale is setup to send traces to Jaeger, if you wish to view those\ntraces you can run:\n\n```shell\nmake jaeger\n```\n\nTo open the Jaeger UI run `make jaeger-ui` and open a browser to [http://localhost:16686](http://localhost:16686)\n\n### Updating\n\nIf you want to modify the default stack installation (ex. to change promscale image version) you\ncan edit the `stack/values.yaml` file and run:\n\n```\nmake stack\n```\n\n### Pod placement\n\nTo ensure that pods are placed on nodes we want them to be on we are offering methods described in [docs/pod-placement.md](docs/pod-placement.md).\n\n## Benchmark scenarios\n\n### Available scenarios\n\nTo check the available scenarios explore the `scenarios` directory.\n\n### Run a scenario\n\nTo quickly execute a benchmark scenario you can run:\n\n```shell\nmake scenarios/\u003cTYPE\u003e/\u003cNAME\u003e\n```\n\nWhere `\u003cTYPE\u003e` is the type of scenario you want to run and `\u003cNAME\u003e` is the name of the scenario.\n\nFor example:\n```\nmake scenarios/metrics/ingest-direct\n```\n\nThis will run the load-generator from the `ingest-direct` scenario in the `metrics` type.\n\n_Note: Keep in mind that by default all scenarios are deployed in separate namespaces._\n\nAlternatively you can go to the scenario directory and run `make` command.\n\n### Configure scenario\n\nTo configure a scenario follow its instructions in the dedicated `README.md` file. You can find\nthe file in scenario directory.\n\n## Grafana\n\nYou can easily log into Grafana and view Dashboards with a simple command:\n\n```shell\nmake grafana\n```\n\nOnce ran you can log into Grafana locally with [http://localhost:8080](https://localhost:8080).\n\n_Note: By default grafana is configured with anonymous access which doesn't require a password._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimescale%2Fpromscale-benchmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimescale%2Fpromscale-benchmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimescale%2Fpromscale-benchmark/lists"}