Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/run-as-root/magento2-prometheus-exporter
Simple Magento 2 Prometheus Exporter.
https://github.com/run-as-root/magento2-prometheus-exporter
magento magento-extension magento-module magento2 magento2-extension magento2-module metrics prometheus prometheus-exporter prometheus-metrics
Last synced: 10 days ago
JSON representation
Simple Magento 2 Prometheus Exporter.
- Host: GitHub
- URL: https://github.com/run-as-root/magento2-prometheus-exporter
- Owner: run-as-root
- License: mit
- Created: 2019-06-14T06:53:05.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-09-20T08:13:45.000Z (about 2 months ago)
- Last Synced: 2024-10-26T13:45:12.285Z (17 days ago)
- Topics: magento, magento-extension, magento-module, magento2, magento2-extension, magento2-module, metrics, prometheus, prometheus-exporter, prometheus-metrics
- Language: PHP
- Homepage:
- Size: 374 KB
- Stars: 62
- Watchers: 12
- Forks: 20
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-magento2 - Magento 2 Prometheus Exporter - Prometheus Exporter for (Open Source Extensions / Development Utilities)
README
# Magento 2 Prometheus Exporter
![Branch stable](https://img.shields.io/badge/stable%20branch-master-blue.svg)
![](https://github.styleci.io/repos/191891355/shield)
[![codecov](https://codecov.io/gh/run-as-root/magento2-prometheus-exporter/branch/master/graph/badge.svg)](https://codecov.io/gh/run-as-root/magento2-prometheus-exporter)
[![pipeline status](https://gitlab.com/run_as_root/magento2-prometheus-exporter/badges/master/pipeline.svg)](https://gitlab.com/run_as_root/magento2-prometheus-exporter/commits/master)This Magento 2 Module exposes a new route under /metrics with Magento 2 specific metrics in the format of
[prometheus](https://prometheus.io). The different metrics are grouped into modules and can be enabled/disabled via the
Magento Backend.## Installation
Install the Module via composer by running:
```
composer require run-as-root/magento2-prometheus-exporter
php bin/magento setup:upgrade
```## Module Configuration
The modules system configuration is located under `Stores -> Configuration -> Prometheus -> Metric Configuration`. You
can enable or disable specific metrics by using the multiselect.## Prometheus Configuration
After installing the Magento Module, your Prometheus needs to get pointed to your Magento Metrics endpoint. To do so,
add the following lines to your prometheus.yml under scrape_configs:``` yaml
- job_name: 'Magento 2 Exporter'
scrape_interval: 5m
scrape_timeout: 60s
metrics_path: /metrics
# The bearer token can be generated in the Magento Admin. Using the auth is optional.
# bearer_token: YOUR_BEARER_TOKEN
static_configs:
- targets:
- your-magento-url
```## Module functionality
The module registers a cron job that runs every minute. The cronjob is responsible for aggregating the metric data. The
aggregated data is stored in the table `run_as_root_prometheus_metrics`. The added controller collects the data stored
in the table and renders the correct response for prometheus.## Metrics
The following metrics will be collected:
| Metric | Labels | TYPE | Help |
|:-------------------------------------|:--------------------------------|:--------|:--------------------------------------------------------------------------------|
| magento_orders_count_total | status, store_code | gauge | All Magento Orders |
| magento_orders_amount_total | status, store_code | gauge | Total amount of all Magento Orders |
| magento_order_items_count_total | status, store_code | gauge | Total count of orderitems |
| magento_cms_block_count_total | store_code | gauge | Total count of available cms blocks |
| magento_cms_page_count_total | store_code | gauge | Total count of available cms pages |
| magento_customer_count_total | store_code | gauge | Total count of available customer |
| magento_cronjob_broken_count_total | | gauge | Broken CronJobs occur when when status is pending but execution_time is set. |
| magento_cronjob_count_total | status, job_code | gauge | Total count of available CronJob Count. |
| magento_indexer_backlog_count_total | title | gauge | Total count of backlog item in indexer (the data from `indexer:status` command) |
| magento_shipments_count_total | source, store_code | counter | Count of Shipments created by store and source. |
| magento_catalog_category_count_total | status, menu_status, store_code | gauge | Count of Categories by store, status and menu status. |
| magento_store_count_total | status | gauge | Total count of Stores by status. |
| magento_website_count_total | | gauge | Total count websites. |
| magento_products_by_type_count_total | project_type | gauge | Total count of products by type. |## Add you own Metric
To add a new metric, you need to implement the `\RunAsRoot\PrometheusExporter\Api\MetricAggregatorInterface`. The metric
aggregator object is responsible for collecting the necessary information for the specific metric from magento and then
add a new metric record. New records can be easily added via
`\RunAsRoot\PrometheusExporter\Service\UpdateMetricService`.In addition to the implementation of the MetricAggregatorInterface, you have to add your specific Aggregator to the
`MetricAggregatorPool` defined in the `di.xml`. For example:``` xml
RunAsRoot\PrometheusExporter\Aggregator\Order\OrderAmountAggregator
RunAsRoot\PrometheusExporter\Aggregator\Order\OrderCountAggregator
RunAsRoot\PrometheusExporter\Aggregator\Order\OrderItemAmountAggregator
RunAsRoot\PrometheusExporter\Aggregator\Order\OrderItemCountAggregator
```## Contribution
If you have something to contribute, weither it's a feature, a feature request, an issue or something else, feel free
to. There are no contribution guidelines.