{"id":26565583,"url":"https://github.com/engineersbox/database-benchmarking","last_synced_at":"2025-09-10T00:16:37.219Z","repository":{"id":225952572,"uuid":"767277997","full_name":"EngineersBox/database-benchmarking","owner":"EngineersBox","description":"Database Benchmarking Utilities","archived":false,"fork":false,"pushed_at":"2025-02-05T03:52:22.000Z","size":174819,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-22T17:44:51.629Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","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/EngineersBox.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-05T02:08:00.000Z","updated_at":"2025-03-18T12:47:12.000Z","dependencies_parsed_at":"2024-03-25T02:25:03.986Z","dependency_job_id":"45cbfc31-787a-400c-b980-cd088327a35d","html_url":"https://github.com/EngineersBox/database-benchmarking","commit_stats":null,"previous_names":["engineersbox/cassandra-benchmarking","engineersbox/database-benchmarking"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/EngineersBox/database-benchmarking","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2Fdatabase-benchmarking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2Fdatabase-benchmarking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2Fdatabase-benchmarking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2Fdatabase-benchmarking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EngineersBox","download_url":"https://codeload.github.com/EngineersBox/database-benchmarking/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2Fdatabase-benchmarking/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273244306,"owners_count":25070958,"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","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-03-22T17:44:47.105Z","updated_at":"2025-09-02T06:36:48.273Z","avatar_url":"https://github.com/EngineersBox.png","language":"Shell","readme":"# cassandra-benchmarking\n\nCassandra Benchmarking Utilities\n\n## Build\n\n### Cassandra\n\nIn order to create a cassandra image, run the following\n\n```bash\ndocker build -t ghcr.io/engineersbox/cassandra:5.0 -f docker/instance/cassandra.dockerfile .\n```\n\nYou can optionally supply a repo and commit-ish marker to build from:\n\n* `--build-arg=\"REPOSITORY=\u003crepo\u003e\"` defaulting to \u003chttps://github.com/engineersbox/cassandra\u003e\n* `--build-arg=\"COMMIT_ISH=\u003ccommit | branch | tag\u003e\"` defaulting to `cassandra-5.0`\n* `--build-arg=\"UID=\u003ccassandra user uid\u003e\"` defaulting to `1000`\n* `--build-arg=\"GID=\u003ccasasndra group id\u003e\"` defaulting to `1000`\n* `--build-arg=\"OTEL_COLLECTOR_JAR_VERSION=\u003cversion\u003e\"` defaulting to `v2.2.0`\n* `--build-arg=\"OTEL_JMX_JAR_VERSION=\u003cversion\u003e\"` defaulting to `v1.32.0`\n\nThe image can then be pushed to the GitHub container repository\n\n```bash\ndocker push ghcr.io/engineersbox/cassandra:5.0\n```\n\n## OpenTelemetry Collector\n\n```bash\ndocker build -t ghcr.io/engineersbox/otel-collector:latest -f docker/collector/otel.dockerfile .\n```\n\n* `--build-arg=\"OTEL_JMX_JAR_VERSION=\u003cversion\u003e\"` defaulting to `v1.32.0`\n\n```bash\ndocker push ghcr.io/engineersbox/otel-collector:latest\n```\n\n## Startup\n\n### Configuration\n\n1. Ensure you set the values of any templates within the following config files:\n    * `config/otel/otel-collector.properties`\n    * `config/otel/otel-collector-config.yaml`\n    * `config/otel/otel-instance.properties`\n    * `config/otel/otel-instance-config.yaml`\n    * `docker/instance/.env`\n2. Choose any additional appropriate configurations for Cassandra within the `config/cassandra`\ndirectory.\n3. This repo relies on the `vmprobe` utility, so make sure that is installed with your favourite\npackage manager.\n4. Set up the desired keyspace and table mappings for metrics to be collected in `config/otel/jmx/jmx.groovy`\nin the last part of the `__instrumentCassandra()` function.\n5. Ensure you use the `scripts/apply_iptables_rules.sh` script to set up the required port access\nbetween servers if you are using a remote configuration.\n6. Configure the RMI server host in `config/cassandra/cassandra-env.sh` according to the isntructions in \nthe template parameter\n\n### Casandra\n\nStarting cassandra is straightforward, it requires the usage of the following and a parameter\ndenoting whether to remove all data and flush page cache. It can also be supplimented with\nadditional arguments to the `docker run` command.\n\n```bash\nsudo ./scripts/run_cassandra.sh \u003crefresh: y|n\u003e\n```\n\n### OpenTelemetry Collector\n\nSimilarly for the OTEL collector with:\n\n```bash\nsudo ./scripts/run_otel.sh \u003crefresh: y|n\u003e\n```\n\n## Remote Access\n\nDeploying the collector or cassandra on a remote instance will require you to access the services\nby forwarding the relevant port to your local machine via SSH (if it is not publically visible).\n\n```bash\nssh -L \u003cport\u003e:localhost:\u003cport\u003e \u003cremote instance\u003e\n```\n\n## User Permissions\n\nUsing a normal docker configuration (not rootless) is simple to set user permissions for. Make sure\nthat any files and directories mounted into `cassandra` container are owned as `1000:1000` for the\n`uid:gid` bits.\n\n### Rootless Docker\n\nAssuming that you have the container user congiured as `1000:1000` and your user on the host mapped\nas `\u003cuser\u003e:100000:65536` in both `/etc/subuid` and `/etc/subgid`, then you will need ensure that any\ndirectories/files mounted into the container used by the cassandra user are owned by `100999:100999`.\n\nThe reason for this is that the mapping will move any host users from 0 to 100000 up by 100000. As such\na host uid:gid binding of `1000:1000` corresponds to `100999:100999`. To do this, just run the following\nover anything you intend to mount into the Cassandra container:\n\n```bash\nsudo chmod -R 100999:100999 \u003cpath\u003e\n```\n\n## Collector\n\n![OTEL, Loki, Prometheus, Tempo, Grafana](./docs/otel_lgtm.png)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineersbox%2Fdatabase-benchmarking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fengineersbox%2Fdatabase-benchmarking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineersbox%2Fdatabase-benchmarking/lists"}