Apollo Prometheus Exporter
Plugin for Apollo Server to export metrics in Prometheus format.
It uses prom-client under the hood the export the metrics.
Since Apollo Server released a new major version, a new version (v2.x.y) of the exporter has been launched. Apollo Server v2 is still supported in v1.x.y. The two versions will be features-matched as much as possible.
Metrics
Name | Description | Type |
---|---|---|
apollo_server_starting |
The last timestamp when Apollo Server was starting. | Gauge |
apollo_server_closing |
The last timestamp when Apollo Server was closing. | Gauge |
apollo_query_started |
The amount of received queries. | Counter |
apollo_query_failed |
The amount of queries that failed. | Counter |
apollo_query_parse_started |
The amount of queries for which parsing has started. | Counter |
apollo_query_parse_failed |
The amount of queries for which parsing has failed. | Counter |
apollo_query_validation_started |
The amount of queries for which validation has started. | Counter |
apollo_query_validation_failed |
The amount of queries for which validation has failed. | Counter |
apollo_query_resolved |
The amount of queries which could be resolved. | Counter |
apollo_query_execution_started |
The amount of queries for which execution has started. | Counter |
apollo_query_execution_failed |
The amount of queries for which execution has failed. | Counter |
apollo_query_duration |
The total duration of a query. | Histogram |
apollo_query_field_resolution_duration |
The total duration for resolving fields. | Histogram |
For default metrics, please refer to prom-client default metrics.
Usage
-
Install
prom-client
and@bmatei/apollo-prometheus-exporter
npm install prom-client @bmatei/apollo-prometheus-exporter
-
Create an instance of the plugin
const app = express(); const prometheusExporterPlugin = createPrometheusExporterPlugin({ app });
-
Add the plugin to ApolloServer
const server = new ApolloServer({ plugins: [prometheusExporterPlugin] });
For a complete working example, please have a look over the example
project in this repository.
Options
Name | Description | Type | Default Value |
---|---|---|---|
app |
Express instance. For the moment it is used for defining the metrics endpoint. It is mandatory unless metricsEndpoint is set to false. |
Express |
undefined |
defaultLabels |
An object containing default labels to be sent with each metric. | Object |
{} |
defaultMetrics |
Flag to enable/disable the default metrics registered by prom-client . |
Boolean |
true |
defaultMetricsOptions |
Configuration object for the default metrics. | DefaultMetricsCollectorConfiguration |
{} |
durationHistogramBuckets |
A list of durations that should be used by histograms. | number[] |
[0.001, 0.005, 0.015, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 1, 5, 10] |
hostnameLabel |
Flag to enable/disable hostname label. |
Boolean |
true |
hostnameLabelName |
The name of the hostname label. |
String |
hostname |
metricsEndpoint |
Flag to enable/disable the metrics endpoint. If you disable this, you can use the registerPrometheusMetricsEndpoint method to enable the metrics endpoint. |
Boolean |
true |
metricsEndpointPath |
HTTP path where the metrics will be published. | String |
"/metrics" |
prefix |
An optional prefix for metric names. | String |
"" |
register |
Prometheus client registry to be used by Apollo Metrics. By default, it is also used by the default metrics. | Registry |
register |
skipMetrics |
A key-value map that controls if a metric is enabled or disabled. | SkipMetricsMap |
{} |