# Metrics

[Writing custom metrics](https://www.youtube-nocookie.com/embed/CLKwosydXsc?rel=0&showinfo=0&modestbranding=1&autoplay=0)

A **metric** is a collection of costs (memory, network, CPU, ...) associated with some function calls. Blackfire offers some built-in metrics, but you can also create your custom metrics.

You can define the performance expectations of your projects by setting an expected **metric value**, on a given metric dimension, in [assertions](assertions). To write an assertion on a specific dimension, append the dimension name to the metric name, separated with a `.`.

For instance, for the `sql.queries` metric, the number of calls is stored in the `metrics.sql.queries.count` and the memory usage in `metrics.sql.queries.peak_memory`. To check that you don't have more than 10 SQL queries in an assertion, you would write `metrics.sql.queries.count <= 10`.

The available dimensions for metrics are the following ones.

- `count`
- `wall_time`
- `cpu_time`
- `memory`
- `peak_memory`
- `network_in`
- `network_out`
- `io`

## Built-in Metrics

Here is the list of built-in metrics that are always available in assertions:

- `metrics.amqp` - AMQP
- `metrics.amqp.config` - AMQP Configuration
- `metrics.amqp.connections` - AMQP Connections
- `metrics.amqp.connections.go` - AMQP Connections (go)
- `metrics.amqp.librabbitmq.connections` - librabbitmq Connections (celery/librabbitmq)
- `metrics.amqp.messages` - AMQP Messages
- `metrics.amqp.messages.go` - AMQP Messages (go)
- `metrics.amqp.phpamqp.config` - AMQP Configuration (pdezwart/php-amqp)
- `metrics.amqp.phpamqp.connections` - AMQP Connections (pdezwart/php-amqp)
- `metrics.amqp.phpamqp.messages` - AMQP Messages (pdezwart/php-amqp)
- `metrics.amqp.phpamqplib.config` - AMQP Configuration (videlalvaro/php-amqplib)
- `metrics.amqp.phpamqplib.connections` - AMQP Connections (videlalvaro/php-amqplib)
- `metrics.amqp.phpamqplib.messages` - AMQP Messages (videlalvaro/php-amqplib)
- `metrics.amqp.pika.connections` - pika Connections (pika/pika)
- `metrics.amqp.pyamqp.connections` - pyamqp Connections (celery/py-amqp)
- `metrics.api_platform.installed` - API Platform installed?
- `metrics.api_platform2.installed` - API Platform 2 installed?
- `metrics.assetic.controller.calls` - Assetic Asset Renderer
- `metrics.aura.installed` - Aura PHP installed
- `metrics.badger` - Badger
- `metrics.badger.read` - Badger Reads
- `metrics.badger.transaction` - Badger Transactions
- `metrics.badger.write` - Badger Writes
- `metrics.bbolt` - BBolt
- `metrics.bbolt.read` - BBolt Reads
- `metrics.bbolt.transaction` - BBolt Transactions
- `metrics.bbolt.write` - BBolt Writes
- `metrics.blackfire.add_marker` - Blackfire Markers
- `metrics.blackfire.sdk.probe` - Blackfire SDK Instrumentation
- `metrics.blackfire.span` - Blackfire Spans
- `metrics.bolt.application.construct` - Bolt CMS Application Construct
- `metrics.bolt.application.initialize` - Bolt CMS Application Initialize
- `metrics.bolt.providers` - Bolt CMS Service Providers Registration
- `metrics.cache` - Cache
- `metrics.cache.delete` - Cache Delete
- `metrics.cache.flush` - Cache Flush
- `metrics.cache.get` - Cache Get
- `metrics.cache.has` - Cache Has
- `metrics.cache.set` - Cache Set
- `metrics.cassandra` - Cassandra
- `metrics.cassandra.query` - Cassandra Query
- `metrics.cassandra.query.go` - Cassandra Query
- `metrics.celery.python` - Celery
- `metrics.code_igniter.installed` - Code Igniter installed?
- `metrics.commonmark.parse.parsedown` - Markdown Parser (thephpleague/commonmark)
- `metrics.compile` - Compiled Scripts
- `metrics.composer.autoload.find_file` - Composer ClassLoader File Finder
- `metrics.crypto` - Cryptographic events
- `metrics.crypto.cipher` - Create a new block cipher
- `metrics.crypto.decrypt` - Decrypt data
- `metrics.crypto.defuse` - Defuse crypto library
- `metrics.crypto.defuse.decrypt` - Defuse crypto library decryption
- `metrics.crypto.defuse.encrypt` - Defuse crypto library encryption
- `metrics.crypto.encrypt` - Encrypt data
- `metrics.crypto.mcrypt` - Mcrypt Functions
- `metrics.crypto.sign` - Sign a hash
- `metrics.crypto.sum` - Checksum
- `metrics.crypto.verify` - Verify signature
- `metrics.cs_cart.installed` - CS-Cart installed?
- `metrics.django` - Django
- `metrics.django.auth` - Django auth
- `metrics.django.authentication` - Django auth
- `metrics.django.authorization` - Django authorization
- `metrics.django.cache` - Django Cache
- `metrics.django.cache.backends.db.delete` - Django Cache
- `metrics.django.cache.backends.db.get` - Django Cache
- `metrics.django.cache.backends.db.set` - Django Cache
- `metrics.django.cache.backends.filebased.delete` - Django Cache
- `metrics.django.cache.backends.filebased.get` - Django Cache
- `metrics.django.cache.backends.filebased.set` - Django Cache
- `metrics.django.cache.backends.locmem.delete` - Django Cache
- `metrics.django.cache.backends.locmem.get` - Django Cache
- `metrics.django.cache.backends.locmem.set` - Django Cache
- `metrics.django.cached_template_loader` - Django Cached Template Loader enabled
- `metrics.django.clickjacking_protection` - Django Clickjacking middleware enabled
- `metrics.django.csrf_protection` - Django CSRF middleware enabled
- `metrics.django.models.created` - A Django model object is created
- `metrics.django.models.queryset` - Django Models QuerySet usage
- `metrics.django.models.sql_compilation` - Django Models SQL compilation
- `metrics.django.security_middleware` - Django Security middleware enabled
- `metrics.django.serializer.deserialize` - Django Serializer deserialize
- `metrics.django.serializer.serialize` - Django Serializer serialize
- `metrics.django.sessions` - Django Sessions
- `metrics.django.sessions.backends.cache` - Django sessions cache backend
- `metrics.django.sessions.backends.cached_db` - Django sessions cached\_db backend
- `metrics.django.sessions.backends.db` - Django sessions DB backend
- `metrics.django.sessions.backends.file` - Django sessions file backend
- `metrics.django.sessions.cache` - Django cached sessions
- `metrics.django.signals` - Django Signals
- `metrics.django.signals.auth` - Django auth signals
- `metrics.django.signals.core` - Django core signals
- `metrics.django.signals.db` - Django db signals
- `metrics.django.template` - Django templates
- `metrics.django.template.compile` - Django template compilation
- `metrics.django.template.engine.django` - Django inner template engine
- `metrics.django.template.engine.jinja2` - Jinja2 template engine for Django
- `metrics.django.template.render` - Django template rendering
- `metrics.django.views` - Django views
- `metrics.django.views.class_based` - Django class-based views
- `metrics.django.views.function_based` - Django function-based views
- `metrics.django.wsgi` - Django WSGI handling
- `metrics.django.wsgi.resolve_request` - Django WSGI resolve request
- `metrics.django.wsgi.view_process` - Django WSGI view process
- `metrics.doctrine.annotations.parsed` - Doctrine Annotation Parser
- `metrics.doctrine.annotations.read` - Doctrine Annotation Reader
- `metrics.doctrine.cache.delete` - Doctrine Cache Delete
- `metrics.doctrine.cache.flush` - Doctrine Cache Clear
- `metrics.doctrine.cache.get` - Doctrine Cache Get
- `metrics.doctrine.cache.has` - Doctrine Cache Has
- `metrics.doctrine.cache.set` - Doctrine Cache Set
- `metrics.doctrine.dql.parsed` - Doctrine DQL Parser
- `metrics.doctrine.entities.created` - A Doctrine entity is created
- `metrics.doctrine.entities.hydrated` - One or more Doctrine entities is hydrated (turned into an object)
- `metrics.doctrine.entities.metadata` - Doctrine Metadata Loader
- `metrics.doctrine.event_manager.dispatch` - Doctrine Event Dispatcher
- `metrics.doctrine.orm.find` - Doctrine EntityRepository find
- `metrics.doctrine.orm.flush` - Doctrine EntityManager Flushes
- `metrics.doctrine.paginator.dql.parsed` - Doctrine Paginator using the Doctrine DQL Parser
- `metrics.doctrine.paginator.fetch_join_collection` - Doctrine Paginator used with fetchJoinCollection
- `metrics.doctrine.proxies.generated` - Doctrine Proxy Generator
- `metrics.doctrine.proxies.loaded` - Doctrine Proxy Lazy-Loader
- `metrics.drupal7.block.access` - Drupal Block Viewer
- `metrics.drupal7.block_cache.construct` - Drupal Block Cache
- `metrics.drupal7.cache.fake` - Drupal Fake Cache
- `metrics.drupal7.cron.automated` - Drupal Cron Run via Web
- `metrics.drupal7.cron.drush` - Drupal Cron Run via Drush
- `metrics.drupal7.cron.run` - Drupal Cron Run
- `metrics.drupal7.dblog` - Drupal Database Logger
- `metrics.drupal7.drush` - Drupal Drush
- `metrics.drupal7.entity_load.any` - Drupal Entity Loader
- `metrics.drupal7.fast_404` - Drupal Fast 404
- `metrics.drupal7.fast_cache` - Drupal APC Cache
- `metrics.drupal7.installed` - Is Drupal 7 installed?
- `metrics.drupal7.module.contrib.loaded` - Drupal Contrib Module Loader
- `metrics.drupal7.module.panels.installed` - Panels Module Installed
- `metrics.drupal7.page_cache_anonymous.construct` - Drupal Page Cache anonymous
- `metrics.drupal7.page_cache_authenticated.construct` - Drupal Page Cache authenticated
- `metrics.drupal7.panels.cached` - Cached Panels
- `metrics.drupal7.panels.render` - Panels Renderer
- `metrics.drupal7.php.load` - Drupal PHP File Loader
- `metrics.drupal7.preprocess.css` - Drupal CSS Aggregator
- `metrics.drupal7.preprocess.js` - Drupal JS Aggregator
- `metrics.drupal7.session.anonymous` - Drupal Anonymous Session
- `metrics.drupal7.theme.debug` - Drupal Theme Debugger
- `metrics.drupal7.views.uncached` - Drupal Uncached Views
- `metrics.drupal8.block.access` - Drupal Block Access Checker
- `metrics.drupal8.cache.null` - Drupal Null Cache
- `metrics.drupal8.cache.views` - Drupal Uncached Views
- `metrics.drupal8.cron.drush` - Drupal Cron Run via Drush
- `metrics.drupal8.cron.requested` - Drupal Cron Run via Web
- `metrics.drupal8.cron.run` - Drupal Cron Run
- `metrics.drupal8.dblog` - Drupal Database Logger
- `metrics.drupal8.drush` - Drupal Drush
- `metrics.drupal8.dynamic_page_cache.construct` - Dynamic drupal Page Cache
- `metrics.drupal8.entity_load.content` - Drupal Content Entities Loader
- `metrics.drupal8.fast_cache` - Drupal APCu Cache
- `metrics.drupal8.help_module.construct` - Help module
- `metrics.drupal8.installed` - Is Drupal 8 installed?
- `metrics.drupal8.module.loaded.contrib` - Drupal Contrib Module Loader
- `metrics.drupal8.page_cache.construct` - Drupal Page Cache
- `metrics.drupal8.php.load` - Drupal PHP File Loader
- `metrics.drupal8.preprocess.css` - Drupal CSS Asset Resolver
- `metrics.drupal8.preprocess.js` - Drupal JavaScript Asset Resolver
- `metrics.drupal8.twig.debug` - Drupal Twig Debugger
- `metrics.drupal8.twig_cache.construct` - Twig Cache
- `metrics.drupal8.update_module.construct` - Update manager module
- `metrics.elasticsearch` - Elasticsearch
- `metrics.elasticsearch.elastica.logs` - Elastica Logs
- `metrics.elasticsearch.elastica.queries` - Elastica Queries
- `metrics.elasticsearch.elasticsearch.queries` - Elasticsearch Queries
- `metrics.elasticsearch.queries` - Elasticsearch Queries
- `metrics.elasticsearch.queries.go` - Elasticsearch Queries
- `metrics.elasticsearch.queries.python` - Elasticsearch Queries
- `metrics.emails` - Mailer
- `metrics.emails.sent` - Mails Sent
- `metrics.emails.sent.go` - Go Emails Sent
- `metrics.emails.sent.mandrill` - Mandrill Emails Sent
- `metrics.emails.sent.php` - PHP Emails Sent
- `metrics.emails.sent.php_mailer` - PHPMailer Emails Sent
- `metrics.emails.sent.swiftmailer` - Swiftmailer Emails Sent
- `metrics.emails.sent.symfony_mailer` - Symfony Mailer Emails Sent
- `metrics.entities.created` - Database entities created
- `metrics.ezplatform.controller.view_controller` - ezplatform.controller.view\_controller metric is deprecated in favor of ibexa.controller.view\_controller one
- `metrics.ezplatform.controller.view_controller_deprecated_calls` - ezplatform.controller.view\_controller\_deprecated\_calls metric is deprecated in favor of ibexa.controller.view\_controller\_deprecated\_calls one
- `metrics.ezplatform.core.persistence.content_handler.read_only_uncached_calls` - ezplatform.core.persistence.content\_handler.read\_only\_uncached\_calls metric is deprecated in favor of ibexa.core.persistence.content\_handler.read\_only\_uncached\_calls one
- `metrics.ezplatform.core.persistence.content_language_handler.read_only_uncached_calls` - ezplatform.core.persistence.content\_language\_handler.read\_only\_uncached\_calls metric is deprecated in favor of ibexa.core.persistence.content\_language\_handler.read\_only\_uncached\_calls one
- `metrics.ezplatform.core.persistence.content_type_handler.read_only_uncached_calls` - ezplatform.core.persistence.content\_type\_handler.read\_only\_uncached\_calls metric is deprecated in favor of ibexa.core.persistence.content\_type\_handler.read\_only\_uncached\_calls one
- `metrics.ezplatform.core.persistence.handlers` - ezplatform.core.persistence.handlers metric is deprecated in favor of ibexa.core.persistence.handlers one
- `metrics.ezplatform.core.persistence.legacy.handlers` - ezplatform.core.persistence.legacy.handlers metric is deprecated in favor of ibexa.core.persistence.legacy.handlers one
- `metrics.ezplatform.core.persistence.location_handler.read_only_uncached_calls` - ezplatform.core.persistence.location\_handler.read\_only\_uncached\_calls metric is deprecated in favor of ibexa.core.persistence.location\_handler.read\_only\_uncached\_calls one
- `metrics.ezplatform.core.persistence.object_state_handler.read_only_uncached_calls` - ezplatform.core.persistence.object\_state\_handler.read\_only\_uncached\_calls metric is deprecated in favor of ibexa.core.persistence.object\_state\_handler.read\_only\_uncached\_calls one
- `metrics.ezplatform.core.persistence.section_handler.read_only_uncached_calls` - ezplatform.core.persistence.section\_handler.read\_only\_uncached\_calls metric is deprecated in favor of ibexa.core.persistence.section\_handler.read\_only\_uncached\_calls one
- `metrics.ezplatform.core.persistence.trash_handler.read_only_uncached_calls` - ezplatform.core.persistence.trash\_handler.read\_only\_uncached\_calls metric is deprecated in favor of ibexa.core.persistence.trash\_handler.read\_only\_uncached\_calls one
- `metrics.ezplatform.core.persistence.url_alias_handler.read_only_uncached_calls` - ezplatform.core.persistence.url\_alias\_handler.read\_only\_uncached\_calls metric is deprecated in favor of ibexa.core.persistence.url\_alias\_handler.read\_only\_uncached\_calls one
- `metrics.ezplatform.core.persistence.url_wildcard.read_only_uncached_calls` - ezplatform.core.persistence.url\_wildcard.read\_only\_uncached\_calls metric is deprecated in favor of ibexa.core.persistence.url\_wildcard.read\_only\_uncached\_calls one
- `metrics.ezplatform.core.persistence.user_handler.read_only_uncached_calls` - ezplatform.core.persistence.user\_handler.read\_only\_uncached\_calls metric is deprecated in favor of ibexa.core.persistence.user\_handler.read\_only\_uncached\_calls one
- `metrics.ezplatform.core.repository.services` - ezplatform.core.repository.services metric is deprecated in favor of ibexa.core.repository.services one
- `metrics.ezplatform.installed` - eZ Platform installed?
- `metrics.ezplatform.signal_slot_dispatcher.emit` - ezplatform.signal\_slot\_dispatcher.emit metric is deprecated in favor of ibexa.signal\_slot\_dispatcher.emit one
- `metrics.ezplatform.template.fields` - ezplatform.template.fields metric is deprecated in favor of ibexa.template.fields one
- `metrics.fos_elastica_bundle` - FOS Elastica bundle installed?
- `metrics.fos_http_cache_bundle` - FOS HttpCache Bundle installed?
- `metrics.fos_message_bundle` - FOS Message bundle installed?
- `metrics.fos_rest_bundle` - FOS Rest Bundle installed?
- `metrics.fos_user_bundle` - FOS User bundle installed?
- `metrics.gorm.create` - GORM Create
- `metrics.gorm.delete` - GORM Delete
- `metrics.gorm.read` - GORM Read
- `metrics.gorm.update` - GORM Update
- `metrics.graph_ql` - graph\_ql metric is deprecated in favor of graphql one
- `metrics.graphql` - GraphQL
- `metrics.graphql.execute` - GraphQL Execution
- `metrics.graphql.execute.php` - webonyx/graphql-php Execution
- `metrics.graphql.folklore.php` - Folklore GraphQL
- `metrics.graphql.parse` - GraphQL Parsing
- `metrics.graphql.parse.php` - webonyx/graphql-php Parsing
- `metrics.graphql.resolve` - GraphQL Field Resolution
- `metrics.graphql.resolve.php` - webonyx/graphql-php Field Resolution
- `metrics.graphql.validate` - GraphQL Validation
- `metrics.graphql.validate.php` - webonyx/graphql-php Validation
- `metrics.graphql.webonyx.php` - webonyx/graphql-php
- `metrics.graphql.youshido.php` - Youshido GraphQL
- `metrics.grpc` - Google RPC
- `metrics.grpc.receive` - GRPC Receive message
- `metrics.grpc.receive.go` - grpc-go Receive message
- `metrics.grpc.requests` - gRPC Requests
- `metrics.grpc.requests.php` - gRPC PHP Requests
- `metrics.grpc.send` - GRPC Send message
- `metrics.grpc.send.go` - grpc-go Send message
- `metrics.http.curl.requests` - cURL HTTP Requests
- `metrics.http.exif.requests` - Exif HTTP Requests
- `metrics.http.gd.requests` - GD HTTP Requests
- `metrics.http.go.requests` - requests HTTP Requests
- `metrics.http.gorilla.requests` - requests HTTP Requests
- `metrics.http.iris.requests` - requests HTTP Requests
- `metrics.http.php_stream.requests` - PHP Stream HTTP Requests
- `metrics.http.requests` - HTTP Requests
- `metrics.http.ruby.http.requests` - HTTP Requests
- `metrics.http.soap.requests` - SOAP HTTP Requests
- `metrics.http.socket.requests` - Socket HTTP Requests
- `metrics.hwi_oauth_bundle` - HWI OAuth Bundle installed?
- `metrics.ibexa.controller.view_controller` - Ibexa \[MVC\] View Controller
- `metrics.ibexa.controller.view_controller_deprecated_calls` - Ibexa \[MVC\] View Controller
- `metrics.ibexa.core.persistence.content_handler.read_only_uncached_calls` - Ibexa \[SPI\] Persistence Cache ContentHandler - read-only uncached calls
- `metrics.ibexa.core.persistence.content_language_handler.read_only_uncached_calls` - Ibexa \[SPI\] Persistence Cache ContentLanguageHandler - read-only uncached calls
- `metrics.ibexa.core.persistence.content_type_handler.read_only_uncached_calls` - Ibexa \[SPI\] Persistence Cache ContentTypeHandler - read-only uncached calls
- `metrics.ibexa.core.persistence.handlers` - Ibexa \[SPI\] Persistence Cache Handlers
- `metrics.ibexa.core.persistence.legacy.handlers` - Ibexa \[SPI\] Persistence Legacy (Database) Handlers
- `metrics.ibexa.core.persistence.location_handler.read_only_uncached_calls` - Ibexa \[SPI\] Persistence Cache LocationHandler - read-only uncached calls
- `metrics.ibexa.core.persistence.object_state_handler.read_only_uncached_calls` - Ibexa \[SPI\] Persistence Cache ObjectStateHandler - read-only uncached calls
- `metrics.ibexa.core.persistence.section_handler.read_only_uncached_calls` - Ibexa \[SPI\] Persistence Cache SectionHandler - read-only uncached calls
- `metrics.ibexa.core.persistence.trash_handler.read_only_uncached_calls` - Ibexa \[SPI\] Persistence Cache TrashHandler - read-only uncached calls
- `metrics.ibexa.core.persistence.url_alias_handler.read_only_uncached_calls` - Ibexa \[SPI\] Persistence Cache UrlAliasHandler - read-only uncached calls
- `metrics.ibexa.core.persistence.url_wildcard.read_only_uncached_calls` - Ibexa \[SPI\] Persistence Cache UrlWildcard - read-only uncached calls
- `metrics.ibexa.core.persistence.user_handler.read_only_uncached_calls` - Ibexa \[SPI\] Persistence Cache UserHandler - read-only uncached calls
- `metrics.ibexa.core.repository.services` - Ibexa \[API\] Repository Service method calls
- `metrics.ibexa.installed` - Ibexa installed?
- `metrics.ibexa.signal_slot_dispatcher.emit` - Ibexa \[API\] Repository Signal Slot Dispatcher
- `metrics.ibexa.template.fields` - Ibexa \[MVC\] Content Field Render
- `metrics.jms.serializer.deserialize` - JMS Serializer deserialize
- `metrics.jms.serializer.serialize` - JMS Serializer serialize
- `metrics.kafka` - Kafka
- `metrics.kafka.config` - Kafka Configuration
- `metrics.kafka.consume` - Kafka Consume
- `metrics.kafka.misc` - Kafka Miscellaneous Operations
- `metrics.kafka.php_rdkafka.config` - Kafka Configuration
- `metrics.kafka.php_rdkafka.consume` - PHP Rdkafka Consume
- `metrics.kafka.php_rdkafka.misc` - Kafka Miscellaneous Operations
- `metrics.kafka.php_rdkafka.produce` - PHP Rdkafka Produce
- `metrics.kafka.produce` - Kafka Produce
- `metrics.kafka.sarama.consume` - sarama Consume
- `metrics.kafka.sarama.produce` - sarama Produce
- `metrics.kohana.installed` - Kohanna framework installed?
- `metrics.laravel` - Laravel framework
- `metrics.laravel.cache` - Laravel Cache
- `metrics.laravel.cache.apc` - Laravel APC cache store
- `metrics.laravel.cache.array` - Laravel Array (in-memory) cache store
- `metrics.laravel.cache.array_config_default` - Laravel Cache array default driver
- `metrics.laravel.cache.database` - Laravel Database cache store
- `metrics.laravel.cache.dynamodb` - Laravel DynamoDB cache store
- `metrics.laravel.cache.file` - Laravel File cache store
- `metrics.laravel.cache.memcached` - Laravel Memcached cache store
- `metrics.laravel.cache.null` - Laravel Null cache store
- `metrics.laravel.cache.null_config_default` - Laravel Cache null default driver
- `metrics.laravel.cache.redis` - Laravel Redis cache store
- `metrics.laravel.config.load` - Laravel configuration loading
- `metrics.laravel.database.hydration` - Laravel Database hydration
- `metrics.laravel.debug` - Laravel debug mode
- `metrics.laravel.debug_bar.enable` - Laravel enable debug bar
- `metrics.laravel.debug_bar.middleware` - Laravel debug bar middleware
- `metrics.laravel.eloquent.models.created` - A Laravel Eloquent Model object is created
- `metrics.laravel.eloquent.models.relationships` - Laravel Eloquent Model Relationships
- `metrics.laravel.eloquent.models.relationships.eager_loaded` - Relationships eager loaded
- `metrics.laravel.eloquent.models.relationships.lazy_loaded` - Relationships lazy loaded
- `metrics.laravel.event_dispatcher` - Laravel Event Dispatcher
- `metrics.laravel.installed` - Laravel installed?
- `metrics.laravel.kernel.bootstrap` - Laravel kernel bootstrap
- `metrics.laravel.log` - Laravel Log
- `metrics.laravel.middleware.add_queued_cookies_to_response` - Laravel add queued cookies to response middleware
- `metrics.laravel.middleware.authenticate` - Laravel authenticate middleware
- `metrics.laravel.middleware.authenticate_basic` - Laravel authenticate basic middleware
- `metrics.laravel.middleware.authorize` - Laravel authorize middleware
- `metrics.laravel.middleware.check_for_maintenance` - Laravel check for maintenance middleware
- `metrics.laravel.middleware.csrf` - Laravel CSRF middleware
- `metrics.laravel.middleware.encrypt_cookie` - Laravel encrypt cookie middleware
- `metrics.laravel.middleware.session` - Laravel session middleware
- `metrics.laravel.middleware.share_errors` - Laravel share errors from session middleware
- `metrics.laravel.middleware.substiture_bindings` - Laravel binding substitution middleware
- `metrics.laravel.middleware.throttle_requests` - Laravel throttle requests middleware
- `metrics.laravel.queues.dispatch` - Laravel Queues Dispatch
- `metrics.laravel.queues.dispatch.async` - Laravel Queues Asynchronous Dispatch
- `metrics.laravel.queues.dispatch.sync` - Laravel Queues Synchronous Dispatch
- `metrics.laravel.queues.sync_config_default` - Laravel Queues sync default config
- `metrics.laravel.route.load` - Laravel routes loading
- `metrics.laravel.router.dispatch` - Laravel router dispatch
- `metrics.laravel.router.prepare_response` - Laravel router prepare response
- `metrics.laravel.router.route_run` - Laravel route run
- `metrics.laravel.view.compile` - Laravel view compilation
- `metrics.laravel.view.render` - Laravel view render
- `metrics.laravel.workbench_starter` - Laravel Workbench starter
- `metrics.leveldb` - LevelDB
- `metrics.leveldb.read` - LevelDB Reads
- `metrics.leveldb.write` - LevelDB Writes
- `metrics.logs.browser` - Logs sent to the browser
- `metrics.logs.log_call` - Log Calls
- `metrics.magento1.action.catalog_category_view` - Action catalog\_category\_view (category page)
- `metrics.magento1.action.catalog_product_view` - Action catalog\_product\_view (product page)
- `metrics.magento1.action.checkout_cart_index` - Action checkout\_cart\_index (cart page)
- `metrics.magento1.action.cms_index_index` - Action cms\_index\_index (homepage)
- `metrics.magento1.action.cms_page_view` - Action cms\_page\_view (any CMS page)
- `metrics.magento1.all.installed` - Is Magento 1 installed?
- `metrics.magento1.block.cache.load.get_cache_key` - Get block's cache key during cache load
- `metrics.magento1.collection.cache.load` - Load the collection cache
- `metrics.magento1.collection.cache.unserialize` - Unserialize the collection cache
- `metrics.magento1.collection.load` - Collection load
- `metrics.magento1.collection.product.load` - Collection Product load
- `metrics.magento1.config.read` - Read the configuration
- `metrics.magento1.controller.checkout_onepage` - Any action on the checkout's onepage
- `metrics.magento1.controller.customer_account` - Any action on the customer's account
- `metrics.magento1.customer.logged_in` - Load the customer of the current session
- `metrics.magento1.ee.installed` - Is Magento 1 EE installed?
- `metrics.magento1.events` - Fire Magento event
- `metrics.magento1.layout.update.save_cache` - Load layout updates by handles
- `metrics.magento1.model.load` - Model load
- `metrics.magento1.model.product.load` - Model Product load
- `metrics.magento1.translate.cache.load` - Load the translation cache
- `metrics.magento1.translate.cache.unserialize` - Unserialize the translation cache
- `metrics.magento2.all.action.catalog_category_view` - Action catalog\_category\_view (category page)
- `metrics.magento2.all.action.catalog_product_view` - Action catalog\_product\_view (product page)
- `metrics.magento2.all.action.checkout_cart_index` - Action checkout\_cart\_index (cart page)
- `metrics.magento2.all.action.cms_index_index` - Action cms\_index\_index (homepage)
- `metrics.magento2.all.action.cms_page_view` - Action cms\_page\_view (any CMS page)
- `metrics.magento2.all.cache.any.save` - Any cache save
- `metrics.magento2.all.cache.block.save.action` - Save (and not ask to) a block in cache
- `metrics.magento2.all.cache.block.save.call` - Ask to save a block in cache
- `metrics.magento2.all.cache.clean.action` - Clean a cache, only if it's enabled
- `metrics.magento2.all.cache.clean.call` - Ask to clean a cache, even if it's not enabled
- `metrics.magento2.all.cache.ddl.read` - Read in DB information which should be in cache
- `metrics.magento2.all.cache.eav.read` - Read EAV entity types in database
- `metrics.magento2.all.cache.full_page.builtin.hit` - Hit full page cache using builtin
- `metrics.magento2.all.cache.layout.read` - Read of Layout files
- `metrics.magento2.all.cache.reflection.read` - Read Reflection data
- `metrics.magento2.all.cache.translate.read` - Read Translation file
- `metrics.magento2.all.collection.add_attribute_to_select.wildcard` - Add attributes to entities in collection with a wildcard
- `metrics.magento2.all.collection.load` - Collection load
- `metrics.magento2.all.collection.product.load` - Collection Product load
- `metrics.magento2.all.config.css.merge_css_files.enabled` - Merge of CSS files is enabled
- `metrics.magento2.all.config.di.read` - Configuration DI read \[from disk\]
- `metrics.magento2.all.config.js.enable_js_bundling.enabled` - The config dev/js/enable\_js\_bundling is enabled
- `metrics.magento2.all.config.js.merge_js_files.enabled` - Merge of JS files is enabled
- `metrics.magento2.all.controller.checkout` - Any action on the checkout's onepage
- `metrics.magento2.all.controller.customer_account` - Any action on the customer's account (logged in)
- `metrics.magento2.all.frontend.blocks.load_cache.hit` - Load cache hit for blocks
- `metrics.magento2.all.frontend.blocks.to_html` - Number of blocks displayed
- `metrics.magento2.all.frontend.blocks.with_lifetime` - Blocks which have a lifetime
- `metrics.magento2.all.installed` - Is Magento 2 installed?
- `metrics.magento2.all.logger.db` - DB Logger
- `metrics.magento2.all.mode.default` - Application Mode default
- `metrics.magento2.all.mode.developer` - Application Mode developer
- `metrics.magento2.all.mode.production` - Application Mode production
- `metrics.magento2.all.model.cms_page.load` - Model CMS Page load
- `metrics.magento2.all.model.load` - Model load
- `metrics.magento2.all.model.product.load` - Model Product load
- `metrics.magento2.all.profiler` - Profiler
- `metrics.magento2.backend.admin.front_name` - Magento admin URL path
- `metrics.magento2.cache.block_html` - Magento block HTML cache status
- `metrics.magento2.cache.collections` - Magento collections cache status
- `metrics.magento2.cache.compiled_config` - Magento compiled config cache status
- `metrics.magento2.cache.config` - Magento config cache status
- `metrics.magento2.cache.config_integration` - Magento config\_integration cache status
- `metrics.magento2.cache.config_integration_api` - Magento config integration API cache status
- `metrics.magento2.cache.config_webservice` - Magento config webservice cache status
- `metrics.magento2.cache.db_ddl` - Magento db ddl cache status
- `metrics.magento2.cache.eav` - Magento eav cache status
- `metrics.magento2.cache.full_page` - Magento full page cache status
- `metrics.magento2.cache.layout` - Magento layout cache status
- `metrics.magento2.cache.reflection` - Magento reflection cache status
- `metrics.magento2.cache.translate` - Magento translate cache status
- `metrics.magento2.ee.installed` - Is Magento 2 EE installed?
- `metrics.magento2.events` - Fire Magento event
- `metrics.magento2.interceptors` - Magento interceptors
- `metrics.magento2.session.db` - Magento session save in db
- `metrics.magento2.session.files` - Magento session save in files
- `metrics.magento2.session.redis` - Magento session save in redis
- `metrics.magento2.template.render` - Template rendering
- `metrics.main` - Main node
- `metrics.markdown` - Markdown
- `metrics.markdown.parse` - Markdown Parser
- `metrics.markdown.parse.parsedown` - Markdown Parser (erusev/parsedown)
- `metrics.memcache` - Memcache
- `metrics.memcache.config` - Memcache Config
- `metrics.memcache.config.php` - Memcache Config
- `metrics.memcache.connections` - Memcache Connections
- `metrics.memcache.connections.php` - Memcache Connections
- `metrics.memcache.connections.python` - Memcache Connections
- `metrics.memcache.misc` - Memcache Miscellaneous Operations
- `metrics.memcache.misc.php` - Memcache Miscellaneous Operations
- `metrics.memcache.queries` - Memcache Queries
- `metrics.memcache.queries.php` - Memcache Queries
- `metrics.memcache.queries.python` - Memcache Queries
- `metrics.memcached` - Memcached
- `metrics.memcached.config` - Memcached Config
- `metrics.memcached.misc` - Memcached Miscellaneous Operations
- `metrics.memcached.php.config` - Memcached Configuration
- `metrics.memcached.php.misc` - Memcached Miscellaneous Operations
- `metrics.memcached.php.queries` - Memcached Queries
- `metrics.memcached.queries` - Memcached Queries
- `metrics.michelf.parse.parsedown` - Markdown Parser (michelf/php-markdown)
- `metrics.mongodb` - MongoDB
- `metrics.mongodb.config` - MongoDB Configuration Operations
- `metrics.mongodb.connections` - MongoDB Connections
- `metrics.mongodb.go.connections` - MongoDB Connections
- `metrics.mongodb.go.queries` - MongoDB Queries
- `metrics.mongodb.php.config` - MongoDB Configuration Operations
- `metrics.mongodb.php.connections` - MongoDB Connections
- `metrics.mongodb.php.driver_operations` - MongoDB Driver Operations
- `metrics.mongodb.php.queries` - MongoDB Queries
- `metrics.mongodb.python.connections` - MongoDB Connections
- `metrics.mongodb.queries` - MongoDB Queries
- `metrics.monolog.browser_console` - Monolog calls to BrowserConsole
- `metrics.monolog.calls` - Monolog calls for warning, notice, info, or debug
- `metrics.monolog.chromephp` - Monolog calls to ChromePHP
- `metrics.monolog.firephp` - Monolog calls to FirePHP
- `metrics.monolog.php_console` - Monolog calls to PHPConsole
- `metrics.nette.installed` - Nette framework installed?
- `metrics.network` - Network events
- `metrics.network.rpc` - Remote procedure calls
- `metrics.network.rpc.call` - Make an RPC call
- `metrics.network.rpc.receive_call` - Receive an RPC call
- `metrics.network.rpc.receive_response` - Receive a response to an RPC call
- `metrics.network.rpc.respond_call` - Respond to an RPC call
- `metrics.network.tcp` - TCP/IP Communications
- `metrics.network.tcp.dial` - Connect to a host
- `metrics.network.tcp.read` - Read from a socket
- `metrics.network.tcp.write` - Write to a socket
- `metrics.nsq` - NSQ
- `metrics.nsq.consume` - NSQ Consume
- `metrics.nsq.consume.go` - NSQ Consume
- `metrics.nsq.publish` - NSQ Publish
- `metrics.nsq.publish.go` - NSQ Publish
- `metrics.nsq.response` - NSQ Response
- `metrics.nsq.response.go` - NSQ Response
- `metrics.output` - Written Bytes
- `metrics.oxid.rendered.article.widgets` - Oxid Article Widgets Rendered
- `metrics.oxid.rendered.categorytree` - Oxid CategoryTree Rendered
- `metrics.oxid.seo.link.generate` - Oxid Generate SEO Link
- `metrics.oxid.seo.link.uncached` - Oxid Uncached SEO Link
- `metrics.pear.firephp` - PEAR log calls to FirePHP
- `metrics.pear.log.log_call` - PEAR log calls for warning, notice, info, or debug
- `metrics.php` - PHP Functions
- `metrics.php.autoloaded` - Autoloaded Classes
- `metrics.php.eval` - eval calls
- `metrics.php.fastcgi_finish_request` - Response flushes
- `metrics.php.gc` - Garbage Collector
- `metrics.php.shell_exec` - Spawn shell commands
- `metrics.php.uniqid` - uniqid calls
- `metrics.php.uniqid_with_entropy` - uniqid with entropy calls
- `metrics.php_markdown.parse.parsedown` - Markdown Parser (dflydev/markdown)
- `metrics.phpfastcache.cache.delete` - phpFastCache Delete
- `metrics.phpfastcache.cache.flush` - phpFastCache Clear
- `metrics.phpfastcache.cache.get` - phpFastCache Get
- `metrics.phpfastcache.cache.has` - phpFastCache Has
- `metrics.phpfastcache.cache.set` - phpFastCache Set
- `metrics.phpqa.deprecated` - Calls to deprecated functions
- `metrics.phpqa.die` - Calls to die or exit
- `metrics.phpqa.dump` - Calls to var\_dump(), print\_r(), var\_export() on STDOUT
- `metrics.phpqa.e_user_deprecated` - Calls to deprecated libraries functions
- `metrics.phpqa.eval` - Calls to eval
- `metrics.phpqa.ini_settings` - Calls to ini\_set(), ini\_alter(), or ini\_restore()
- `metrics.phpqa.set_time_limit` - Calls to set\_time\_limit
- `metrics.phpqa.sleep` - Calls to sleep or usleep
- `metrics.prestashop` - PrestaShop
- `metrics.prestashop.container.init_dev` - Container builder adapter is created in debug mode
- `metrics.prestashop.hook.collection` - PrestaShop Hook Data Collector
- `metrics.prestashop.smarty.render_dev` - Smarty Dev Mode on PrestaShop
- `metrics.process` - Process related events
- `metrics.process.go.run` - Run external program
- `metrics.process.php.run` - Run external program
- `metrics.process.run` - Run external program
- `metrics.propel2` - Propel2 is used
- `metrics.protobuf` - Protobuf
- `metrics.protobuf.marshal` - Protobuf Marshal
- `metrics.protobuf.marshal.go` - Protobuf Marshal
- `metrics.protobuf.unmarshal` - Protobuf Unmarshal
- `metrics.protobuf.unmarshal.go` - Protobuf Unmarshal
- `metrics.psr3.calls` - PSR3 Logger logs
- `metrics.python` - Python Standard Library Functions
- `metrics.python.eval` - eval functions
- `metrics.python.http.requests` - HTTP Requests
- `metrics.python.http.requests.no_tls_verification` - no TLS certificate verification done for HTTP requests
- `metrics.python.input_output` - IO functions
- `metrics.python.json` - Json Encode/Decode
- `metrics.python.logging` - logging functions
- `metrics.python.pickle` - pickle serialization
- `metrics.python.range` - range
- `metrics.python.re` - Regular expression functions
- `metrics.python.shell_exec` - Spawn shell commands
- `metrics.python.sleep` - sleep
- `metrics.python.socket` - socket functions
- `metrics.python.ssl.socket` - SSL socket functions
- `metrics.python.subprocess.functions.shell_true` - Subprocess functions called with shell=True
- `metrics.python.thread` - Thread functions
- `metrics.python.yaml.unsafe_load` - Unsafe yaml.load
- `metrics.redis` - Redis
- `metrics.redis.config` - Redis Configuration Operations
- `metrics.redis.connections` - Redis Connections
- `metrics.redis.connections.python` - Redis Connections
- `metrics.redis.goredis.config` - go-redis Configuration Calls
- `metrics.redis.goredis.connections` - go-redis Connections
- `metrics.redis.goredis.queries` - go-redis Queries
- `metrics.redis.misc` - Redis Miscellaneous Operations
- `metrics.redis.non_persistent_connections` - Redis Non-Persistent Connections
- `metrics.redis.persistent_connections` - Redis Persistent Connections
- `metrics.redis.phpredis.config` - PHPRedis Configuration Calls
- `metrics.redis.phpredis.connections` - PHPRedis Connections
- `metrics.redis.phpredis.misc` - PHPRedis Miscellaneous Operations
- `metrics.redis.phpredis.non_persistent_connections` - Redis Non-Persistent Connections
- `metrics.redis.phpredis.persistent_connections` - Redis Persistent Connections
- `metrics.redis.phpredis.queries` - PHPRedis Queries
- `metrics.redis.predis.connections` - Predis Connections
- `metrics.redis.predis.non_persistent_connections` - Predis Non-Persistent Connections
- `metrics.redis.predis.persistent_connections` - Predis Persistent Connections
- `metrics.redis.predis.queries` - Predis Queries
- `metrics.redis.queries` - Redis Queries
- `metrics.redis.queries.python` - Redis Queries
- `metrics.redis.redigo.connections` - redigo Connections
- `metrics.redis.redigo.queries` - redigo Queries
- `metrics.riak` - Riak
- `metrics.riak.basho.queries` - Riak Queries with basho/riak
- `metrics.riak.php_riak.queries` - Riak Queries with php\_riak
- `metrics.riak.queries` - Riak Queries
- `metrics.run` - Run Scripts
- `metrics.serializer` - Serializers
- `metrics.serializer.deserialize` - Deserialize
- `metrics.serializer.serialize` - Serialize
- `metrics.shopware.events` - Shopware Events
- `metrics.shopware.filtered_events` - Shopware Filtered Events
- `metrics.shopware.get_resources` - Shopware Resources
- `metrics.shopware.link_generations` - Shopware Link Generations
- `metrics.shopware.rendering` - Shopware Templates Rendering
- `metrics.shopware.routing` - Shopware Routing
- `metrics.shopware6` - Shopware 6
- `metrics.shopware6.admin` - Shopware 6 Administration
- `metrics.shopware6.admin_worker` - Shopware 6 Admin Worker
- `metrics.shopware6.all.installed` - Shopware 6 installed?
- `metrics.shopware6.configuration.read` - Shopware 6 Configuration Read
- `metrics.shopware6.context_creation` - Shopware 6 Context Creation
- `metrics.shopware6.dal` - Shopware 6 DAL
- `metrics.shopware6.dal.entity` - Shopware 6 DAL Entity Loading
- `metrics.shopware6.dal.search` - Shopware 6 DAL Search
- `metrics.shopware6.dal.write` - Shopware 6 DAL Write
- `metrics.shopware6.http_cache` - Shopware 6 HTTP Cache
- `metrics.shopware6.http_cache.hit` - Shopware 6 HTTP Cache Hits
- `metrics.shopware6.http_cache.lookup` - Shopware 6 HTTP Cache Lookups
- `metrics.shopware6.http_cache.write` - Shopware 6 HTTP Cache Writes
- `metrics.shopware6.page.checkout.cart` - Shopware 6 Cart Page
- `metrics.shopware6.page.checkout.confirm` - Shopware 6 Order Confirm Page
- `metrics.shopware6.page.content` - Shopware 6 Content Page
- `metrics.shopware6.page.home` - Shopware 6 Home Page
- `metrics.shopware6.page.product` - Shopware 6 Product Page
- `metrics.shopware6.plugin.initialization` - Shopware 6 Plugin Initialization
- `metrics.shopware6.sales_channel_context_creation` - Shopware 6 Sales Channel Context Creation
- `metrics.shopware6.services` - Shopware 6 Service Layer
- `metrics.shopware6.services.cart` - Shopware 6 Cart
- `metrics.shopware6.services.category` - Shopware 6 Category
- `metrics.shopware6.services.navigation` - Shopware 6 Navigation
- `metrics.shopware6.services.order` - Shopware 6 Order Creation
- `metrics.shopware6.services.product_detail` - Shopware 6 Product Detail
- `metrics.shopware6.services.product_listing` - Shopware 6 Product Listing
- `metrics.shopware6.services.scheduled_task` - Shopware 6 Scheduled Task
- `metrics.shopware6.storefront` - Shopware 6 Storefront
- `metrics.shopware6.storefront.link_generations` - Shopware 6 Storefront Link Generation
- `metrics.shopware6.storefront.product` - Shopware 6 Storefront Product
- `metrics.shopware6.storefront.rendering` - Shopware 6 Storefront Rendering
- `metrics.shopware6.storefront.routing` - Shopware 6 Storefront Routing
- `metrics.silex.application.boot` - Silex Application Boot
- `metrics.silex.application.flush` - Silex Application Flush Controllers collection
- `metrics.silex.application.mount` - Silex Application Mount Controllers
- `metrics.silex.application.terminate` - Silex Application Terminate
- `metrics.silex.installed` - Silex installed
- `metrics.silex.providers` - Silex Providers
- `metrics.slim.installed` - Slim installed
- `metrics.smarty` - Smarty
- `metrics.smarty.compile` - Smarty Templates Compilations
- `metrics.smarty.is_cached` - Smarty Templates cache verification
- `metrics.smarty.read_file` - Smarty Templates read cached file
- `metrics.smarty.template_base` - Smarty Templates render template
- `metrics.solarium.queries` - Solarium Queries
- `metrics.spacy` - spaCy metrics
- `metrics.spacy.doc` - spaCy Doc API
- `metrics.spacy.language` - spaCy Language API
- `metrics.spacy.matcher` - spaCy Matcher API
- `metrics.spacy.phrasematcher` - spaCy PhraseMatcher API
- `metrics.sql` - SQL
- `metrics.sql.clickhouse.queries` - ClickHouse Queries
- `metrics.sql.connections` - SQL Connections
- `metrics.sql.db2.connections` - DB2 Connections
- `metrics.sql.db2.queries` - DB2 queries
- `metrics.sql.django.queries` - SQL Queries
- `metrics.sql.go.queries` - SQL Queries
- `metrics.sql.msql.connections` - mSQL Connections
- `metrics.sql.msql.queries` - mSQL Queries
- `metrics.sql.mssql.connections` - MSSQL Connections
- `metrics.sql.mssql.queries` - MSSQL Queries
- `metrics.sql.mysql.connections` - MySQL Connections
- `metrics.sql.mysql.queries` - MySQL Queries
- `metrics.sql.mysqli.connections` - MySQLi Connections
- `metrics.sql.mysqli.queries` - MySQLi Queries
- `metrics.sql.oci.connections` - OCI8 Connections
- `metrics.sql.oci.queries` - OCI8 Queries
- `metrics.sql.odbc.connections` - ODBC Connections
- `metrics.sql.odbc.queries` - ODBC Queries
- `metrics.sql.pdo.connections` - PDO Connections
- `metrics.sql.pdo.queries` - PDO Queries
- `metrics.sql.postgres.connections` - PostgreSQL Connections
- `metrics.sql.postgres.queries` - PostgreSQL Queries
- `metrics.sql.psycopg.connections` - psycopg Connections
- `metrics.sql.psycopg.queries` - psycopg Queries
- `metrics.sql.psycopg2.connections` - psycopg2 Connections
- `metrics.sql.pymysql.connections` - PyMySQL Connections
- `metrics.sql.pymysql.queries` - PyMySQL Queries
- `metrics.sql.queries` - SQL Queries
- `metrics.sql.ruby.activerecord.queries` - SQL Queries
- `metrics.sql.sqlite.connections` - SQLite Connections
- `metrics.sql.sqlite.queries` - SQLite Queries
- `metrics.sql.sqlite3.connections` - sqlite3 Connections
- `metrics.sql.sqlsrv.connections` - SQL Server Connections
- `metrics.sql.sqlsrv.queries` - SQL Server Queries
- `metrics.sql.sybase.connections` - Sybase Connections
- `metrics.sql.sybase.queries` - Sybase Queries
- `metrics.stash.driver.black_hole` - Stash Driver BlackHole
- `metrics.stash.driver.file_system` - Stash Driver FileSystem
- `metrics.stash.installed` - Stash installed?
- `metrics.sylius` - Sylius
- `metrics.sylius.events.legacy.sonata` - Sylius Legacy Template Events (Calls of &#96;sonata\_block\_render\_event&#96; in &#96;\_legacySonataEvent.html.twig&#96;)
- `metrics.sylius.events.sonata` - Sylius Sonata Template Events (Calls of &#96;sonata\_block\_render\_event&#96;)
- `metrics.sylius.events.templates` - Sylius Template Events (Calls of sylius\_template\_event)
- `metrics.sylius.installed` - Sylius is installed
- `metrics.sylius.version.v1_5` - Sylius Version 1.5
- `metrics.sylius.version.v1_6` - Sylius Version 1.6
- `metrics.sylius.version.v1_7` - Sylius Version 1.7
- `metrics.sylius.version.v1_8` - Sylius Version 1.8
- `metrics.sylius.view.cart` - Cart page
- `metrics.sylius.view.homepage` - Sylius Homepage
- `metrics.sylius.view.login` - Login page
- `metrics.sylius.view.product` - Sylius Product page
- `metrics.sylius.view.register` - Register page
- `metrics.sylius.view.taxon` - Sylius Taxon page
- `metrics.symfony.authentication_provider_manager` - Symfony Authentication Provider Manager
- `metrics.symfony.config_check` - Symfony Config Cache Freshness Checks
- `metrics.symfony.console` - Symfony Console
- `metrics.symfony.console.application_run` - Symfony Console Application run
- `metrics.symfony.controllers` - Symfony Controllers
- `metrics.symfony.controllers.action` - Symfony Controller Action
- `metrics.symfony.controllers.argument_resolver` - Symfony Argument Resolving
- `metrics.symfony.controllers.controller_resolver` - Symfony Controller Resolving
- `metrics.symfony.debug` - Symfony Debug
- `metrics.symfony.dotenv` - Symfony Dotenv
- `metrics.symfony.dotenv.parse` - Symfony Dotenv Parsing
- `metrics.symfony.events` - Symfony Dispatched Events
- `metrics.symfony.firewall` - Symfony Firewall
- `metrics.symfony.http_cache` - Symfony HTTP Cache
- `metrics.symfony.http_cache_esi` - Symfony HTTP Cache ESI
- `metrics.symfony.kernel` - Symfony Kernel
- `metrics.symfony.kernel.boot` - Symfony Kernel Boot
- `metrics.symfony.kernel.debug` - Symfony Kernel Debug
- `metrics.symfony.kernel.handle` - Symfony Kernel Handle
- `metrics.symfony.kernel.initialize_bundles` - Symfony Kernel bundles initialization
- `metrics.symfony.kernel.initialize_container` - Symfony Kernel container initialization
- `metrics.symfony.kernel.load_class_cache` - Symfony load classes cache
- `metrics.symfony.kernel.shutdown` - Symfony Kernel shutdown
- `metrics.symfony.kernel.terminate` - Symfony Kernel terminate
- `metrics.symfony.logger.console` - Symfony Console Logger
- `metrics.symfony.logger.monolog_bridge` - Symfony Monolog Bridge
- `metrics.symfony.messenger` - Symfony Messenger
- `metrics.symfony.messenger.dispatch` - Symfony Messenger Dispatch
- `metrics.symfony.messenger.handle` - Symfony Messenger Handling
- `metrics.symfony.messenger.worker` - Symfony Messenger Worker
- `metrics.symfony.param_converter` - Symfony Param Converter
- `metrics.symfony.polyfill` - Symfony Polyfills
- `metrics.symfony.polyfill.apcu` - Symfony apcu Polyfill
- `metrics.symfony.polyfill.iconv` - Symfony iconv Polyfill
- `metrics.symfony.polyfill.intl` - Symfony Intl Polyfill
- `metrics.symfony.polyfill.mbstring` - Symfony Mbstring Polyfill
- `metrics.symfony.polyfill.php54` - Symfony PHP 5.4 Polyfill
- `metrics.symfony.polyfill.php55` - Symfony PHP 5.5 Polyfill
- `metrics.symfony.polyfill.php56` - Symfony PHP 5.6 Polyfill
- `metrics.symfony.polyfill.php70` - Symfony PHP 7.0 Polyfill
- `metrics.symfony.polyfill.php71` - Symfony PHP 7.1 Polyfill
- `metrics.symfony.polyfill.php72` - Symfony PHP 7.2 Polyfill
- `metrics.symfony.polyfill.php73` - Symfony PHP 7.3 Polyfill
- `metrics.symfony.polyfill.php74` - Symfony PHP 7.4 Polyfill
- `metrics.symfony.polyfill.php80` - Symfony PHP 8.0 Polyfill
- `metrics.symfony.polyfill.php81` - Symfony PHP 8.1 Polyfill
- `metrics.symfony.polyfill.php82` - Symfony PHP 8.2 Polyfill
- `metrics.symfony.polyfill.php83` - Symfony PHP 8.3 Polyfill
- `metrics.symfony.polyfill.php84` - Symfony PHP 8.4 Polyfill
- `metrics.symfony.polyfill.xml` - Symfony XML Polyfill
- `metrics.symfony.process.cmds` - Process Commands
- `metrics.symfony.processes` - Process Calls
- `metrics.symfony.routing.loader` - Symfony Routing loader
- `metrics.symfony.routing.route_collection` - Symfony Routing route collection
- `metrics.symfony.routing.router` - Symfony Routing router
- `metrics.symfony.security.access_decision_manager` - Symfony Access Decision Manager
- `metrics.symfony.security.authorization_checker` - Symfony Authorization Checker
- `metrics.symfony.serializer.decode` - Symfony Serializer decode
- `metrics.symfony.serializer.denormalize` - Symfony Serializer denormalize
- `metrics.symfony.serializer.deserialize` - Symfony Serializer deserialize
- `metrics.symfony.serializer.encode` - Symfony Serializer encode
- `metrics.symfony.serializer.normalize` - Symfony Serializer normalize
- `metrics.symfony.serializer.serialize` - Symfony Serializer serialize
- `metrics.symfony.session_listener` - Symfony Session listener
- `metrics.symfony.subrequests` - Symfony Subrequests
- `metrics.symfony.yaml.reads` - YAML Reads
- `metrics.symfony_framework` - Symfony Full Stack Framework
- `metrics.threshold` - Significant calls
- `metrics.twig.attributes.ext.get` - Twig Attributes Calls with the C Extension
- `metrics.twig.attributes.get` - Twig Attributes Calls
- `metrics.twig.attributes.php.get` - Twig Attributes Calls from PHP
- `metrics.twig.compile` - Twig Template Compilations
- `metrics.twig.display` - Twig Template Displays
- `metrics.twig.render` - Twig Template Explicit Renders
- `metrics.typo3.application_run` - TYPO3 Application Runner
- `metrics.typo3.cache.flush` - TYPO3 Cache flush
- `metrics.typo3.cache.get` - TYPO3 Cache get
- `metrics.typo3.cache.has` - TYPO3 Cache has
- `metrics.typo3.cache.remove` - TYPO3 Cache remove
- `metrics.typo3.cache.set` - TYPO3 Cache set
- `metrics.typo3.cache.set_cache` - TYPO3 Cache cache initialization
- `metrics.typo3.content_object_renderer` - TYPO3 Content Object Renderer
- `metrics.typo3.controller` - TYPO3 controller
- `metrics.typo3.deprecation_log` - TYPO3 deprecationLog calls
- `metrics.typo3.dev_log` - TYPO3 devLog calls
- `metrics.typo3.dispatcher` - TYPO3 MVC dispatcher
- `metrics.typo3.fe_condition_matcher_match` - TYPO3 Condition Matcher
- `metrics.typo3.installed` - Is TYPO3 installed?
- `metrics.typo3.int_object` - TYPO3 \*\_INT rendered
- `metrics.typo3.load.configuration` - TYPO3 configuration load
- `metrics.typo3.load.ext_loaded` - TYPO3 extension loaded
- `metrics.typo3.load.extension_tables` - TYPO3 extension tables load
- `metrics.typo3.load.table_configuration_array_load` - TYPO3 table configuration array load
- `metrics.typo3.logger` - TYPO3 Logger
- `metrics.typo3.mvc_dispatcher` - TYPO3 MVC dispatcher
- `metrics.typo3.set_no_cache` - Disabling of complete frontend cache
- `metrics.typo3.sql.count` - TYPO3 Database Connection count
- `metrics.typo3.sql.delete` - TYPO3 Database Connection delete
- `metrics.typo3.sql.insert` - TYPO3 Database Connection insert
- `metrics.typo3.sql.select` - TYPO3 Database Connection select
- `metrics.typo3.sql.truncate` - TYPO3 Database Connection truncate
- `metrics.typo3.sql.update` - TYPO3 Database Connection query
- `metrics.typo3.user_object` - TYPO3 extensions / plugins rendered
- `metrics.websocket` - Web Sockets
- `metrics.websocket.read` - Web Sockets Read
- `metrics.websocket.read.go` - Web Sockets Read
- `metrics.websocket.write` - Web Sockets Write
- `metrics.websocket.write.go` - Web Sockets Write
- `metrics.woocommerce.installed` - Woocommerce installed?
- `metrics.wordpress` - WordPress
- `metrics.wordpress.apply_filters` - WordPress apply\_filters
- `metrics.wordpress.do_action` - WordPress do\_action
- `metrics.wordpress.get_footer` - WordPress get\_footer
- `metrics.wordpress.get_header` - WordPress get\_header
- `metrics.wordpress.get_sidebar` - WordPress get\_sidebar
- `metrics.wordpress.get_the_excerpt` - WordPress get\_the\_excerpt
- `metrics.wordpress.i18n.import_i18n` - WordPress import i18n
- `metrics.wordpress.load_all_options` - WordPress load\_all\_options
- `metrics.wordpress.load_template` - WordPress load\_template
- `metrics.wordpress.rewrite_flush_rules` - WordPress Rewrite flush rules
- `metrics.wordpress.wp_cache_delete` - WordPress wp\_cache\_delete
- `metrics.wordpress.wp_cache_flush` - WordPress wp\_cache\_flush
- `metrics.wordpress.wp_cache_get` - WordPress wp\_cache\_get
- `metrics.wordpress.wp_cache_set` - WordPress wp\_cache\_set
- `metrics.wordpress.wp_head` - WordPress wp\_head
- `metrics.wordpress.wp_nav_menu` - WordPress wp\_nav\_menu
- `metrics.wordpress.wp_print_footer_scripts` - WordPress wp\_print\_footer\_scripts
- `metrics.wordpress.wp_print_head_scripts` - WordPress wp\_print\_head\_scripts
- `metrics.wordpress.wp_print_styles` - WordPress wp\_print\_styles
- `metrics.xdebug` - XDebug functions
- `metrics.yii.installed` - Yii framework installed?
- `metrics.zend.config_items` - Zend Config Reads
- `metrics.zend.front_controller` - Zend Front Controller
- `metrics.zend.log.chromephp` - Zend Log calls to ChromePHP
- `metrics.zend.log.firephp` - Zend Log calls to FirePHP
- `metrics.zend.log.log_call` - Zend Log Calls for development levels
- `metrics.zend.reflection` - Zend Reflection Uses
- `metrics.zend.resources` - Zend Resources Boot
- `metrics.zend.routes` - Zend Route Matches
- `metrics.zend.search.lucene.find` - ZendSearch Lucene find
- `metrics.zend.table_metadata` - Zend Table Metadata Reads
- `metrics.zend.view_renderer` - Zend View renderer

## Custom Metrics

By default, Blackfire gives access to a large number of built-in metrics, most of them being specific to the language or popular Open-Source libraries. Based on project requirements, custom metrics can also be defined for a project.

Custom metrics can be defined in a [.blackfire.yaml file](tests#tests-blackfire-yaml). They consist in a block under the `metrics` key:

```yaml
metrics:
    markdown_to_html:
        # Short label for humans
        label: 'Markdown to HTML'

        # Longer description for humans
        description: 'Metric for Markdown to HTML conversion'

        matching_calls:
            php:
                -
                    callee: "=App\\Utils\\Markdown::toHtml"
```

> **Note**
>
> Custom metrics can also be defined using the [PHP SDK](../php/integrations/sdk#php-sdk-custom-metrics).

Besides the identifier (`markdown_to_html`), a metric must be associated with function calls, via a [metric selector](metrics#metrics-selectors), e.g. `=App\Utils\Markdown::toHtml`. [Several function selectors are available and described below](metrics#metrics-selectors).

To apply stricter constraints, you may combine `caller` and `callee` in a single block:

```yaml
metrics:
    markdown_to_html:
        matching_calls:
            php:
                -
                    caller: "=App\\Twig\\AppExtension::markdownToHtml"
                    callee: "=App\\Utils\\Markdown::toHtml"
```

Caller/callee groups are always considered **combined with a boolean AND**.

You may chain several blocks of call selectors for a given metric. In that case, these blocks are **combined with a boolean OR**:

```yaml
metrics:
    markdown_to_html:
        matching_calls:
            php:
                # Each matching call contributes to the total cost of the metric.
                -
                    caller: "=App\\Twig\\AppExtension::markdownToHtml"
                    callee: "=App\\Utils\\Markdown::toHtml"
                -
                    callee: "=App\\Utils\\AlternativeMarkdown::toHtml"
```

### Defining a Metric Selector

Defining a metric is all about selecting a sub-set of the profile function calls. A selector first character defines how to interpret the rest of the expression:

- `=`: Matches the expression exactly;
- `|`: Similar to `=`, but matches any object that is an instance of the class;
- `^`: Matches everything starting with the expression;
- `/`: Interprets the expression as a regex that should match;
- `!`: Interprets the expression as a regex that should not match.

The second part of the selector defines which function calls to match.

Here are some selector examples:

- `=Class::method`: Matches the `method` function calls on `Class`;
- `=func`: Matches the `func` function calls;
- `|Psr\Log\LoggerInterface::log`: Matches any calls to `log` on objects that are an instance of `Psr\Log\LoggerInterface`;
- `^ArrayObject::`: Matches all function calls from the `ArrayObject` class;
- `^exif_`: Matches all function calls for which the function starts with `exif_`;
- `/^Class::(method1|method2)$/`: Matches `method1` and `method2` calls from `Class`;
- `!^spl_autoload_call$!`: Matches any function/method calls but `spl_autoload_call` ones.

### Capturing Arguments

Besides matching nodes, a metric can also be used to aggregate function calls by arguments.

Blackfire aggregates all function calls into one node to make it easy to reason about resources it consumed. But sometimes, being able to have **different nodes for a function call depending on one or multiple arguments**can help if the arguments make the function behave very differently (e.g. a database function call which is very sensitive to the SQL statement to be executed).

> **Note**
>
> Arguments are displayed in the Call Graph and in the Timeline views.

> **Caution**
>
> Arguments capturing only works with the `=` (&#96;equals&#96;) selector.

When defining arguments capturing, you need to determine:

- Which argument(s) to capture with a **1-based index**.

    If the captured argument is a hash map, you may match a specific key: `1.some_key`;
- The selector for each argument to capture. All [metric selectors listed above](metrics#metrics-selectors) can be used, except `|`.

    Also, the following selectors are available:

    - `~`: Means *empty value* (or any value representing *empty*).

        This selector can be combined with any of supported selectors, meaning *empty or selector*.

        For example, `~=` means *empty or specified value* (e.g. `~=foo`means "empty or with `foo` string).

        Another example is `~^http`, meaning *empty or beginning with "http" string*.

> **Note**
>
> Captured arguments are converted into strings by the probe. As such, only string representations are considered:
>
> - Booleans are converted to `true` or `false` strings;
> - Arrays are converted to `[]` string;
> - Objects are converted to their FQCN, e.g. `App\Foo\Bar`.
>
> Captured arguments being strings, `|` cannot apply as a selector.

> **Tip**
>
> As Blackfire displays separate nodes for each unique argument, it is also a great way to better understand how the code behaves (for instance, one node per event for an event dispatcher handle method instead of one big node for all events).

#### Examples

Consider the following class:

```php
namespace App\Utils;

class Greetings
{
    public function phrase(string $greeting, string $extra): string
    {
        usleep(500000);
        return sprintf('%s %s', $greeting, $extra);
    }
}
```

**Single argument capture**

```yaml
metrics:
    greetings:
        label: Greetings phrases
        matching_calls:
            php:
                - callee:
                      selector: "=App\\Utils\\Greetings::phrase"
                      argument:
                          # Using "*" as a "catch-all" selector generates
                          # a different node per argument
                          1: "*"
```

In this example, `$greeting` argument is captured and therefore discriminates e.g. *Hello* from *Hi* greetings.

**Multiple arguments capture**

```yaml
metrics:
    greetings:
        label: Greetings phrases
        matching_calls:
            php:
                - callee:
                      selector: "=App\\Utils\\Greetings::phrase"
                      argument:
                          # Using Regexp selector.
                          1: "/^(Hello|Hi)/"
                          2: "*"
```

In this example, `$greeting` and `$extra` arguments are both being captured. Different nodes per arguments combination are generated in the callgraph.

**Hash map argument capture**

Now consider that `phrase()` method accepts a hash as an argument:

```php
namespace App\Utils;

class Greetings
{
    public function phrase(array $greeting): string
    {
        usleep(500000);
        return sprintf('%s %s', $greeting['greetings'], $greeting['phrase']);
    }
}
```

```yaml
metrics:
    greetings:
        label: Greetings phrases
        matching_calls:
            php:
                - callee:
                      selector: "=App\\Utils\\Greetings::phrase"
                      argument:
                          # Capture is based on hash map keys.
                          1.greetings: "/^(Hello|Hi)/"
                          1.phrase: "*"
```

In this example, the capture is based on the hash map keys. `1.greetings` means "value from `greetings` key of the first argument", assuming this argument is an actual hash map.

**Named (or keyword) arguments capture**

It is possible to capture arguments by their names with the following languages:

- **Python:**

```python
def greeting_phrase(greeting, extra=""):
    return f'{greeting} {extra}'

greeting_phrase(greeting='Hello', extra='World')
```

```yaml
metrics:
    greetings:
        label: Greetings phrases
        matching_calls:
            python:
                - callee:
                      selector: "=greeting_phrase"
                      argument:
                          # Capturing kwargs
                          greeting: "*"
                          extra: "*"
```

- **PHP (&gt;=7.0):**

```php
function soup(string $vegetable, string $spice = 'no spice', string $cheese = 'no cheese'): string {
    usleep(1000);
    $recipe = "Making soup with $vegetable, $spice and $cheese";

    return "$recipe\n";
}

echo soup('carrot', 'saffron', 'kiri');
echo soup('cucumber', 'mint');
// Using PHP 8 named arguments.
echo soup(cheese: 'gruyere', vegetable: 'onion');
```

```yaml
metrics:
    soup:
        label: My Yummy Soup
        matching_calls:
            php:
                - callee:
                    selector: '=soup'
                    argument:
                        vegetable: '*'
                        spice: '*'
```

### Using Custom Metrics in Assertions

Custom metrics can be used in assertions like any other metrics: the name is made of the `metrics.` prefix, then the metric name (`cache.write` in our example), and it ends with one of the available dimensions (`.peak_memory` in the example):

```yaml
"metrics.cache.write.peak_memory < 10mb"
```

> **Note**
>
> As a matter of fact, built-in metrics are defined in the exact same way as custom ones.

### Using Custom Metrics in the Timeline View

In the timeline view, all captured metrics are displayed as blocks, positioned with time offsets. In the left pane, all metrics are listed and split into 2 groups: `Metrics` and `Other Metrics`.

`Metrics`, on the top, gather *featured* metrics which are called **Layers**. These layers can result from a combination of different metrics, e.g. `markdown` being a global layer composed of `markdown.parse.parsedown`, `php_markdown.parse.parsedown`, and `commonmark.parse.parsedown`.

`Other Metrics` represent every other metrics which have been captured.

To add your metrics to the timeline, you need to set the `timeline` option to `true`:

```yaml
metrics:
    markdown_to_html:
        label: 'Markdown to HTML'
        layer: ~
        timeline: true
        matching_calls:
            php:
                -
                    callee: "=App\\Utils\\Markdown::toHtml"
```

The example above adds the `markdown_to_html` metric to the timeline view. Setting `layer` to `~` makes this metric to be considered as a layer itself.

#### Adding Markers

It is possible to add [Timeline Markers](../profiling-cookbooks/understanding-timelines#timeline-markers) directly from a metric, avoiding using the Probe SDK.

In the following example, each time the `App\Utils\Markdown::toHtml` is called, a marker with the label *Markdown to HTML* is added to the timeline.

```yaml
metrics:
    markdown_to_html:
        label: 'Markdown to HTML'
        marker: 'Markdown to HTML Timeline Marker'
        matching_calls:
            php:
                -
                    callee: "=App\\Utils\\Markdown::toHtml"
```

When using [argument capturing](metrics#metrics-capturing-arguments), it is possible to interpolate the argument's value within the marker label:

```yaml
metrics:
    greetings:
        label: 'Markdown to HTML'
        # Interpolates the value of the first argument in the marker label.
        marker: 'Greetings - ${1}'
        matching_calls:
            php:
                -
                    callee:
                        selector: "=App\\Utils\\Greetings::phrase"
                        argument:
                            1: "*"
```

#### Defining Layers

The trick to defining a new layer is to declare it and reference it to itself in the `layer` key. The following example shows how to define layers in order to group metrics under them:

```yaml
metrics:

    # Main layer, will gather dimensions from all attached metrics.
    markdown:
        label: "Markdown"
        # Self referencing metrics are layers.
        layer: markdown
        timeline: true

    # Sub-layer
    markdown.parse:
        label: "Markdown Parser"
        layer: markdown

    markdown.parse.parsedown:
        label: "Markdown Parser (erusev/parsedown)"
        # The layer this metric contributes to.
        layer: markdown.parse
        matching_calls:
            php:
                - callee: "=Parsedown::text"

    php_markdown.parse.parsedown:
        label: "Markdown Parser (dflydev/markdown)"
        # The layer this metric contributes to.
        layer: markdown.parse
        matching_calls:
            php:
                - callee: "=dflydev\\markdown\\MarkdownParser::transform"
                  caller: "!^dflydev\\\\markdown\\\\MarkdownParser::transformMarkdown!"
                - callee: "=dflydev\\markdown\\MarkdownParser::transformMarkdown"
```

#### Specifying the Contribution Type of a Metric

By default, all dimensions are contributed for each metric. It is however possible to specify if a given call contributes for its cost, its count, or a combination of both. These contribution types are displayed when hovering a metric name in the timeline view.

This can be specified in the `contrib` key for each matching call block. Available values are:

- `count+cost`: The default value; gathers both count and cost dimensions;
- `count-only`: Makes the function call contribute its number of calls only;
- `cost-only`: Makes the function call contribute its cost dimensions only.

```yaml
metrics:
    markdown_to_html:
        label: 'Markdown to HTML'
        layer: ~
        matching_calls:
            php:
                -
                    callee: "=App\\Utils\\Markdown::toHtml"
                    contrib: count-only
```

### Full Metrics DSL

```yaml
metrics:
    # Prototype
    metric_identifier:
        label:                ~
        description:          ~
        layer:                null
        timeline:             null
        matching_calls:
            php:
                contrib:              count+cost # One of "count+cost"; "cost-only"; "count-only"
                caller:
                    selector:             []
                    argument:             []
                callee:               # Required
                    selector:             []
                    argument:             []
```
