La fonction prometheus_metrics intégrée à la bibliothèque mock-jutsu est un outil indispensable pour les ingénieurs DevOps et les développeurs souhaitant simuler des environnements de monitoring réalistes. En générant des données fictives au format texte standard d'exposition Prometheus, cette fonctionnalité permet de reproduire fidèlement le comportement d'un exportateur de métriques sans nécessiter d'infrastructure complexe ou d'agents actifs. Elle produit une sortie structurée comprenant les métadonnées essentielles telles que les en-têtes HELP et TYPE, garantissant une compatibilité totale avec les collecteurs de données et les outils de visualisation comme Grafana.
Sur le plan technique, prometheus_metrics respecte scrupuleusement la norme d'exposition textuelle utilisée par l'écosystème Prometheus. La fonction simule une variété de métriques critiques, notamment l'utilisation des ressources système comme le processeur (process_cpu_seconds_total) et la mémoire vive, ainsi que des statistiques détaillées sur le runtime Go. Pour les services applicatifs, elle génère des compteurs HTTP (http_requests_total) incluant des étiquettes précises pour les méthodes, les chemins d'accès et les codes de statut. Elle intègre également des histogrammes complexes avec des seaux monotones (buckets) et une gestion rigoureuse de la borne supérieure positive infinie, offrant ainsi une base solide pour le calcul de centiles ou de latences moyennes lors de vos simulations.
L'utilisation de ces données de test s'avère cruciale lors de la phase de conception de tableaux de bord ou de la configuration de règles d'alerte. Plutôt que d'attendre que des incidents réels surviennent en production, les développeurs peuvent utiliser mock-jutsu pour injecter des variations de charge ou des pics d'erreurs HTTP simulés. Cela permet de valider la logique des requêtes PromQL et de s'assurer que les seuils de notification sont correctement calibrés. C'est une solution idéale pour tester la robustesse des systèmes d'observabilité de manière isolée, prévisible et entièrement reproductible.
L'intégration de prometheus_metrics est pensée pour la flexibilité. Que ce soit via l'interface en ligne de commande pour des tests unitaires rapides, via l'API Python native pour des scripts d'automatisation complexes, ou encore via le plugin JMeter pour des tests de performance, l'accès à ces métriques est instantané. En simplifiant radicalement la création de scénarios de monitoring complexes, mock-jutsu permet aux équipes techniques de gagner un temps précieux tout en améliorant la fiabilité globale de leur pile d'observabilité grâce à des données fictives de haute qualité.
mockjutsu generate prometheus_metricsmockjutsu bulk prometheus_metrics --count 10mockjutsu export prometheus_metrics --count 10 --format jsonmockjutsu export prometheus_metrics --count 10 --format csvmockjutsu export prometheus_metrics --count 10 --format sqlfrom mockjutsu import jutsujutsu.generate('prometheus_metrics')jutsu.bulk('prometheus_metrics', count=10)jutsu.template(['prometheus_metrics'], count=5)${__mockjutsu_prometheus(prometheus_metrics)}# JMeter Function: __mockjutsu_prometheus# Parameter 1: prometheus_metrics# Parameter 2: (not required for this function)GET /generate/prometheus_metrics# → {"type":"prometheus_metrics","result":"...","status":"ok"}GET /bulk/prometheus_metrics?count=10POST /template {"types":["prometheus_metrics"],"count":1}Exemples de sortie
{"exposition": "# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.\n# TYPE process_cpu_seconds_total counter\nprocess_cpu_seconds_total 18186.35\n# HELP process_resident_memory_bytes Resident memory size in bytes.\n# TYPE process_resident_memory_bytes gauge\nprocess_resident_memory_bytes 1264406782\n# HELP process_virtual_memory_bytes Virtual memory size in bytes.\n# TYPE process_virtual_memory_bytes gauge\nprocess_virtual_memory_bytes 1600082697\n# HELP process_open_fds Number of open file descriptors.\n# TYPE process_open_fds gauge\nprocess_open_fds 374\n# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.\n# TYPE process_start_time_seconds gauge\nprocess_start_time_seconds 1782246433.267\n\n# HELP http_requests_total Total number of HTTP requests received.\n# TYPE http_requests_total counter\nhttp_requests_total{method=\"PUT\",path=\"/metrics\",status=\"200\"} 38272\nhttp_requests_total{method=\"PUT\",path=\"/\",status=\"204\"} 22740\nhttp_requests_total{method=\"PUT\",path=\"/api/v1/auth/token\",status=\"400\"} 25412\nhttp_requests_total{method=\"PUT\",path=\"/api/v1/products\",status=\"200\"} 91408\nhttp_requests_total{method=\"POST\",path=\"/metrics\",status=\"500\"} 43044\nhttp_requests_total{method=\"POST\",path=\"/\",status=\"400\"} 98670\nhttp_requests_total{method=\"POST\",path=\"/api/v1/auth/token\",status=\"200\"} 89121\nhttp_requests_total{method=\"POST\",path=\"/api/v1/products\",status=\"500\"} 3738\nhttp_requests_total{method=\"DELETE\",path=\"/metrics\",status=\"403\"} 39899\nhttp_requests_total{method=\"DELETE\",path=\"/\",status=\"204\"} 6878\nhttp_requests_total{method=\"DELETE\",path=\"/api/v1/auth/token\",status=\"404\"} 47040\nhttp_requests_total{method=\"DELETE\",path=\"/api/v1/products\",status=\"200\"} 57514\nhttp_requests_total{method=\"PATCH\",path=\"/metrics\",status=\"201\"} 33886\nhttp_requests_total{method=\"PATCH\",path=\"/\",status=\"204\"} 31355\nhttp_requests_total{method=\"PATCH\",path=\"/api/v1/auth/token\",status=\"201\"} 64317\nhttp_requests_total{method=\"PATCH\",path=\"/api/v1/products\",status=\"400\"} 42627\n\n# HELP http_request_duration_seconds HTTP request latency in seconds.\n# TYPE http_request_duration_seconds histogram\nhttp_request_duration_seconds_bucket{le=\"0.005\"} 1192\nhttp_request_duration_seconds_bucket{le=\"0.01\"} 1255\nhttp_request_duration_seconds_bucket{le=\"0.025\"} 3796\nhttp_request_duration_seconds_bucket{le=\"0.05\"} 4018\nhttp_request_duration_seconds_bucket{le=\"0.1\"} 4517\nhttp_request_duration_seconds_bucket{le=\"0.25\"} 5458\nhttp_request_duration_seconds_bucket{le=\"0.5\"} 5724\nhttp_request_duration_seconds_bucket{le=\"1\"} 6103\nhttp_request_duration_seconds_bucket{le=\"2.5\"} 6544\nhttp_request_duration_seconds_bucket{le=\"5\"} 7735\nhttp_request_duration_seconds_bucket{le=\"10\"} 7747\nhttp_request_duration_seconds_bucket{le=\"+Inf\"} 7747\nhttp_request_duration_seconds_sum 3532.357\nhttp_request_duration_seconds_count 7747\n\n# HELP go_goroutines Number of goroutines that currently exist.\n# TYPE go_goroutines gauge\ngo_goroutines 54\n# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.\n# TYPE go_memstats_alloc_bytes gauge\ngo_memstats_alloc_bytes 87751894\n# HELP go_gc_duration_seconds A summary of GC invocation durations.\n# TYPE go_gc_duration_seconds summary\ngo_gc_duration_seconds{quantile=\"0\"} 2.236553e-04\ngo_gc_duration_seconds{quantile=\"0.25\"} 5.879858e-04\ngo_gc_duration_seconds{quantile=\"0.5\"} 9.046672e-04\ngo_gc_duration_seconds{quantile=\"0.75\"} 9.085975e-04\ngo_gc_duration_seconds{quantile=\"1\"} 9.156915e-04\ngo_gc_duration_seconds_sum 0.8371\ngo_gc_duration_seconds_count 1952\n", "format": "prometheus", "metric_families": ["process_cpu_seconds_total", "process_resident_memory_bytes", "process_virtual_memory_bytes", "process_open_fds", "process_start_time_seconds", "http_requests_total", "http_request_duration_seconds", "go_goroutines", "go_memstats_alloc_bytes", "go_gc_duration_seconds"], "total_samples": 44}Règles de validation
- Généré par Mock Jutsu selon les vraies spécifications de format
- Toutes les valeurs produites sont synthétiques
- Pour les environnements de développement, de test et de démonstration