@bmatei/apollo-prometheus-exporter
v3.0.0
Published
Plugin for Apollo Server to export metrics in Prometheus format
Readme
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-clientand@bmatei/apollo-prometheus-exporternpm install prom-client @bmatei/apollo-prometheus-exporterCreate 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" |
| 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 | {} |
