Skip to main content

A Locust plugin to extract test results and push metrics to Victoria Metrics

Project description

locust-victoria-metrics

A Locust plugin to extract test results and push metrics to VictoriaMetrics.

PyPI License


📦 Overview

locust-victoria-metrics is a plugin for Locust that captures test metrics such as request statistics, failures, and custom events, then pushes them to VictoriaMetrics, a fast, cost-effective, and scalable time-series database.

This helps you:

  • Collect detailed performance test data over time
  • Build dashboards using Grafana + VictoriaMetrics
  • Analyze trends and regressions across multiple test runs

🚀 Features

  • Push Locust metrics in real-time or at test end
  • Automatic metric formatting for VictoriaMetrics (Prometheus format)
  • Lightweight and easy to plug into existing Locust tests
  • Supports custom metric tags (test name, environment, etc.)

🛠️ Installation

From PyPI

pip install locust-victoria-metrics

From Source

git clone https://github.com/dsetiawan230294/locust-victoria-metrics.git
cd locust-victoria-metrics
pip install .

🧪 Usage

1. Enable the plugin in your Locust script:

from locust import HttpUser, task, between, events, TaskSet
from locust_victoria_metrics.pusher import VictoriaMetricsPusher

# Initialize the plugin (can be done once globally or inside a test runner)
# Place below snippet code at the end of locust script file.
def on_locust_init(environment, **_kwargs):
    metrics_pusher = VictoriaMetricsPusher(
        locust_host= "http://localhost:8089"
        victoria_host="http://your-victoria-metrics-host:8428/api/v1/import/prometheus",
        interval=5,  
        product_name="Transaction" # for filtering in grafana
    )

    def run_exporter():
        while True:
            try:
                exporter.collect()
            except Exception as e:
                logger.error(f"Error in metrics exporter: {e}")
            time.sleep(1)

    from threading import Thread

    Thread(target=run_exporter, daemon=True).start()

events.init.add_listener(on_locust_init)
  • MANDATORY to run the locust script with argument --autostart --autoquit 1

⚙️ Configuration

Parameter Type Description
locust_host str Locust Exposed Endpoint
victoria_host str VictoriaMetrics HTTP API endpoint (Prometheus format)
interval int Push interval in seconds (default: 10)
product_name str Additional tags/labels to include with each metric

📊 Example Metrics Pushed

locust_request_count{method="GET", name="/api/test", status="200", job="loadtest", instance="test-runner-1"} 123
locust_request_failure_count{method="GET", name="/api/test", job="loadtest"} 4
locust_avg_response_time{name="/api/test"} 245.7

These metrics can be visualized in Grafana using VictoriaMetrics as a data source.


📈 Grafana Dashboard

You can build custom dashboards using:

  • locust_request_count
  • locust_request_failure_count
  • locust_avg_response_time
  • locust_users

🧩 Compatibility

  • ✅ Locust 2.29.1+
  • ✅ Python 3.10+
  • ✅ Tested with VictoriaMetrics single-node and cluster setups

🤝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork this repository
  2. Create your feature branch: git checkout -b feature/my-feature
  3. Commit your changes: git commit -am 'Add new feature'
  4. Push to the branch: git push origin feature/my-feature
  5. Open a pull request

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.


👨‍💻 Author

Didit Setiawan
GitHub · Email

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

locust_victoria_metrics-0.0.3.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

locust_victoria_metrics-0.0.3-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file locust_victoria_metrics-0.0.3.tar.gz.

File metadata

  • Download URL: locust_victoria_metrics-0.0.3.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for locust_victoria_metrics-0.0.3.tar.gz
Algorithm Hash digest
SHA256 be7611288b5daf2984429fe0a8f58c15f6c8e1c26feff6268d65995de3ece40d
MD5 3dd47a2ffa576736ae75d1b9b83d5684
BLAKE2b-256 cb8f88140b3adf2cd42e8c230315e6c9ae914cdf7f42c05dd11f9f1a74c476b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for locust_victoria_metrics-0.0.3.tar.gz:

Publisher: release.yml on dsetiawan230294/locust-victoria-metrics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file locust_victoria_metrics-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for locust_victoria_metrics-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 53fdbfcc7ab94d53717b7283731bccfb8e9ed2f3a4d0269c179f072cc1b61496
MD5 79f0022971a0342f6b24c2072bca8f75
BLAKE2b-256 39cf3c8179fecf41fc7d8d7e06765882b22ca5223babedb265d33c554f159389

See more details on using hashes here.

Provenance

The following attestation bundles were made for locust_victoria_metrics-0.0.3-py3-none-any.whl:

Publisher: release.yml on dsetiawan230294/locust-victoria-metrics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page