Elasticsearch stats exporter for Prometheus
Elasticsearch stats exporter for Prometheus
Prometheus exporter for various metrics about Elasticsearch and OpenSearch, written in Go.
We support all currently supported versions of Elasticsearch and OpenSearch. This project will make reasonable attempts to maintain compatibility with previous versions but considerations will be made for code maintainability and favoring supported versions. Where Elasticsearch and OpenSearch diverge, this project will make reasonable attempts to maintain compatibility with both. Some collectors may only be compatible with one or the other.
For pre-built binaries please take a look at the releases. https://github.com/prometheus-community/elasticsearch_exporter/releases
docker pull quay.io/prometheuscommunity/elasticsearch-exporter:latest
docker run --rm -p 9114:9114 quay.io/prometheuscommunity/elasticsearch-exporter:latest
Images are also published to GHCR:
docker pull ghcr.io/prometheus-community/elasticsearch-exporter:latest
docker run --rm -p 9114:9114 ghcr.io/prometheus-community/elasticsearch-exporter:latest
Example docker-compose.yml:
elasticsearch_exporter:
image: quay.io/prometheuscommunity/elasticsearch-exporter:latest
command:
- '--es.uri=http://elasticsearch:9200'
restart: always
ports:
- "127.0.0.1:9114:9114"
You can find a helm chart in the prometheus-community charts repository at https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-elasticsearch-exporter
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install [RELEASE_NAME] prometheus-community/prometheus-elasticsearch-exporter
NOTE: The exporter fetches information from an Elasticsearch cluster on every scrape, therefore having a too short scrape interval can impose load on ES master nodes, particularly if you run with --es.all and --es.indices. We suggest you measure how long fetching /_nodes/stats and /_all/_stats takes for your ES cluster to determine whether your scraping interval is too short. As a last resort, you can scrape this exporter using a dedicated job with its own scraping interval.
Below is the command line options summary:
elasticsearch_exporter --help
Argument
Introduced in Version
Description
Default
collector.clustersettings
1.6.0
If true, query stats for cluster settings (As of v1.6.0, this flag has replaced "es.cluster_settings").
false
es.uri
1.0.2
Address (host and port) of the Elasticsearch node we should connect to when running in single-target mode. Leave empty (the default) when you want to run the exporter only as a multi-target /probe endpoint. When basic auth is needed, specify as: <proto>://<user>:<password>@<host>:<port>. E.G., http://admin:pass@localhost:9200. Special characters in the user credentials need to be URL-encoded.
""
es.all
1.0.2
If true, query stats for all nodes in the cluster, rather than just the node we connect to.
false
es.indices
1.0.2
If true, query stats for all indices in the cluster.
false
es.indices_settings
1.0.4rc1
If true, query settings stats for all indices in the cluster.
false
es.indices_mappings
1.2.0
If true, query stats for mappings of all indices of the cluster.
false
es.aliases
1.0.4rc1
If true, include informational aliases metrics.
true
es.ilm
1.6.0
If true, query index lifecycle policies for indices in the cluster.
es.shards
1.0.3rc1
If true, query stats for all indices in the cluster, including shard-level stats (implies es.indices=true).
false
collector.snapshots
1.0.4rc1
If true, query stats for the cluster snapshots. (As of v1.7.0, this flag has replaced "es.snapshots").
false
collector.health-report
1.10.0
If true, query the health report (requires elasticsearch 8.7.0 or later)
false
collector.slm
If true, query stats for SLM.
false
es.data_stream
If true, query state for Data Steams.
false
es.timeout
1.0.2
Timeout for trying to get stats from Elasticsearch. (ex: 20s)
5s
es.ca
1.0.2
Path to PEM file that contains trusted Certificate Authorities for the Elasticsearch connection.
es.client-private-key
1.0.2
Path to PEM file that contains the private key for client auth when connecting to Elasticsearch.
es.client-cert
1.0.2
Path to PEM file that contains the corresponding cert for the private key to connect to Elasticsearch.
es.clusterinfo.interval
1.1.0rc1
Cluster info update interval for the cluster label
5m
es.ssl-skip-verify
1.0.4rc1
Skip SSL verification when connecting to Elasticsearch.
false
web.listen-address
1.0.2
Address to listen on for web interface and telemetry.
:9114
web.telemetry-path
1.0.2
Path under which to expose metrics.
No open issues yet, or sync has not completed.