We use the artprima/prometheus-metrics-bundle (https://github.com/artprima/prometheus-metrics-bundle) bundle to collect metrics in the Prometheus format, which can then be used to build a dashboard with Grafana. These metrics are visible at the /metrics/prometheus URL of the website.
Default metrics are generated. It is possible to create custom metrics to track "Business" data, such as the number of created orders or the order amount.
-
Run
$ composer require acseo/sylius-prometheus-metrics-plugin
. -
Add these few lines to the
config/state_machine/sylius_payment.yaml
winzou_state_machine:
sylius_payment:
callbacks:
after:
sylius_order_items_complete_collector:
on: 'complete'
do: ['@metrics.order_collector', 'incrementPrometheusCounters']
args: ["object.getOrder()"]
-
Run
$ composer require acseo/sylius-prometheus-metrics-plugin
. -
Enable the plugin in bundles.php
<?php
// config/bundles.php
return [
// ...
Artprima\PrometheusMetricsBundle\ArtprimaPrometheusMetricsBundle::class => ['all' => true],
Acseo\SyliusPrometheusMetricsPlugin\SyliusPrometheusMetricsPlugin::class => ['all' => true],
];
- Add this file
config/packages/prometheus_metrics.yaml
artprima_prometheus_metrics:
namespace: myapp
storage: '%env(PROM_METRICS_DSN)%'
ignored_routes:
- prometheus_bundle_prometheus
- _wdt
# used to disable default application metrics
#disable_default_metrics: false
# Recommended to disable default metrics from promphp/prometheus_client_php
# see https://github.com/PromPHP/prometheus_client_php/issues/62
disable_default_promphp_metrics: true
# used to enable console metrics
#enable_console_metrics: false
when@test:
artprima_prometheus_metrics:
storage: in_memory
- Add the metrics routes
config/routes/metrics.yaml
app_metrics:
resource: '@ArtprimaPrometheusMetricsBundle/Resources/config/routing.xml'
- Add environment variables
###> artprima/prometheus-metrics-bundle ###
PROM_METRICS_DSN=apcu
###< artprima/prometheus-metrics-bundle ###