{"id":31767747,"url":"https://github.com/devetek/loadtest-simulator","last_synced_at":"2026-05-01T21:33:50.642Z","repository":{"id":305456649,"uuid":"253559862","full_name":"devetek/loadtest-simulator","owner":"devetek","description":"Loadtest simulation with locust, grafana and prometheus","archived":false,"fork":false,"pushed_at":"2025-09-26T09:31:12.000Z","size":10999,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-09T01:29:01.496Z","etag":null,"topics":["access-logs","docker","docker-compose","exporter","grafana-dashboard","locustio","prometheus","prometheus-exporter","python3"],"latest_commit_sha":null,"homepage":"https://cloud.terpusat.com/","language":"Python","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/devetek.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,"zenodo":null}},"created_at":"2020-04-06T16:49:10.000Z","updated_at":"2025-09-26T09:31:16.000Z","dependencies_parsed_at":"2025-07-20T08:51:12.622Z","dependency_job_id":"d22c148d-f740-4ab4-a22b-f83496da543a","html_url":"https://github.com/devetek/loadtest-simulator","commit_stats":null,"previous_names":["devetek/loadtest-simulator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devetek/loadtest-simulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devetek%2Floadtest-simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devetek%2Floadtest-simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devetek%2Floadtest-simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devetek%2Floadtest-simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devetek","download_url":"https://codeload.github.com/devetek/loadtest-simulator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devetek%2Floadtest-simulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32513732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"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":["access-logs","docker","docker-compose","exporter","grafana-dashboard","locustio","prometheus","prometheus-exporter","python3"],"created_at":"2025-10-10T01:20:15.870Z","updated_at":"2026-05-01T21:33:50.624Z","avatar_url":"https://github.com/devetek.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# How To Use\n\n### Before Start\n\nFor mac OS, please install python3, virtualenv, docker, docker-compose. You can follow link below before start:\n- [python3 and virtualenv](https://gist.github.com/pandafulmanda/730a9355e088a9970b18275cb9eadef3)\n- [Docker](https://docs.docker.com/docker-for-mac/install/)\n- [Docker-Compose](https://docs.docker.com/compose/install/)\n\n\n### How To Develop Your Own\n\nCreate file under `attacker/task`, for example `example.py`. Then create data in `attacker/data`, for example create `example.py`. After 2 files created, then edit file task you created previously `attacker/task/example.py`, then import your data `from data.example import STATIC_DATA`.\n\nAfter attacker created, please create service exporter config here `nginx/access-log-exporter/example.yml`. Edit the file base on your service/path requirements.\n\n### Running All Requirements\n\nExecute command below to start all requirement services, for example if you want to start `example`:\n\n```sh\nmake run-dev SERVICE=example\n```\n\nAfter execute command above you will have port open in `9090`, `9100`, `9093`, `8080`, `3000`, `80`, `4040`. So make sure that, the port does not open before this service up. And oh, I think you want to know, why we need open too much port. It will be amazing to have all of those service, trust me!.\n\nRemember that, all of the port can be open in `localhost`, for example [Grafana](http://localhost:3000). With user (admin) and password (foobar) You know all of the basic now, then, we can continue to the next phase, below!.\n\n\n### Running Attacker\n\nAfter all require services up, you need to boot the attacker with command below:\n\n```sh\nmake prepare-attack\nmake attack-me SERVICE=example\n```\n\n`make prepare-attack` used to setup virtual environment for your python. It will isolate the python module for this project from globals.\n\nThe tools to help you make a load test to the service and make the grafana dashboard looks alive. After execute command above, you'll be have awesome locust dashboard under `http://*:8089`. Open the [locust dashboard](http://localhost:8089) and input some data to make load test to the service.\n\n\n### How To Debug\n\nAfter services and attacker up, it will create some important file to help you investigate when facing issue. Focus on the folder `log`, there are have some files which can help you to debug when facing issue/error.\n\n- log/access-log-exporter/access-log-exporter.log (if rps does not appears in grafana)\n- log/nginx/access.log (nginx access log)\n- log/nginx/error.log (if nginx got issue)\n- log/supervisor (supervisor/manager log)\n\n\n### How To Create Dashboard From File\n\nBefore start all of the service, you can create your own dashboad from provisioning folder `grafana/provisioning/dashboards`. Create your own json, or just copy paste from the existing and edit some related data, you know what I mean la....\n\nOr if you want to create your ownn dashboard from scratch, just try use this simple query to collecting the rps:\n\n```sh\nsum(rate(example_http_response_count_total[5m]))\n```\n\n### Show Output\n\n#### Locust\n![load-test-locust](docs/assets/locust-loadtest.png)\n\n#### Grafana\n![grafana-dashboard](docs/assets/grafana-dashboard.png)\n\n### Contact When Have Problem\n\nIf you facing issue when running this service, visit me at [dPanel](https://cloud.terpusat.com)\n\n\n### References\n- [Prometheus](https://prometheus.io/docs/introduction/overview/)\n- [Locust](https://docs.locust.io/en/stable/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevetek%2Floadtest-simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevetek%2Floadtest-simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevetek%2Floadtest-simulator/lists"}