Giter VIP home page Giter VIP logo

elasticsearch_exporter's Introduction

Elasticsearch Exporter

CircleCI Go Report Card

Prometheus exporter for various metrics about Elasticsearch, written in Go.

Installation

For pre-built binaries please take a look at the releases. https://github.com/prometheus-community/elasticsearch_exporter/releases

Docker

docker pull quay.io/prometheuscommunity/elasticsearch-exporter:latest
docker run --rm -p 9114:9114 quay.io/prometheuscommunity/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"

Kubernetes

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

Configuration

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. This could be a local node (localhost:9200, for instance), or the address of a remote Elasticsearch server. 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. http://localhost:9200
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.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
es.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. /metrics
aws.region 1.5.0 Region for AWS elasticsearch
aws.role-arn 1.6.0 Role ARN of an IAM role to assume.
version 1.0.2 Show version info on stdout and exit.

Commandline parameters start with a single - for versions less than 1.1.0rc1. For versions greater than 1.1.0rc1, commandline parameters are specified with --.

The API key used to connect can be set with the ES_API_KEY environment variable.

Elasticsearch 7.x security privileges

Username and password can be passed either directly in the URI or through the ES_USERNAME and ES_PASSWORD environment variables. Specifying those two environment variables will override authentication passed in the URI (if any).

ES 7.x supports RBACs. The following security privileges are required for the elasticsearch_exporter.

Setting Privilege Required Description
collector.clustersettings cluster monitor
exporter defaults cluster monitor All cluster read-only operations, like cluster health and state, hot threads, node info, node and cluster stats, and pending cluster tasks.
es.indices indices monitor (per index or *) All actions that are required for monitoring (recovery, segments info, index stats and status)
es.indices_settings indices monitor (per index or *)
es.indices_mappings indices view_index_metadata (per index or *)
es.shards not sure if indices or cluster monitor or both
es.snapshots cluster:admin/snapshot/status and cluster:admin/repository/get ES Forum Post
es.slm read_slm
es.data_stream monitor or manage (per index or *)

Further Information

Metrics

Name Type Cardinality Help
elasticsearch_breakers_estimated_size_bytes gauge 4 Estimated size in bytes of breaker
elasticsearch_breakers_limit_size_bytes gauge 4 Limit size in bytes for breaker
elasticsearch_breakers_tripped counter 4 tripped for breaker
elasticsearch_cluster_health_active_primary_shards gauge 1 The number of primary shards in your cluster. This is an aggregate total across all indices.
elasticsearch_cluster_health_active_shards gauge 1 Aggregate total of all shards across all indices, which includes replica shards.
elasticsearch_cluster_health_delayed_unassigned_shards gauge 1 Shards delayed to reduce reallocation overhead
elasticsearch_cluster_health_initializing_shards gauge 1 Count of shards that are being freshly created.
elasticsearch_cluster_health_number_of_data_nodes gauge 1 Number of data nodes in the cluster.
elasticsearch_cluster_health_number_of_in_flight_fetch gauge 1 The number of ongoing shard info requests.
elasticsearch_cluster_health_number_of_nodes gauge 1 Number of nodes in the cluster.
elasticsearch_cluster_health_number_of_pending_tasks gauge 1 Cluster level changes which have not yet been executed
elasticsearch_cluster_health_task_max_waiting_in_queue_millis gauge 1 Max time in millis that a task is waiting in queue.
elasticsearch_cluster_health_relocating_shards gauge 1 The number of shards that are currently moving from one node to another node.
elasticsearch_cluster_health_status gauge 3 Whether all primary and replica shards are allocated.
elasticsearch_cluster_health_timed_out gauge 1 Number of cluster health checks timed out
elasticsearch_cluster_health_unassigned_shards gauge 1 The number of shards that exist in the cluster state, but cannot be found in the cluster itself.
elasticsearch_clustersettings_stats_max_shards_per_node gauge 0 Current maximum number of shards per node setting.
elasticsearch_clustersettings_allocation_threshold_enabled gauge 0 Is disk allocation decider enabled.
elasticsearch_clustersettings_allocation_watermark_flood_stage_bytes gauge 0 Flood stage watermark as in bytes.
elasticsearch_clustersettings_allocation_watermark_high_bytes gauge 0 High watermark for disk usage in bytes.
elasticsearch_clustersettings_allocation_watermark_low_bytes gauge 0 Low watermark for disk usage in bytes.
elasticsearch_clustersettings_allocation_watermark_flood_stage_ratio gauge 0 Flood stage watermark as a ratio.
elasticsearch_clustersettings_allocation_watermark_high_ratio gauge 0 High watermark for disk usage as a ratio.
elasticsearch_clustersettings_allocation_watermark_low_ratio gauge 0 Low watermark for disk usage as a ratio.
elasticsearch_filesystem_data_available_bytes gauge 1 Available space on block device in bytes
elasticsearch_filesystem_data_free_bytes gauge 1 Free space on block device in bytes
elasticsearch_filesystem_data_size_bytes gauge 1 Size of block device in bytes
elasticsearch_filesystem_io_stats_device_operations_count gauge 1 Count of disk operations
elasticsearch_filesystem_io_stats_device_read_operations_count gauge 1 Count of disk read operations
elasticsearch_filesystem_io_stats_device_write_operations_count gauge 1 Count of disk write operations
elasticsearch_filesystem_io_stats_device_read_size_kilobytes_sum gauge 1 Total kilobytes read from disk
elasticsearch_filesystem_io_stats_device_write_size_kilobytes_sum gauge 1 Total kilobytes written to disk
elasticsearch_indices_active_queries gauge 1 The number of currently active queries
elasticsearch_indices_docs gauge 1 Count of documents on this node
elasticsearch_indices_docs_deleted gauge 1 Count of deleted documents on this node
elasticsearch_indices_deleted_docs_primary gauge 1 Count of deleted documents with only primary shards
elasticsearch_indices_docs_primary gauge 1 Count of documents with only primary shards on all nodes
elasticsearch_indices_docs_total gauge Count of documents with shards on all nodes
elasticsearch_indices_fielddata_evictions counter 1 Evictions from field data
elasticsearch_indices_fielddata_memory_size_bytes gauge 1 Field data cache memory usage in bytes
elasticsearch_indices_filter_cache_evictions counter 1 Evictions from filter cache
elasticsearch_indices_filter_cache_memory_size_bytes gauge 1 Filter cache memory usage in bytes
elasticsearch_indices_flush_time_seconds counter 1 Cumulative flush time in seconds
elasticsearch_indices_flush_total counter 1 Total flushes
elasticsearch_indices_get_exists_time_seconds counter 1 Total time get exists in seconds
elasticsearch_indices_get_exists_total counter 1 Total get exists operations
elasticsearch_indices_get_missing_time_seconds counter 1 Total time of get missing in seconds
elasticsearch_indices_get_missing_total counter 1 Total get missing
elasticsearch_indices_get_time_seconds counter 1 Total get time in seconds
elasticsearch_indices_get_total counter 1 Total get
elasticsearch_indices_indexing_delete_time_seconds_total counter 1 Total time indexing delete in seconds
elasticsearch_indices_indexing_delete_total counter 1 Total indexing deletes
elasticsearch_indices_index_current gauge 1 The number of documents currently being indexed to an index
elasticsearch_indices_indexing_index_time_seconds_total counter 1 Cumulative index time in seconds
elasticsearch_indices_indexing_index_total counter 1 Total index calls
elasticsearch_indices_mappings_stats_fields gauge 1 Count of fields currently mapped by index
elasticsearch_indices_mappings_stats_json_parse_failures_total counter 0 Number of errors while parsing JSON
elasticsearch_indices_mappings_stats_scrapes_total counter 0 Current total Elasticsearch Indices Mappings scrapes
elasticsearch_indices_mappings_stats_up gauge 0 Was the last scrape of the Elasticsearch Indices Mappings endpoint successful
elasticsearch_indices_merges_docs_total counter 1 Cumulative docs merged
elasticsearch_indices_merges_total counter 1 Total merges
elasticsearch_indices_merges_total_size_bytes_total counter 1 Total merge size in bytes
elasticsearch_indices_merges_total_time_seconds_total counter 1 Total time spent merging in seconds
elasticsearch_indices_query_cache_cache_total counter 1 Count of query cache
elasticsearch_indices_query_cache_cache_size gauge 1 Size of query cache
elasticsearch_indices_query_cache_count counter 2 Count of query cache hit/miss
elasticsearch_indices_query_cache_evictions counter 1 Evictions from query cache
elasticsearch_indices_query_cache_memory_size_bytes gauge 1 Query cache memory usage in bytes
elasticsearch_indices_query_cache_total counter 1 Size of query cache total
elasticsearch_indices_refresh_time_seconds_total counter 1 Total time spent refreshing in seconds
elasticsearch_indices_refresh_total counter 1 Total refreshes
elasticsearch_indices_request_cache_count counter 2 Count of request cache hit/miss
elasticsearch_indices_request_cache_evictions counter 1 Evictions from request cache
elasticsearch_indices_request_cache_memory_size_bytes gauge 1 Request cache memory usage in bytes
elasticsearch_indices_search_fetch_time_seconds counter 1 Total search fetch time in seconds
elasticsearch_indices_search_fetch_total counter 1 Total number of fetches
elasticsearch_indices_search_query_time_seconds counter 1 Total search query time in seconds
elasticsearch_indices_search_query_total counter 1 Total number of queries
elasticsearch_indices_segments_count gauge 1 Count of index segments on this node
elasticsearch_indices_segments_memory_bytes gauge 1 Current memory size of segments in bytes
elasticsearch_indices_settings_creation_timestamp_seconds gauge 1 Timestamp of the index creation in seconds
elasticsearch_indices_settings_stats_read_only_indices gauge 1 Count of indices that have read_only_allow_delete=true
elasticsearch_indices_settings_total_fields gauge Index setting value for index.mapping.total_fields.limit (total allowable mapped fields in a index)
elasticsearch_indices_settings_replicas gauge Index setting value for index.replicas
elasticsearch_indices_shards_docs gauge 3 Count of documents on this shard
elasticsearch_indices_shards_docs_deleted gauge 3 Count of deleted documents on each shard
elasticsearch_indices_store_size_bytes gauge 1 Current size of stored index data in bytes
elasticsearch_indices_store_size_bytes_primary gauge Current size of stored index data in bytes with only primary shards on all nodes
elasticsearch_indices_store_size_bytes_total gauge Current size of stored index data in bytes with all shards on all nodes
elasticsearch_indices_store_throttle_time_seconds_total counter 1 Throttle time for index store in seconds
elasticsearch_indices_translog_operations counter 1 Total translog operations
elasticsearch_indices_translog_size_in_bytes counter 1 Total translog size in bytes
elasticsearch_indices_warmer_time_seconds_total counter 1 Total warmer time in seconds
elasticsearch_indices_warmer_total counter 1 Total warmer count
elasticsearch_jvm_gc_collection_seconds_count counter 2 Count of JVM GC runs
elasticsearch_jvm_gc_collection_seconds_sum counter 2 GC run time in seconds
elasticsearch_jvm_memory_committed_bytes gauge 2 JVM memory currently committed by area
elasticsearch_jvm_memory_max_bytes gauge 1 JVM memory max
elasticsearch_jvm_memory_used_bytes gauge 2 JVM memory currently used by area
elasticsearch_jvm_memory_pool_used_bytes gauge 3 JVM memory currently used by pool
elasticsearch_jvm_memory_pool_max_bytes counter 3 JVM memory max by pool
elasticsearch_jvm_memory_pool_peak_used_bytes counter 3 JVM memory peak used by pool
elasticsearch_jvm_memory_pool_peak_max_bytes counter 3 JVM memory peak max by pool
elasticsearch_os_cpu_percent gauge 1 Percent CPU used by the OS
elasticsearch_os_load1 gauge 1 Shortterm load average
elasticsearch_os_load5 gauge 1 Midterm load average
elasticsearch_os_load15 gauge 1 Longterm load average
elasticsearch_process_cpu_percent gauge 1 Percent CPU used by process
elasticsearch_process_cpu_seconds_total counter 1 Process CPU time in seconds
elasticsearch_process_mem_resident_size_bytes gauge 1 Resident memory in use by process in bytes
elasticsearch_process_mem_share_size_bytes gauge 1 Shared memory in use by process in bytes
elasticsearch_process_mem_virtual_size_bytes gauge 1 Total virtual memory used in bytes
elasticsearch_process_open_files_count gauge 1 Open file descriptors
elasticsearch_snapshot_stats_number_of_snapshots gauge 1 Total number of snapshots
elasticsearch_snapshot_stats_oldest_snapshot_timestamp gauge 1 Oldest snapshot timestamp
elasticsearch_snapshot_stats_snapshot_start_time_timestamp gauge 1 Last snapshot start timestamp
elasticsearch_snapshot_stats_latest_snapshot_timestamp_seconds gauge 1 Timestamp of the latest SUCCESS or PARTIAL snapshot
elasticsearch_snapshot_stats_snapshot_end_time_timestamp gauge 1 Last snapshot end timestamp
elasticsearch_snapshot_stats_snapshot_number_of_failures gauge 1 Last snapshot number of failures
elasticsearch_snapshot_stats_snapshot_number_of_indices gauge 1 Last snapshot number of indices
elasticsearch_snapshot_stats_snapshot_failed_shards gauge 1 Last snapshot failed shards
elasticsearch_snapshot_stats_snapshot_successful_shards gauge 1 Last snapshot successful shards
elasticsearch_snapshot_stats_snapshot_total_shards gauge 1 Last snapshot total shard
elasticsearch_thread_pool_active_count gauge 14 Thread Pool threads active
elasticsearch_thread_pool_completed_count counter 14 Thread Pool operations completed
elasticsearch_thread_pool_largest_count gauge 14 Thread Pool largest threads count
elasticsearch_thread_pool_queue_count gauge 14 Thread Pool operations queued
elasticsearch_thread_pool_rejected_count counter 14 Thread Pool operations rejected
elasticsearch_thread_pool_threads_count gauge 14 Thread Pool current threads count
elasticsearch_transport_rx_packets_total counter 1 Count of packets received
elasticsearch_transport_rx_size_bytes_total counter 1 Total number of bytes received
elasticsearch_transport_tx_packets_total counter 1 Count of packets sent
elasticsearch_transport_tx_size_bytes_total counter 1 Total number of bytes sent
elasticsearch_clusterinfo_last_retrieval_success_ts gauge 1 Timestamp of the last successful cluster info retrieval
elasticsearch_clusterinfo_up gauge 1 Up metric for the cluster info collector
elasticsearch_clusterinfo_version_info gauge 6 Constant metric with ES version information as labels
elasticsearch_slm_stats_up gauge 0 Up metric for SLM collector
elasticsearch_slm_stats_total_scrapes counter 0 Number of scrapes for SLM collector
elasticsearch_slm_stats_json_parse_failures counter 0 JSON parse failures for SLM collector
elasticsearch_slm_stats_retention_runs_total counter 0 Total retention runs
elasticsearch_slm_stats_retention_failed_total counter 0 Total failed retention runs
elasticsearch_slm_stats_retention_timed_out_total counter 0 Total retention run timeouts
elasticsearch_slm_stats_retention_deletion_time_seconds gauge 0 Retention run deletion time
elasticsearch_slm_stats_total_snapshots_taken_total counter 0 Total snapshots taken
elasticsearch_slm_stats_total_snapshots_failed_total counter 0 Total snapshots failed
elasticsearch_slm_stats_total_snapshots_deleted_total counter 0 Total snapshots deleted
elasticsearch_slm_stats_total_snapshots_failed_total counter 0 Total snapshots failed
elasticsearch_slm_stats_snapshots_taken_total counter 1 Snapshots taken by policy
elasticsearch_slm_stats_snapshots_failed_total counter 1 Snapshots failed by policy
elasticsearch_slm_stats_snapshots_deleted_total counter 1 Snapshots deleted by policy
elasticsearch_slm_stats_snapshot_deletion_failures_total counter 1 Snapshot deletion failures by policy
elasticsearch_slm_stats_operation_mode gauge 1 SLM operation mode (Running, stopping, stopped)
elasticsearch_data_stream_stats_up gauge 0 Up metric for Data Stream collection
elasticsearch_data_stream_stats_total_scrapes counter 0 Total scrapes for Data Stream stats
elasticsearch_data_stream_stats_json_parse_failures counter 0 Number of parsing failures for Data Stream stats
elasticsearch_data_stream_backing_indices_total gauge 1 Number of backing indices for Data Stream
elasticsearch_data_stream_store_size_bytes gauge 1 Current size of data stream backing indices in bytes

Alerts & Recording Rules

We provide examples for Prometheus alerts and recording rules as well as an Grafana Dashboard and a Kubernetes Deployment.

The example dashboard needs the node_exporter installed. In order to select the nodes that belong to the Elasticsearch cluster, we rely on a label cluster. Depending on your setup, it can derived from the platform metadata:

For example on GCE

- source_labels: [__meta_gce_metadata_Cluster]
  separator: ;
  regex: (.*)
  target_label: cluster
  replacement: ${1}
  action: replace

Please refer to the Prometheus SD documentation to see which metadata labels can be used to create the cluster label.

Credit & License

elasticsearch_exporter is maintained by the Prometheus Community.

elasticsearch_exporter was then maintained by the nice folks from JustWatch. Then transferred this repository to the Prometheus Community in May 2021.

This package was originally created and maintained by Eric Richardson, who transferred this repository to us in January 2017.

Maintainers of this repository:

Please refer to the Git commit log for a complete list of contributors.

Contributing

We welcome any contributions. Please fork the project on GitHub and open Pull Requests for any proposed changes.

Please note that we will not merge any changes that encourage insecure behaviour. If in doubt please open an Issue first to discuss your proposal.

elasticsearch_exporter's People

Contributors

angeloskaltsikis avatar bydeath avatar caarlos0 avatar dependabot[bot] avatar discordianfish avatar dominikschulz avatar evesy avatar ewr avatar innerpeacez avatar jmcarp avatar jorgelbg avatar kaorimatz avatar ktarow avatar luarx avatar marthjod avatar matsumana avatar metalmatze avatar mjtrangoni avatar philiplhchan avatar prombot avatar rosspatil avatar seanlaff avatar sp-joseluis-ledesma avatar superq avatar sysadmind avatar themeier avatar trafex avatar wyukawa avatar yackushevas avatar zwopir avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elasticsearch_exporter's Issues

if basic auth is used, please remove user/password from err

Hi,

it would be nice to obfuscate the username and password, when basic auth is used in the es.url. Right now on level warn the url with password us displayed in the logs. This is relevant if you the exporter on kubernetes and share the kibana instance.

https://github.com/justwatchcom/elasticsearch_exporter/blob/a743c12f7f1957ec23075a07edd05d5db82f6b62/collector/nodes.go#L996

https://github.com/justwatchcom/elasticsearch_exporter/blob/a743c12f7f1957ec23075a07edd05d5db82f6b62/collector/cluster_health.go#L228

Thanks a lot and regards,

Olaf

[v1.0.2.rc2] ES role shows the same on all nodes

Just upgraded to the latest RC, however I noticed that all nodes have almost the same values for the ES role labels, only semi-correct ones are ingest node (though they show that they are also client node, which they are not):

elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="true",es_master_node="true",host="elasticin-02",instance="elasticin-02",job="elasticsearch-exporter",name="elasticin-02"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="true",es_master_node="true",host="elasticin-01",instance="elasticin-01",job="elasticsearch-exporter",name="elasticin-01"}

The rest are all wrong:

elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticmaster-03",instance="elasticmaster-03",job="elasticsearch-exporter",name="elasticmaster-03"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticmaster-02",instance="elasticmaster-02",job="elasticsearch-exporter",name="elasticmaster-02"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticmaster-01",instance="elasticmaster-01",job="elasticsearch-exporter",name="elasticmaster-01"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticdata-06",instance="elasticdata-06",job="elasticsearch-exporter",name="elasticdata-06"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticdata-05",instance="elasticdata-05",job="elasticsearch-exporter",name="elasticdata-05"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticdata-04",instance="elasticdata-04",job="elasticsearch-exporter",name="elasticdata-04"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticdata-03",instance="elasticdata-03",job="elasticsearch-exporter",name="elasticdata-03"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticdata-02",instance="elasticdata-02",job="elasticsearch-exporter",name="elasticdata-02"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticdata-01",instance="elasticdata-01",job="elasticsearch-exporter",name="elasticdata-01"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticcli-02",instance="elasticcli-02",job="elasticsearch-exporter",name="elasticcli-02"}
elasticsearch_indices_flush_time_seconds{cluster="EFKcluster",es_client_node="true",es_data_node="true",es_ingest_node="false",es_master_node="true",host="elasticcli-01",instance="elasticcli-01",job="elasticsearch-exporter",name="elasticcli-01"}

I double checked our configuration and the roles are defined correctly.

We are using Elasticsearch 5.5.0

Any ideas? any addtional info you need?

Collect es.uri from ENV Variable.

Can we have an option of getting the es.uri from env.
The preference should be in the order

  1. command line flag
  2. env variable
  3. default/locahost

Binaries for v0.3.1

First of all, thanks for keeping this project! I wonder if there is any chance to release the binaries for the latest release (0.3.1)?

Thanks a lot!

Document default values.

The default values aren't documented

For example.. what's the default for --es.all ? true or false?

Tracking ES node types

Hi guys,

I have a feature request: for elasticsearch_cluster_health_number_of_nodes metric to be split into several dimensions by esrole - i.e. master, client, data, etc.

This way it would be easy to track amount of nodes per type, because, e.g. failure of the client node has a different priority from failure of a data node.

What do you think?

tutorial on how to start from scratch

Hello,

I've several nodes running elastic, and I would like to install the exporter on each node.

Now, I've installed GO, downloading the package and running tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz adding export PATH=$PATH:/usr/local/go/bin as said here https://golang.org/doc/install

Then, following the readme i run go get -u github.com/justwatchcom/elasticsearch_exporter which ends without saying anything (is that fine?).

And, when I try to run elasticsearch_exporter --help i get a command not found .

what's the problem? i'm quite new to go and how it works..

elasticsearch_up metric

I'm using elasticsearch_up metric to display elasticsearch status in a grafana dashboard. However, for reasons that I do not understand, this metric value is constantly switching from 0 to 1 and back to 0 IF queried using the prometheus interface. Accessing the exporter metrics endpoint directly, elasticsearch_up metric allways returns the value 1!

I'm using haproxy exporter's haproxy_up metric and it works without any problem. I have no ideia what's causing this behavoir.

Any idea what might be happening here?

Helm chart for elasticsearch-exporter

Hi,

FYI, i've created a PR for the k8s helm chart repo to add a Helm chart for elasticsearch_exporter. (sadly reviewing takes way longer than i expected). Feel free to mention it in the installation part of the README when it's considered as stable (needs approval).

helm/charts#2525

-- Sven

timestamp for log entries

Hi,

it would be nice to add timestamps to each log entry to get an idea, when the connection is failing. If you run the exporter in docker/kubernetes you have no idea, when the last connection was broken.
I have no time to dd this feature, but maybe you can added.

Thanks a lot and regards,

Olaf

Allow Comma separated list of multiple ES servers

Hi there,

Thanks for this great exporter. I have been struggling to get the Prometheus exporter which supports older version i mean < 2.3.1. This works great.

Currently functionality only allows single elastic server instance -es.uri=http:/serverA:9200.

It would be great if we can pass multiple server endpoints like
-es.uri=http:/serverA:9200, serverB:9200,serverC:9200,

This way, even if Server A goes down, exporter still able to collect the data from the second server.

Typo in readme

elasticsearch_indices_indexing_index_time_seconds_total counter 1 Total index calls
elasticsearch_indices_indexing_index_total counter 1 Cumulative index time in seconds

I believe it should be vice-versa

Expose more metrics about segments, search type, ...

Thanks for the great exporter! We are migrating from graphite to prometheus and using this exporter to expose elasticsearch metrics. There are a few metrics we used to collect that don't seem to be exposed:

  • elasticsearch.indices.segments.terms_memory_in_bytes
  • elasticsearch.indices.segments.index_writer_memory_in_bytes
  • elasticsearch.indices.completion.size_in_bytes
  • elasticsearch.indices.segments.norms_memory_in_bytes
  • elasticsearch.indices.segments.stored_fields_memory_in_bytes
  • elasticsearch.indices.segments.doc_values_memory_in_bytes
  • elasticsearch.indices.segments.fixed_bit_set_memory_in_bytes
  • elasticsearch.indices.search.groups.prefix.query_total
  • elasticsearch.indices.search.groups.prefix.query_time_in_millis
  • elasticsearch.indices.suggest.total
  • elasticsearch.indices.suggest.time_in_millis
  • elasticsearch.indices.search.groups.full_text.query_total
  • elasticsearch.indices.search.groups.full_text.query_time_in_millis
  • elasticsearch.indices.search.groups.more_like.query_total
  • elasticsearch.indices.search.groups.more_like.query_time_in_millis

All those metrics are available through the node stat API. Our current implementation based on diamond and is available here.

Any chance you could add those as well?

Thanks!

Anyway to add custom condition count to metrics

Hi, Is there any way to add custom metrics which count special query result such as:

es_query_count{app="xxx",level="warn",node="node1",...} 10

so I can get warning level log quantity at one hour

Monitoring if Elasticsearch is Down

Hi there,

I'm trying to monitor my elasticsearch instance so that if it's down an alert is triggered.

I created this basic rule -

# Alert if elasticsearch is unreachable for >1 minute.
ALERT ElasticSearchDown
  IF elasticsearch_up == 0
  FOR 1m
  WITH {
    severity="page"
  }
  SUMMARY "Instance {{$labels.instance}} elasticsearch is down."
  DESCRIPTION "{{$labels.instance}} of job {{$labels.job}} has been down for more than 1 minutes."

But the issue I'm facing is that if I issue a shutdown using the following command -

 curl -XPOST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'

Instead of the metrics reflecting that Elasticsearch is down - all the metrics disappear!

Is there a better way to monitor that Elasticsearch is running and shouldn't the metric 'elasticsearch_up' == 0 if the elasticsearch_exporter cannot reach Elasticsearch?

Prefix for index-level metrics

I am going to implement index-level metrics using the indices API. As I can see, the "indices" metric prefix is already used for metrics obtained via /_nodes/stats - for example, indices_filter_cache_memory_size_bytes.

I guess renaming the metrics is not an option, since multiple people are already using the exporter. I was thinking about using "index", i.e.:

  • index_filter_cache_memory_size_bytes will have cluster and index labels
  • indices_filter_cache_memory_size_bytes will remain as it currently is, with cluster and node labels

What do you think?

how to distinguish two nodes on the same host

hi
if two nodes are on the same host, the metrics exposed both use the ip as the node name.
eg:

elasticsearch_thread_pool_active_count{cluster="ops-es",node="172.18.20.57",type="bulk"} 0 

so how to distinguish metrics between two nodes?

+elasticsearch_filesystem_data_used/free_percent

Add:

  • elasticsearch_filesystem_data_used_percent
  • elasticsearch_filesystem_data_free_percent
    (Calculated by existing metrics)

Reason: To be able to easily add an alarm from elasticsearch_filesystem_data_used_percent metric.

Docker image?

Would be lovely to have a docker image for this.

I tried building with a Dockerfile that matches the consul_exporter, but I get the following error:

# Executing 4 build triggers
Trigger 0, COPY    . /app
Step 0 : COPY . /app
Trigger 1, RUN     /bin/go-build
Step 0 : RUN /bin/go-build
 ---> Running in 9eca28664377
fetch http://dl-4.alpinelinux.org/alpine/v3.2/main/x86_64/APKINDEX.tar.gz
(1/25) Installing run-parts (4.4-r0)
(2/25) Installing openssl (1.0.2d-r0)
(3/25) Installing lua5.2-libs (5.2.4-r0)
(4/25) Installing lua5.2 (5.2.4-r0)
(5/25) Installing ncurses-terminfo-base (5.9-r3)
(6/25) Installing ncurses-widec-libs (5.9-r3)
(7/25) Installing lua5.2-posix (33.3.1-r2)
(8/25) Installing ca-certificates (20141019-r2)
(9/25) Installing libssh2 (1.5.0-r0)
(10/25) Installing curl (7.42.1-r0)
(11/25) Installing expat (2.1.0-r1)
(12/25) Installing pcre (8.37-r1)
(13/25) Installing git (2.4.1-r0)
(14/25) Installing libbz2 (1.0.6-r3)
(15/25) Installing libffi (3.2.1-r0)
(16/25) Installing gdbm (1.11-r0)
(17/25) Installing ncurses-libs (5.9-r3)
(18/25) Installing readline (6.3.008-r0)
(19/25) Installing sqlite-libs (3.8.10.2-r0)
(20/25) Installing python (2.7.10-r1)
(21/25) Installing mercurial (3.4-r0)
(22/25) Installing bzr (2.6.0-r1)
(23/25) Installing make (4.1-r0)
(24/25) Installing vim (7.4.712-r0)
(25/25) Installing build-deps (0)
Executing busybox-1.23.2-r0.trigger
Executing ca-certificates-20141019-r2.trigger
OK: 131 MiB in 43 packages
(1/1) Installing tar (1.28-r0)
Executing busybox-1.23.2-r0.trigger
OK: 132 MiB in 44 packages
make: Warning: File 'Makefile.COMMON' has modification time 73 s in the future
make: warning:  Clock skew detected.  Your build may be incomplete.
make: Warning: File 'Makefile.COMMON' has modification time 73 s in the future
make: warning:  Clock skew detected.  Your build may be incomplete.
make: Warning: File 'Makefile.COMMON' has modification time 73 s in the future
Go version 1.4.2 required but not found in PATH.
About to download and install go1.4.2 to /app/.build/go1.4.2
Abort now if you want to manually install it system-wide instead.

mkdir -p /app/.build/go1.4.2
curl -L https://golang.org/dl/go1.4.2.linux-amd64.tar.gz | tar -C /app/.build/go1.4.2 --strip 1 -xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    87  100    87    0     0    201      0 --:--:-- --:--:-- --:--:--   235
100 59.5M  100 59.5M    0     0   640k      0  0:01:35  0:01:35 --:--:--  728k
mkdir -p /app/.build/gopath/src/github.com/prometheus/
ln -s /app /app/.build/gopath/src/github.com/prometheus/elasticsearch_exporter
GOROOT=/app/.build/go1.4.2 GOPATH=/app/.build/gopath /app/.build/go1.4.2/bin/go build  -o elasticsearch_exporter
elasticsearch_exporter.go:15:2: cannot find package "github.com/prometheus/client_golang/prometheus" in any of:
    /app/.build/go1.4.2/src/github.com/prometheus/client_golang/prometheus (from $GOROOT)
    /app/.build/gopath/src/github.com/prometheus/client_golang/prometheus (from $GOPATH)
Makefile.COMMON:95: recipe for target 'elasticsearch_exporter' failed
make: *** [elasticsearch_exporter] Error 1
The command '/bin/sh -c /bin/go-build' returned a non-zero code: 2

Time metrics use Milliseconds instead of base unit - seconds

Great work on this exporter! we are using it with great results 👍

One small comment, the following metrics use Milliseconds instead of a base unit (seconds)

elasticsearch_indices_flush_time_ms_total
elasticsearch_indices_indexing_index_time_ms_tot
elasticsearch_indices_merges_total_time_ms_total
elasticsearch_indices_refresh_total_time_ms_total
elasticsearch_indices_store_throttle_time_ms_total
elasticsearch_indices_search_query_time_ms

Is there any specific reason to use ms instead of sec?

I know I'm probably nit-picking here, but was reviewing the best practices from Prometheus and they seem to suggest to use base units, and leave handling the presentation in the Dashboarding tool (i.e. Grafana).

...should use base units (e.g. seconds, bytes, meters - not milliseconds, megabytes, kilometers).

https://prometheus.io/docs/practices/naming/

Any thoughts?

Inconsistency in README

In the README file you refer to tag version 1.0.1 but some of the configuration arguments like es.indices and version are not available for that version tag.

First thing that you would do in this case is use the latest tag assuming there is a new release but that tag points to 1.0.1 instead of 1.0.2rc2 which would be latest.

It's a bit confusing.

flag provided but not defined: -es.indices
Usage of elasticsearch_exporter:
  -es.all
    	Export stats for all nodes in the cluster.
  -es.ca string
    	Path to PEM file that conains trusted CAs for the Elasticsearch connection.
  -es.client-cert string
    	Path to PEM file that conains the corresponding cert for the private key to connect to Elasticsearch.
  -es.client-private-key string
    	Path to PEM file that conains the private key for client auth when connecting to Elasticsearch.
  -es.timeout duration
    	Timeout for trying to get stats from Elasticsearch. (default 5s)
  -es.uri string
    	HTTP API address of an Elasticsearch node. (default "http://localhost:9200")
  -web.listen-address string
    	Address to listen on for web interface and telemetry. (default ":9108")
  -web.telemetry-path string
    	Path under which to expose metrics. (default "/metrics")

Missing Metrics

I've set this up with the following kubernetes container spec:

      - name: elasticsearch-exporter
        image: justwatch/elasticsearch_exporter:1.0.1
        args:
        - --es.uri=http://localhost:9200
        - --es.all=true
        ports:
        - containerPort: 9108
          name: es-exp

Should I be doing anything else to get all the metrics?
The metrics I'm seeing in prometheus don't match with the metrics listed in the readme.

elasticsearch_cluster_health_json_parse_failures
elasticsearch_cluster_health_total_scrapes
elasticsearch_cluster_health_up
elasticsearch_node_health_json_parse_failures
elasticsearch_node_health_total_scrapes
elasticsearch_node_health_up

I'm using elasticsearch version 2.4.1

How to fetch indices names

This is not an issue but rather a question to the team.

How do i fetch the name of indices using the elasticsearch_exported. I have properly set it up and i am able to display other metrics which are available. But i do not seem to find any metrics that can display the indices names. My use case is to display it as a table in grafana to view live data ingestion.

failed to decode cluster health

I am getting these warnings from the exporter when running against an elasticsearch cluster at version 5.4.1 with the prebuilt exporter 1.0.0-rc1.linux-amd64:

level=warn msg="failed to decode cluster health" err="json: cannot unmarshal number into Go struct field clusterHealthResponse.status of type string"

All of my configuration appears to be correct for the exporter. The elasticsearch cluster itself is healthy and in active use. I can query for the /_cluster/health manually using curl, and it returns the following:

{
    "active_primary_shards": 141,
    "active_shards": 348,
    "active_shards_percent_as_number": 100.0,
    "cluster_name": "<cluster_name>",
    "delayed_unassigned_shards": 0,
    "initializing_shards": 0,
    "number_of_data_nodes": 3,
    "number_of_in_flight_fetch": 0,
    "number_of_nodes": 4,
    "number_of_pending_tasks": 0,
    "relocating_shards": 0,
    "status": "green",
    "task_max_waiting_in_queue_millis": 0,
    "timed_out": false,
    "unassigned_shards": 0
}

Any ideas as to what the issue may be?

Code no longer builds due to deprecation of Counter.Set()

When building this code with the latest Prometheus client library, I get:

# github.com/ewr/elasticsearch_exporter
./elasticsearch_exporter.go:300: e.counterVecs["jvm_gc_collection_seconds_count"].WithLabelValues(allStats.ClusterName, stats.Host, collector).Set undefined (type prometheus.Counter has no field or method Set)
./elasticsearch_exporter.go:301: e.counterVecs["jvm_gc_collection_seconds_sum"].WithLabelValues(allStats.ClusterName, stats.Host, collector).Set undefined (type prometheus.Counter has no field or method Set)
./elasticsearch_exporter.go:312: e.counterVecs["thread_pool_completed_count"].WithLabelValues(allStats.ClusterName, stats.Host, pool).Set undefined (type prometheus.Counter has no field or method Set)
./elasticsearch_exporter.go:313: e.counterVecs["thread_pool_rejected_count"].WithLabelValues(allStats.ClusterName, stats.Host, pool).Set undefined (type prometheus.Counter has no field or method Set)
./elasticsearch_exporter.go:330: e.counters["indices_fielddata_evictions"].WithLabelValues(allStats.ClusterName, stats.Host).Set undefined (type prometheus.Counter has no field or method Set)
./elasticsearch_exporter.go:333: e.counters["indices_filter_cache_evictions"].WithLabelValues(allStats.ClusterName, stats.Host).Set undefined (type prometheus.Counter has no field or method Set)
./elasticsearch_exporter.go:336: e.counters["indices_query_cache_evictions"].WithLabelValues(allStats.ClusterName, stats.Host).Set undefined (type prometheus.Counter has no field or method Set)
./elasticsearch_exporter.go:339: e.counters["indices_request_cache_evictions"].WithLabelValues(allStats.ClusterName, stats.Host).Set undefined (type prometheus.Counter has no field or method Set)
./elasticsearch_exporter.go:348: e.counters["indices_store_throttle_time_ms_total"].WithLabelValues(allStats.ClusterName, stats.Host).Set undefined (type prometheus.Counter has no field or method Set)
./elasticsearch_exporter.go:350: e.counters["indices_flush_total"].WithLabelValues(allStats.ClusterName, stats.Host).Set undefined (type prometheus.Counter has no field or method Set)
./elasticsearch_exporter.go:350: too many errors

Turns out Counter.Set() has been removed. the code needs to be rewritten to no longer use Counter, but NewConstMetric() instead.

Stale cluster health status exposed when `elasticsearch_cluster_health_up` is 0.

I've run into a case where the ES node being scraped by elasticsearch_exporter went down, but elasticsearch_cluster_health_status{color="green"} reported 1, even though elasticsearch_cluster_health_up reported 0.

I think what happens is that the last value of the last successful scrape is retained and re-exposed. This seems wrong to me. I expect none of the metrics other than up, total_scrapes and json_parse_failures to be exposed for failed scrapes.

I didn't verify the nodes and indices collectors in detail, but the code pattern looks the same, so I suspect they have the same issue.

filter cache was already renamed in Elasticsearch 2.0

According to the offical documentation, filter cache was already renamed in 2.0

https://www.elastic.co/guide/en/elasticsearch/reference/2.0/filter-cache.html

The filter cache has been renamed Node Query Cache


In 0.90, it seems had Node Filter Cache and Index Filter Cache.

https://www.elastic.co/guide/en/elasticsearch/reference/0.90/index-modules-cache.html


I confirmed GET /_nodes/stats with 5.5.1 and I got result the following.
In fact, There are no metrics the name of Filter Cache.

"query_cache": {
    "memory_size_in_bytes": 14116087,
    "total_count": 3772326,
    "hit_count": 3001713,
    "miss_count": 770613,
    "cache_size": 10870,
    "cache_count": 15374,
    "evictions": 4504
},
"fielddata": {
    "memory_size_in_bytes": 37104,
    "evictions": 0
},
"request_cache": {
    "memory_size_in_bytes": 158617846,
    "evictions": 298639,
    "hit_count": 61328,
    "miss_count": 475752
},

I think that it is better to remove the following, what do you think?

  • elasticsearch_indices_filter_cache_evictions
  • elasticsearch_indices_filter_cache_memory_size_bytes

If you agree, I'll fix and PR it.
In addition, I would like to add the following.

  • elasticsearch_indices_query_cache_hit_rate (hit_count / total_count * 100)
  • elasticsearch_indices_query_cache_total_count
  • elasticsearch_indices_query_cache_hit_count
  • elasticsearch_indices_query_cache_miss_count
  • elasticsearch_indices_query_cache_cache_size
  • elasticsearch_indices_query_cache_cache_count
  • elasticsearch_indices_request_cache_hit_count
  • elasticsearch_indices_request_cache_miss_count

Unassigned Shards count not showing

When we do the following curl command we see a difference in unassigned shard count and a difference between number_of_nodes vs number_of_data_nodes in prometheus. in prometheus it show unassigned_shards = 0
Nodes = 75
Data_Nodes = 75

$ curl http://x.x.x.x.x.x:9200/_cluster/health | jq .
{
  "cluster_name": "logsearch",
  "status": "yellow",
  "timed_out": false,
  "number_of_nodes": 104,
  "number_of_data_nodes": 75,
  "active_primary_shards": 561,
  "active_shards": 1120,
  "relocating_shards": 0,
  "initializing_shards": 0,
  "unassigned_shards": 2,
  "delayed_unassigned_shards": 0,
  "number_of_pending_tasks": 0,
  "number_of_in_flight_fetch": 0,
  "task_max_waiting_in_queue_millis": 0,
  "active_shards_percent_as_number": 99.8217468805704
}```

Document custom node exporter labels in grafana example

It looks like the sample dashboard uses metrics from the prometheus node exporter, like node_memory_MemTotal, that include the cluster label: https://github.com/justwatchcom/elasticsearch_exporter/blob/master/examples/grafana/dashboard.json#L156. This label isn't included in the node exporter by default, so I'm guessing you're adding custom labels in your scrape_configs. It would be useful to add a note describing this requirement and showing examples of how to add the custom labels, since several panels in the example dashboard won't work otherwise.

Add support for --version command line parameter

So version can be determined in a manner similar to the official prometheus clients.

It should probably be formatted similar to the official clients also:

  • prometheus, version 1.7.2 (branch: HEAD, revision: 22eadbe635528fa17b99a7635fed6b6018103042)

Error while querying Elasticsearch for nodes stats

Hi,

i run the latest version (0.3.3) with kubernetes in the same pod as a elasticsearch client node
I see this error in te logs, and in the /metrics , only the exporter internal metrics are present

kubectl logs es-client-286494296-74hnb es-exporter -n logging -f 
2017/06/16 15:06:58 Starting Server: :9108
2017/06/16 15:07:25 Error while querying Elasticsearch for nodes stats: Get http://127.0.0.1:9200/_nodes/_local/stats: dial tcp 127.0.0.1:9200: getsockopt: connection refused

if i run the same via curl .... in the same container ... it does work, any ideas?

kubectl exec -ti es-client-286494296-74hnb -c es-exporter curl http://127.0.0.1:9200/_nodes/_local/stats -n logging
{"_nodes":{"total":1,"successful":1,"failed":0},"cluster_name":"1.kube-logging","nodes":{"lOvgYpyoT9SZ7tNHJhuihg":{"timestamp":1497619887846,"name":"es-client-286494296-74hnb","transport_address":"10.2.1.140:9300","host":"10.2.1.140","ip":"10.2.1.140:9300","roles":["ingest"],"indices":{"docs":{"count":0,"deleted":0},"store":{"size_in_bytes":0,"throttle_time_in_millis":0},"indexing":{"index_total":0,"index_time_in_millis":0,"index_current":0,"index_failed":0,"delete_total":0,"delete_time_in_millis":0,"delete_current":0,"noop_update_total":0,"is_throttled":false,"throttle_time_in_millis":0},"get":{"total":0,"time_in_millis":0,"exists_total":0,"exists_time_in_millis":0,"missing_total":0,"missing_time_in_millis":0,"current":0},"search":{"open_contexts":0,"query_total":0,"query_time_in_millis":0,"query_current":0,"fetch_total":0,"fetch_time_in_millis":0,"fetch_current":0,"scroll_total":0,"scroll_time_in_millis":0,"scroll_current":0,"suggest_total":0,"suggest_time_in_millis":0,"suggest_current":0},"merges":{"current":0,"current_docs":0,"current_size_in_bytes":0,"total":0,"total_time_in_millis":0,"total_docs":0,"total_size_in_bytes":0,"total_stopped_time_in_millis":0,"total_throttled_time_in_millis":0,"total_auto_throttle_in_bytes":0},"refresh":{"total":0,"total_time_in_millis":0,"listeners":0},"flush":{"total":0,"total_time_in_millis":0},"warmer":{"current":0,"total":0,"total_time_in_millis":0},"query_cache":{"memory_size_in_bytes":0,"total_count":0,"hit_count":0,"miss_count":0,"cache_size":0,"cache_count":0,"evictions":0},"fielddata":{"memory_size_in_bytes":0,"evictions":0},"completion":{"size_in_bytes":0},"segments":{"count":0,"memory_in_bytes":0,"terms_memory_in_bytes":0,"stored_fields_memory_in_bytes":0,"term_vectors_memory_in_bytes":0,"norms_memory_in_bytes":0,"points_memory_in_bytes":0,"doc_values_memory_in_bytes":0,"index_writer_memory_in_bytes":0,"version_map_memory_in_bytes":0,"fixed_bit_set_memory_in_bytes":0,"max_unsafe_auto_id_timestamp":-9223372036854775808,"file_sizes":{}},"translog":{"operations":0,"size_in_bytes":0},"request_cache":{"memory_size_in_bytes":0,"evictions":0,"hit_count":0,"miss_count":0},"recovery":{"current_as_source":0,"current_as_target":0,"throttle_time_in_millis":0}},"os":{"timestamp":1497619887847,"cpu":{"percent":8,"load_average":{"1m":2.65,"5m":2.29,"15m":2.25}},"mem":{"total_in_bytes":135177543680,"free_in_bytes":104814276608,"used_in_bytes":30363267072,"free_percent":78,"used_percent":22},"swap":{"total_in_bytes":0,"free_in_bytes":0,"used_in_bytes":0}},"process":{"timestamp":1497619887848,"open_file_descriptors":805,"max_file_descriptors":1048576,"cpu":{"percent":0,"total_in_millis":25700},"mem":{"total_virtual_in_bytes":21566730240}},"jvm":{"timestamp":1497619887848,"uptime_in_millis":1409494,"mem":{"heap_used_in_bytes":867568984,"heap_used_percent":20,"heap_committed_in_bytes":4151836672,"heap_max_in_bytes":4151836672,"non_heap_used_in_bytes":69666280,"non_heap_committed_in_bytes":74113024,"pools":{"young":{"used_in_bytes":128411744,"max_in_bytes":1145372672,"peak_used_in_bytes":1145372672,"peak_max_in_bytes":1145372672},"survivor":{"used_in_bytes":142588752,"max_in_bytes":143130624,"peak_used_in_bytes":142588752,"peak_max_in_bytes":143130624},"old":{"used_in_bytes":596568488,"max_in_bytes":2863333376,"peak_used_in_bytes":596568488,"peak_max_in_bytes":2863333376}}},"threads":{"count":170,"peak_count":170},"gc":{"collectors":{"young":{"collection_count":2,"collection_time_in_millis":1030},"old":{"collection_count":1,"collection_time_in_millis":789}}},"buffer_pools":{"direct":{"count":111,"used_in_bytes":692142088,"total_capacity_in_bytes":692142087},"mapped":{"count":0,"used_in_bytes":0,"total_capacity_in_bytes":0}},"classes":{"current_loaded_count":9576,"total_loaded_count":9576,"total_unloaded_count":0}},"thread_pool":{"bulk":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"fetch_shard_started":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"fetch_shard_store":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"flush":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"force_merge":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"generic":{"threads":4,"queue":0,"active":0,"rejected":0,"largest":4,"completed":1549},"get":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"index":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"listener":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"management":{"threads":5,"queue":0,"active":1,"rejected":0,"largest":5,"completed":544},"refresh":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"search":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"snapshot":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0},"warmer":{"threads":0,"queue":0,"active":0,"rejected":0,"largest":0,"completed":0}},"fs":{"timestamp":1497619887849,"total":{"total_in_bytes":966052671488,"free_in_bytes":931348103168,"available_in_bytes":891423580160,"spins":"true"},"data":[{"path":"/data/data/nodes/0","mount":"/data (/dev/sda9)","type":"ext4","total_in_bytes":966052671488,"free_in_bytes":931348103168,"available_in_bytes":891423580160,"spins":"true"}],"io_stats":{"devices":[{"device_name":"sda9","operations":45293,"read_operations":150,"write_operations":45143,"read_kilobytes":8692,"write_kilobytes":4391960}],"total":{"operations":45293,"read_operations":150,"write_operations":45143,"read_kilobytes":8692,"write_kilobytes":4391960}}},"transport":{"server_open":67,"rx_count":3383,"rx_size_in_bytes":1043782,"tx_count":3383,"tx_size_in_bytes":5931618},"http":{"current_open":1,"total_opened":25},"breakers":{"request":{"limit_size_in_bytes":2491102003,"limit_size":"2.3gb","estimated_size_in_bytes":0,"estimated_size":"0b","overhead":1.0,"tripped":0},"fielddata":{"limit_size_in_bytes":2491102003,"limit_size":"2.3gb","estimated_size_in_bytes":0,"estimated_size":"0b","overhead":1.03,"tripped":0},"in_flight_requests":{"limit_size_in_bytes":4151836672,"limit_size":"3.8gb","estimated_size_in_bytes":0,"estimated_size":"0b","overhead":1.0,"tripped":0},"parent":{"limit_size_in_bytes":2906285670,"limit_size":"2.7gb","estimated_size_in_bytes":0,"estimated_size":"0b","overhead":1.0,"tripped":0}},"script":{"compilations":0,"cache_evictions":0},"discovery":{"cluster_state_queue":{"total":0,"pending":0,"committed":0}},"ingest":{"total":{"count":0,"time_in_millis":0,"current":0,"failed":0},"pipelines":{}}}}} 

Label node returns IP instead of hostname

On ES 1.x it used to return:

elasticsearch_thread_pool_threads_count{cluster="monitoring",node="elasticsearch-data-n1-v211-p0-b7707",type="get"}

Now on ES 2.1.1:

elasticsearch_thread_pool_threads_count{cluster="monitoring",node="10.244.6.19",type="get"}

ElasticSearch /_nodes output:

{
  "cluster_name" : "monitoring",
  "nodes" : {
    "3V6hkcaOQZyTtGpun7-viw" : {
      "name" : "elasticsearch-data-n2-v211-p0-jhxix",
      "transport_address" : "10.244.6.20:9300",
      "host" : "10.244.6.20",
      "ip" : "10.244.6.20",
      "version" : "2.1.1",
      "build" : "40e2c53",
      "http_address" : "10.244.6.20:9200",
      "attributes" : {
        "master" : "false"
      },
      "settings" : {
        "cluster" : {
          "name" : "monitoring"
        },
        "index" : {
          "translog" : {
            "flush_threshold_ops" : "50000"
          }
        },
        "bootstrap" : {
          "mlockall" : "false"
        },
        "script" : {
          "inline" : "sandbox",
          "indexed" : "sandbox",
          "file" : "off"
        },
        "network" : {
          "host" : "0.0.0.0"
        },
        "cloud" : {
          "kubernetes" : {
            "namespace" : "default",
            "service" : "elasticsearch-cluster"
          }
        },
        "node" : {
          "data" : "true",
          "name" : "elasticsearch-data-n2-v211-p0-jhxix",
          "master" : "false"
        },
        "path" : {
          "data" : "/elasticsearch/data",
          "logs" : "/elasticsearch/log",
          "plugins" : "/elasticsearch/plugins",
          "work" : "/elasticsearch/work",
          "home" : "/elasticsearch"
        },
        "indices" : {
          "cache" : {
            "filter" : {
              "size" : "30%"
            }
          },
          "memory" : {
            "index_buffer_size" : "20%"
          },
          "recovery" : {
            "concurrent_streams" : "12",
            "translog_size" : "2mb",
            "translog_ops" : "4000",
            "max_bytes_per_sec" : "60mb",
            "file_chunk_size" : "2mb"
          },
          "store" : {
            "throttle" : {
              "max_bytes_per_sec" : "40mb"
            }
          },
          "breaker" : {
            "fielddata" : {
              "limit" : "3584mb"
            }
          },
          "fielddata" : {
            "cache" : {
              "size" : "3072mb"
            }
          }
        },
        "security" : {
          "manager" : {
            "enabled" : "false"
          }
        },
        "marvel" : {
          "agent" : {
            "enabled" : "false"
          }
        },
        "discovery" : {
          "type" : "kubernetes",
          "zen" : {
            "ping" : {
              "multicast" : {
                "enabled" : "false"
              }
            }
          }
        },
        "merge" : {
          "policy" : {
            "merge_factor" : "30"
          }
        },
        "name" : "elasticsearch-data-n2-v211-p0-jhxix",
        "action" : {
          "disable_delete_all_indices" : "true"
        },
        "client" : {
          "type" : "node"
        },
        "http" : {
          "enabled" : "true",
          "max_content_length" : "100mb"
        },
        "config" : {
          "ignore_system_properties" : "true"
        }
      },
      "os" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "available_processors" : 4,
        "allocated_processors" : 4
      },
      "process" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "id" : 12,
        "mlockall" : false
      },
      "jvm" : {
        "pid" : 12,
        "version" : "1.8.0_66",
        "vm_name" : "Java HotSpot(TM) 64-Bit Server VM",
        "vm_version" : "25.66-b17",
        "vm_vendor" : "Oracle Corporation",
        "start_time" : "2016-01-19T20:38:00.327Z",
        "start_time_in_millis" : 1453235880327,
        "mem" : {
          "heap_init" : "4gb",
          "heap_init_in_bytes" : 4294967296,
          "heap_max" : "3.9gb",
          "heap_max_in_bytes" : 4260102144,
          "non_heap_init" : "2.4mb",
          "non_heap_init_in_bytes" : 2555904,
          "non_heap_max" : "0b",
          "non_heap_max_in_bytes" : 0,
          "direct_max" : "3.9gb",
          "direct_max_in_bytes" : 4260102144
        },
        "gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ],
        "memory_pools" : [ "Code Cache", "Metaspace", "Compressed Class Space", "Par Eden Space", "Par Survivor Space", "CMS Old Gen" ]
      },
      "thread_pool" : {
        "force_merge" : {
          "type" : "fixed",
          "min" : 1,
          "max" : 1,
          "queue_size" : -1
        },
        "percolate" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "fetch_shard_started" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "listener" : {
          "type" : "fixed",
          "min" : 2,
          "max" : 2,
          "queue_size" : -1
        },
        "index" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 200
        },
        "refresh" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "suggest" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "generic" : {
          "type" : "cached",
          "keep_alive" : "30s",
          "queue_size" : -1
        },
        "warmer" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "search" : {
          "type" : "fixed",
          "min" : 7,
          "max" : 7,
          "queue_size" : 1000
        },
        "flush" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "fetch_shard_store" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "management" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 5,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "get" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "bulk" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 50
        },
        "snapshot" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        }
      },
      "transport" : {
        "bound_address" : [ "[::]:9300" ],
        "publish_address" : "10.244.6.20:9300",
        "profiles" : { }
      },
      "http" : {
        "bound_address" : [ "[::]:9200" ],
        "publish_address" : "10.244.6.20:9200",
        "max_content_length" : "100mb",
        "max_content_length_in_bytes" : 104857600
      },
      "plugins" : [ {
        "name" : "analysis-phonetic",
        "version" : "2.1.1",
        "description" : "The Phonetic Analysis plugin integrates phonetic token filter analysis with elasticsearch.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.analysis.AnalysisPhoneticPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "cloud-kubernetes",
        "version" : "2.1.1",
        "description" : "Elasticsearch Kubernetes cloud plugin",
        "jvm" : true,
        "classname" : "io.fabric8.elasticsearch.plugin.discovery.kubernetes.KubernetesDiscoveryPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "hq",
        "version" : "1.0.0",
        "description" : "Elastic-HQ",
        "url" : "/_plugin/hq/",
        "jvm" : false,
        "site" : true
      }, {
        "name" : "lang-javascript",
        "version" : "2.1.1",
        "description" : "The JavaScript language plugin allows to have javascript as the language of scripts to execute.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.javascript.JavaScriptPlugin",
        "isolated" : true,
        "site" : false
      } ]
    },
    "zzUlKYapSYyieT530W787A" : {
      "name" : "elasticsearch-master-n0-v211-p0-sb10d",
      "transport_address" : "10.244.3.33:9300",
      "host" : "10.244.3.33",
      "ip" : "10.244.3.33",
      "version" : "2.1.1",
      "build" : "40e2c53",
      "http_address" : "10.244.3.33:9200",
      "attributes" : {
        "data" : "false",
        "master" : "true"
      },
      "settings" : {
        "cluster" : {
          "name" : "monitoring"
        },
        "index" : {
          "translog" : {
            "flush_threshold_ops" : "50000"
          }
        },
        "bootstrap" : {
          "mlockall" : "false"
        },
        "script" : {
          "inline" : "sandbox",
          "indexed" : "sandbox",
          "file" : "off"
        },
        "network" : {
          "host" : "0.0.0.0"
        },
        "cloud" : {
          "kubernetes" : {
            "namespace" : "default",
            "service" : "elasticsearch-cluster"
          }
        },
        "node" : {
          "data" : "false",
          "name" : "elasticsearch-master-n0-v211-p0-sb10d",
          "master" : "true"
        },
        "path" : {
          "data" : "/elasticsearch/data",
          "logs" : "/elasticsearch/log",
          "plugins" : "/elasticsearch/plugins",
          "work" : "/elasticsearch/work",
          "home" : "/elasticsearch"
        },
        "indices" : {
          "cache" : {
            "filter" : {
              "size" : "30%"
            }
          },
          "memory" : {
            "index_buffer_size" : "20%"
          },
          "recovery" : {
            "concurrent_streams" : "12",
            "translog_size" : "2mb",
            "translog_ops" : "4000",
            "max_bytes_per_sec" : "60mb",
            "file_chunk_size" : "2mb"
          },
          "store" : {
            "throttle" : {
              "max_bytes_per_sec" : "40mb"
            }
          },
          "breaker" : {
            "fielddata" : {
              "limit" : "3584mb"
            }
          },
          "fielddata" : {
            "cache" : {
              "size" : "3072mb"
            }
          }
        },
        "security" : {
          "manager" : {
            "enabled" : "false"
          }
        },
        "marvel" : {
          "agent" : {
            "enabled" : "false"
          }
        },
        "discovery" : {
          "type" : "kubernetes",
          "zen" : {
            "ping" : {
              "multicast" : {
                "enabled" : "false"
              }
            }
          }
        },
        "merge" : {
          "policy" : {
            "merge_factor" : "30"
          }
        },
        "name" : "elasticsearch-master-n0-v211-p0-sb10d",
        "action" : {
          "disable_delete_all_indices" : "true"
        },
        "client" : {
          "type" : "node"
        },
        "http" : {
          "enabled" : "true",
          "max_content_length" : "100mb"
        },
        "config" : {
          "ignore_system_properties" : "true"
        }
      },
      "os" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "available_processors" : 4,
        "allocated_processors" : 4
      },
      "process" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "id" : 14,
        "mlockall" : false
      },
      "jvm" : {
        "pid" : 14,
        "version" : "1.8.0_66",
        "vm_name" : "Java HotSpot(TM) 64-Bit Server VM",
        "vm_version" : "25.66-b17",
        "vm_vendor" : "Oracle Corporation",
        "start_time" : "2016-01-19T20:33:33.053Z",
        "start_time_in_millis" : 1453235613053,
        "mem" : {
          "heap_init" : "4gb",
          "heap_init_in_bytes" : 4294967296,
          "heap_max" : "3.9gb",
          "heap_max_in_bytes" : 4260102144,
          "non_heap_init" : "2.4mb",
          "non_heap_init_in_bytes" : 2555904,
          "non_heap_max" : "0b",
          "non_heap_max_in_bytes" : 0,
          "direct_max" : "3.9gb",
          "direct_max_in_bytes" : 4260102144
        },
        "gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ],
        "memory_pools" : [ "Code Cache", "Metaspace", "Compressed Class Space", "Par Eden Space", "Par Survivor Space", "CMS Old Gen" ]
      },
      "thread_pool" : {
        "force_merge" : {
          "type" : "fixed",
          "min" : 1,
          "max" : 1,
          "queue_size" : -1
        },
        "percolate" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "fetch_shard_started" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "listener" : {
          "type" : "fixed",
          "min" : 2,
          "max" : 2,
          "queue_size" : -1
        },
        "index" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 200
        },
        "refresh" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "suggest" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "generic" : {
          "type" : "cached",
          "keep_alive" : "30s",
          "queue_size" : -1
        },
        "warmer" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "search" : {
          "type" : "fixed",
          "min" : 7,
          "max" : 7,
          "queue_size" : 1000
        },
        "flush" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "fetch_shard_store" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "management" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 5,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "get" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "bulk" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 50
        },
        "snapshot" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        }
      },
      "transport" : {
        "bound_address" : [ "[::]:9300" ],
        "publish_address" : "10.244.3.33:9300",
        "profiles" : { }
      },
      "http" : {
        "bound_address" : [ "[::]:9200" ],
        "publish_address" : "10.244.3.33:9200",
        "max_content_length" : "100mb",
        "max_content_length_in_bytes" : 104857600
      },
      "plugins" : [ {
        "name" : "analysis-phonetic",
        "version" : "2.1.1",
        "description" : "The Phonetic Analysis plugin integrates phonetic token filter analysis with elasticsearch.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.analysis.AnalysisPhoneticPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "cloud-kubernetes",
        "version" : "2.1.1",
        "description" : "Elasticsearch Kubernetes cloud plugin",
        "jvm" : true,
        "classname" : "io.fabric8.elasticsearch.plugin.discovery.kubernetes.KubernetesDiscoveryPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "hq",
        "version" : "1.0.0",
        "description" : "Elastic-HQ",
        "url" : "/_plugin/hq/",
        "jvm" : false,
        "site" : true
      }, {
        "name" : "lang-javascript",
        "version" : "2.1.1",
        "description" : "The JavaScript language plugin allows to have javascript as the language of scripts to execute.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.javascript.JavaScriptPlugin",
        "isolated" : true,
        "site" : false
      } ]
    },
    "lGMhCrcyR8qMjSRhKd4vUw" : {
      "name" : "elasticsearch-data-n3-v211-p0-2qcp6",
      "transport_address" : "10.244.0.15:9300",
      "host" : "10.244.0.15",
      "ip" : "10.244.0.15",
      "version" : "2.1.1",
      "build" : "40e2c53",
      "http_address" : "10.244.0.15:9200",
      "attributes" : {
        "master" : "false"
      },
      "settings" : {
        "cluster" : {
          "name" : "monitoring"
        },
        "index" : {
          "translog" : {
            "flush_threshold_ops" : "50000"
          }
        },
        "bootstrap" : {
          "mlockall" : "false"
        },
        "script" : {
          "inline" : "sandbox",
          "indexed" : "sandbox",
          "file" : "off"
        },
        "network" : {
          "host" : "0.0.0.0"
        },
        "cloud" : {
          "kubernetes" : {
            "namespace" : "default",
            "service" : "elasticsearch-cluster"
          }
        },
        "node" : {
          "data" : "true",
          "name" : "elasticsearch-data-n3-v211-p0-2qcp6",
          "master" : "false"
        },
        "path" : {
          "data" : "/elasticsearch/data",
          "logs" : "/elasticsearch/log",
          "plugins" : "/elasticsearch/plugins",
          "work" : "/elasticsearch/work",
          "home" : "/elasticsearch"
        },
        "indices" : {
          "cache" : {
            "filter" : {
              "size" : "30%"
            }
          },
          "memory" : {
            "index_buffer_size" : "20%"
          },
          "recovery" : {
            "concurrent_streams" : "12",
            "translog_size" : "2mb",
            "translog_ops" : "4000",
            "max_bytes_per_sec" : "60mb",
            "file_chunk_size" : "2mb"
          },
          "store" : {
            "throttle" : {
              "max_bytes_per_sec" : "40mb"
            }
          },
          "breaker" : {
            "fielddata" : {
              "limit" : "3584mb"
            }
          },
          "fielddata" : {
            "cache" : {
              "size" : "3072mb"
            }
          }
        },
        "security" : {
          "manager" : {
            "enabled" : "false"
          }
        },
        "marvel" : {
          "agent" : {
            "enabled" : "false"
          }
        },
        "discovery" : {
          "type" : "kubernetes",
          "zen" : {
            "ping" : {
              "multicast" : {
                "enabled" : "false"
              }
            }
          }
        },
        "merge" : {
          "policy" : {
            "merge_factor" : "30"
          }
        },
        "name" : "elasticsearch-data-n3-v211-p0-2qcp6",
        "action" : {
          "disable_delete_all_indices" : "true"
        },
        "client" : {
          "type" : "node"
        },
        "http" : {
          "enabled" : "true",
          "max_content_length" : "100mb"
        },
        "config" : {
          "ignore_system_properties" : "true"
        }
      },
      "os" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "available_processors" : 4,
        "allocated_processors" : 4
      },
      "process" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "id" : 17,
        "mlockall" : false
      },
      "jvm" : {
        "pid" : 17,
        "version" : "1.8.0_66",
        "vm_name" : "Java HotSpot(TM) 64-Bit Server VM",
        "vm_version" : "25.66-b17",
        "vm_vendor" : "Oracle Corporation",
        "start_time" : "2016-01-19T20:37:47.028Z",
        "start_time_in_millis" : 1453235867028,
        "mem" : {
          "heap_init" : "4gb",
          "heap_init_in_bytes" : 4294967296,
          "heap_max" : "3.9gb",
          "heap_max_in_bytes" : 4260102144,
          "non_heap_init" : "2.4mb",
          "non_heap_init_in_bytes" : 2555904,
          "non_heap_max" : "0b",
          "non_heap_max_in_bytes" : 0,
          "direct_max" : "3.9gb",
          "direct_max_in_bytes" : 4260102144
        },
        "gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ],
        "memory_pools" : [ "Code Cache", "Metaspace", "Compressed Class Space", "Par Eden Space", "Par Survivor Space", "CMS Old Gen" ]
      },
      "thread_pool" : {
        "force_merge" : {
          "type" : "fixed",
          "min" : 1,
          "max" : 1,
          "queue_size" : -1
        },
        "percolate" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "fetch_shard_started" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "listener" : {
          "type" : "fixed",
          "min" : 2,
          "max" : 2,
          "queue_size" : -1
        },
        "index" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 200
        },
        "refresh" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "suggest" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "generic" : {
          "type" : "cached",
          "keep_alive" : "30s",
          "queue_size" : -1
        },
        "warmer" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "search" : {
          "type" : "fixed",
          "min" : 7,
          "max" : 7,
          "queue_size" : 1000
        },
        "flush" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "fetch_shard_store" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "management" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 5,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "get" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "bulk" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 50
        },
        "snapshot" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        }
      },
      "transport" : {
        "bound_address" : [ "[::]:9300" ],
        "publish_address" : "10.244.0.15:9300",
        "profiles" : { }
      },
      "http" : {
        "bound_address" : [ "[::]:9200" ],
        "publish_address" : "10.244.0.15:9200",
        "max_content_length" : "100mb",
        "max_content_length_in_bytes" : 104857600
      },
      "plugins" : [ {
        "name" : "analysis-phonetic",
        "version" : "2.1.1",
        "description" : "The Phonetic Analysis plugin integrates phonetic token filter analysis with elasticsearch.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.analysis.AnalysisPhoneticPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "cloud-kubernetes",
        "version" : "2.1.1",
        "description" : "Elasticsearch Kubernetes cloud plugin",
        "jvm" : true,
        "classname" : "io.fabric8.elasticsearch.plugin.discovery.kubernetes.KubernetesDiscoveryPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "hq",
        "version" : "1.0.0",
        "description" : "Elastic-HQ",
        "url" : "/_plugin/hq/",
        "jvm" : false,
        "site" : true
      }, {
        "name" : "lang-javascript",
        "version" : "2.1.1",
        "description" : "The JavaScript language plugin allows to have javascript as the language of scripts to execute.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.javascript.JavaScriptPlugin",
        "isolated" : true,
        "site" : false
      } ]
    },
    "jIypga7CTWm8u4nuMFxc_w" : {
      "name" : "elasticsearch-data-n0-v211-p0-xe2mi",
      "transport_address" : "10.244.5.18:9300",
      "host" : "10.244.5.18",
      "ip" : "10.244.5.18",
      "version" : "2.1.1",
      "build" : "40e2c53",
      "http_address" : "10.244.5.18:9200",
      "attributes" : {
        "master" : "false"
      },
      "settings" : {
        "cluster" : {
          "name" : "monitoring"
        },
        "index" : {
          "translog" : {
            "flush_threshold_ops" : "50000"
          }
        },
        "bootstrap" : {
          "mlockall" : "false"
        },
        "script" : {
          "inline" : "sandbox",
          "indexed" : "sandbox",
          "file" : "off"
        },
        "network" : {
          "host" : "0.0.0.0"
        },
        "cloud" : {
          "kubernetes" : {
            "namespace" : "default",
            "service" : "elasticsearch-cluster"
          }
        },
        "node" : {
          "data" : "true",
          "name" : "elasticsearch-data-n0-v211-p0-xe2mi",
          "master" : "false"
        },
        "path" : {
          "data" : "/elasticsearch/data",
          "logs" : "/elasticsearch/log",
          "plugins" : "/elasticsearch/plugins",
          "work" : "/elasticsearch/work",
          "home" : "/elasticsearch"
        },
        "indices" : {
          "cache" : {
            "filter" : {
              "size" : "30%"
            }
          },
          "memory" : {
            "index_buffer_size" : "20%"
          },
          "recovery" : {
            "concurrent_streams" : "12",
            "translog_size" : "2mb",
            "translog_ops" : "4000",
            "max_bytes_per_sec" : "60mb",
            "file_chunk_size" : "2mb"
          },
          "store" : {
            "throttle" : {
              "max_bytes_per_sec" : "40mb"
            }
          },
          "breaker" : {
            "fielddata" : {
              "limit" : "3584mb"
            }
          },
          "fielddata" : {
            "cache" : {
              "size" : "3072mb"
            }
          }
        },
        "security" : {
          "manager" : {
            "enabled" : "false"
          }
        },
        "marvel" : {
          "agent" : {
            "enabled" : "false"
          }
        },
        "discovery" : {
          "type" : "kubernetes",
          "zen" : {
            "ping" : {
              "multicast" : {
                "enabled" : "false"
              }
            }
          }
        },
        "merge" : {
          "policy" : {
            "merge_factor" : "30"
          }
        },
        "name" : "elasticsearch-data-n0-v211-p0-xe2mi",
        "action" : {
          "disable_delete_all_indices" : "true"
        },
        "client" : {
          "type" : "node"
        },
        "http" : {
          "enabled" : "true",
          "max_content_length" : "100mb"
        },
        "config" : {
          "ignore_system_properties" : "true"
        }
      },
      "os" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "available_processors" : 4,
        "allocated_processors" : 4
      },
      "process" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "id" : 14,
        "mlockall" : false
      },
      "jvm" : {
        "pid" : 14,
        "version" : "1.8.0_66",
        "vm_name" : "Java HotSpot(TM) 64-Bit Server VM",
        "vm_version" : "25.66-b17",
        "vm_vendor" : "Oracle Corporation",
        "start_time" : "2016-01-19T20:37:45.184Z",
        "start_time_in_millis" : 1453235865184,
        "mem" : {
          "heap_init" : "4gb",
          "heap_init_in_bytes" : 4294967296,
          "heap_max" : "3.9gb",
          "heap_max_in_bytes" : 4260102144,
          "non_heap_init" : "2.4mb",
          "non_heap_init_in_bytes" : 2555904,
          "non_heap_max" : "0b",
          "non_heap_max_in_bytes" : 0,
          "direct_max" : "3.9gb",
          "direct_max_in_bytes" : 4260102144
        },
        "gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ],
        "memory_pools" : [ "Code Cache", "Metaspace", "Compressed Class Space", "Par Eden Space", "Par Survivor Space", "CMS Old Gen" ]
      },
      "thread_pool" : {
        "force_merge" : {
          "type" : "fixed",
          "min" : 1,
          "max" : 1,
          "queue_size" : -1
        },
        "percolate" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "fetch_shard_started" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "listener" : {
          "type" : "fixed",
          "min" : 2,
          "max" : 2,
          "queue_size" : -1
        },
        "index" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 200
        },
        "refresh" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "suggest" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "generic" : {
          "type" : "cached",
          "keep_alive" : "30s",
          "queue_size" : -1
        },
        "warmer" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "search" : {
          "type" : "fixed",
          "min" : 7,
          "max" : 7,
          "queue_size" : 1000
        },
        "flush" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "fetch_shard_store" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "management" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 5,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "get" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "bulk" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 50
        },
        "snapshot" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        }
      },
      "transport" : {
        "bound_address" : [ "[::]:9300" ],
        "publish_address" : "10.244.5.18:9300",
        "profiles" : { }
      },
      "http" : {
        "bound_address" : [ "[::]:9200" ],
        "publish_address" : "10.244.5.18:9200",
        "max_content_length" : "100mb",
        "max_content_length_in_bytes" : 104857600
      },
      "plugins" : [ {
        "name" : "analysis-phonetic",
        "version" : "2.1.1",
        "description" : "The Phonetic Analysis plugin integrates phonetic token filter analysis with elasticsearch.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.analysis.AnalysisPhoneticPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "cloud-kubernetes",
        "version" : "2.1.1",
        "description" : "Elasticsearch Kubernetes cloud plugin",
        "jvm" : true,
        "classname" : "io.fabric8.elasticsearch.plugin.discovery.kubernetes.KubernetesDiscoveryPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "hq",
        "version" : "1.0.0",
        "description" : "Elastic-HQ",
        "url" : "/_plugin/hq/",
        "jvm" : false,
        "site" : true
      }, {
        "name" : "lang-javascript",
        "version" : "2.1.1",
        "description" : "The JavaScript language plugin allows to have javascript as the language of scripts to execute.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.javascript.JavaScriptPlugin",
        "isolated" : true,
        "site" : false
      } ]
    },
    "MhkpsIvnQ-G9r6g_6V3pHA" : {
      "name" : "elasticsearch-data-n1-v211-p0-b7707",
      "transport_address" : "10.244.4.15:9300",
      "host" : "10.244.4.15",
      "ip" : "10.244.4.15",
      "version" : "2.1.1",
      "build" : "40e2c53",
      "http_address" : "10.244.4.15:9200",
      "attributes" : {
        "master" : "false"
      },
      "settings" : {
        "cluster" : {
          "name" : "monitoring"
        },
        "index" : {
          "translog" : {
            "flush_threshold_ops" : "50000"
          }
        },
        "bootstrap" : {
          "mlockall" : "false"
        },
        "script" : {
          "inline" : "sandbox",
          "indexed" : "sandbox",
          "file" : "off"
        },
        "network" : {
          "host" : "0.0.0.0"
        },
        "cloud" : {
          "kubernetes" : {
            "namespace" : "default",
            "service" : "elasticsearch-cluster"
          }
        },
        "node" : {
          "data" : "true",
          "name" : "elasticsearch-data-n1-v211-p0-b7707",
          "master" : "false"
        },
        "path" : {
          "data" : "/elasticsearch/data",
          "logs" : "/elasticsearch/log",
          "plugins" : "/elasticsearch/plugins",
          "work" : "/elasticsearch/work",
          "home" : "/elasticsearch"
        },
        "indices" : {
          "cache" : {
            "filter" : {
              "size" : "30%"
            }
          },
          "memory" : {
            "index_buffer_size" : "20%"
          },
          "recovery" : {
            "concurrent_streams" : "12",
            "translog_size" : "2mb",
            "translog_ops" : "4000",
            "max_bytes_per_sec" : "60mb",
            "file_chunk_size" : "2mb"
          },
          "store" : {
            "throttle" : {
              "max_bytes_per_sec" : "40mb"
            }
          },
          "breaker" : {
            "fielddata" : {
              "limit" : "3584mb"
            }
          },
          "fielddata" : {
            "cache" : {
              "size" : "3072mb"
            }
          }
        },
        "security" : {
          "manager" : {
            "enabled" : "false"
          }
        },
        "marvel" : {
          "agent" : {
            "enabled" : "false"
          }
        },
        "discovery" : {
          "type" : "kubernetes",
          "zen" : {
            "ping" : {
              "multicast" : {
                "enabled" : "false"
              }
            }
          }
        },
        "merge" : {
          "policy" : {
            "merge_factor" : "30"
          }
        },
        "name" : "elasticsearch-data-n1-v211-p0-b7707",
        "action" : {
          "disable_delete_all_indices" : "true"
        },
        "client" : {
          "type" : "node"
        },
        "http" : {
          "enabled" : "true",
          "max_content_length" : "100mb"
        },
        "config" : {
          "ignore_system_properties" : "true"
        }
      },
      "os" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "available_processors" : 4,
        "allocated_processors" : 4
      },
      "process" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "id" : 11,
        "mlockall" : false
      },
      "jvm" : {
        "pid" : 11,
        "version" : "1.8.0_66",
        "vm_name" : "Java HotSpot(TM) 64-Bit Server VM",
        "vm_version" : "25.66-b17",
        "vm_vendor" : "Oracle Corporation",
        "start_time" : "2016-01-19T20:37:45.760Z",
        "start_time_in_millis" : 1453235865760,
        "mem" : {
          "heap_init" : "4gb",
          "heap_init_in_bytes" : 4294967296,
          "heap_max" : "3.9gb",
          "heap_max_in_bytes" : 4260102144,
          "non_heap_init" : "2.4mb",
          "non_heap_init_in_bytes" : 2555904,
          "non_heap_max" : "0b",
          "non_heap_max_in_bytes" : 0,
          "direct_max" : "3.9gb",
          "direct_max_in_bytes" : 4260102144
        },
        "gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ],
        "memory_pools" : [ "Code Cache", "Metaspace", "Compressed Class Space", "Par Eden Space", "Par Survivor Space", "CMS Old Gen" ]
      },
      "thread_pool" : {
        "force_merge" : {
          "type" : "fixed",
          "min" : 1,
          "max" : 1,
          "queue_size" : -1
        },
        "percolate" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "fetch_shard_started" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "listener" : {
          "type" : "fixed",
          "min" : 2,
          "max" : 2,
          "queue_size" : -1
        },
        "index" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 200
        },
        "refresh" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "suggest" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "generic" : {
          "type" : "cached",
          "keep_alive" : "30s",
          "queue_size" : -1
        },
        "warmer" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "search" : {
          "type" : "fixed",
          "min" : 7,
          "max" : 7,
          "queue_size" : 1000
        },
        "flush" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "fetch_shard_store" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "management" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 5,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "get" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "bulk" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 50
        },
        "snapshot" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        }
      },
      "transport" : {
        "bound_address" : [ "[::]:9300" ],
        "publish_address" : "10.244.4.15:9300",
        "profiles" : { }
      },
      "http" : {
        "bound_address" : [ "[::]:9200" ],
        "publish_address" : "10.244.4.15:9200",
        "max_content_length" : "100mb",
        "max_content_length_in_bytes" : 104857600
      },
      "plugins" : [ {
        "name" : "analysis-phonetic",
        "version" : "2.1.1",
        "description" : "The Phonetic Analysis plugin integrates phonetic token filter analysis with elasticsearch.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.analysis.AnalysisPhoneticPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "cloud-kubernetes",
        "version" : "2.1.1",
        "description" : "Elasticsearch Kubernetes cloud plugin",
        "jvm" : true,
        "classname" : "io.fabric8.elasticsearch.plugin.discovery.kubernetes.KubernetesDiscoveryPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "hq",
        "version" : "1.0.0",
        "description" : "Elastic-HQ",
        "url" : "/_plugin/hq/",
        "jvm" : false,
        "site" : true
      }, {
        "name" : "lang-javascript",
        "version" : "2.1.1",
        "description" : "The JavaScript language plugin allows to have javascript as the language of scripts to execute.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.javascript.JavaScriptPlugin",
        "isolated" : true,
        "site" : false
      } ]
    },
    "1MoYzsloS0GYO88ReaGd9Q" : {
      "name" : "elasticsearch-lb-v211-p0-bqbni",
      "transport_address" : "10.244.2.12:9300",
      "host" : "10.244.2.12",
      "ip" : "10.244.2.12",
      "version" : "2.1.1",
      "build" : "40e2c53",
      "http_address" : "10.244.2.12:9200",
      "attributes" : {
        "data" : "false",
        "master" : "false"
      },
      "settings" : {
        "cluster" : {
          "name" : "monitoring"
        },
        "index" : {
          "translog" : {
            "flush_threshold_ops" : "50000"
          }
        },
        "bootstrap" : {
          "mlockall" : "false"
        },
        "script" : {
          "inline" : "sandbox",
          "indexed" : "sandbox",
          "file" : "off"
        },
        "network" : {
          "host" : "0.0.0.0"
        },
        "cloud" : {
          "kubernetes" : {
            "namespace" : "default",
            "service" : "elasticsearch-cluster"
          }
        },
        "node" : {
          "data" : "false",
          "name" : "elasticsearch-lb-v211-p0-bqbni",
          "master" : "false"
        },
        "path" : {
          "data" : "/elasticsearch/data",
          "logs" : "/elasticsearch/log",
          "plugins" : "/elasticsearch/plugins",
          "work" : "/elasticsearch/work",
          "home" : "/elasticsearch"
        },
        "indices" : {
          "cache" : {
            "filter" : {
              "size" : "30%"
            }
          },
          "memory" : {
            "index_buffer_size" : "20%"
          },
          "recovery" : {
            "concurrent_streams" : "12",
            "translog_size" : "2mb",
            "translog_ops" : "4000",
            "max_bytes_per_sec" : "60mb",
            "file_chunk_size" : "2mb"
          },
          "store" : {
            "throttle" : {
              "max_bytes_per_sec" : "40mb"
            }
          },
          "breaker" : {
            "fielddata" : {
              "limit" : "3584mb"
            }
          },
          "fielddata" : {
            "cache" : {
              "size" : "3072mb"
            }
          }
        },
        "security" : {
          "manager" : {
            "enabled" : "false"
          }
        },
        "marvel" : {
          "agent" : {
            "enabled" : "false"
          }
        },
        "discovery" : {
          "type" : "kubernetes",
          "zen" : {
            "ping" : {
              "multicast" : {
                "enabled" : "false"
              }
            }
          }
        },
        "merge" : {
          "policy" : {
            "merge_factor" : "30"
          }
        },
        "name" : "elasticsearch-lb-v211-p0-bqbni",
        "action" : {
          "disable_delete_all_indices" : "true"
        },
        "client" : {
          "type" : "node"
        },
        "http" : {
          "enabled" : "true",
          "max_content_length" : "100mb"
        },
        "config" : {
          "ignore_system_properties" : "true"
        }
      },
      "os" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "name" : "Linux",
        "arch" : "amd64",
        "version" : "3.16.0-0.bpo.4-amd64",
        "available_processors" : 4,
        "allocated_processors" : 4
      },
      "process" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "id" : 12,
        "mlockall" : false
      },
      "jvm" : {
        "pid" : 12,
        "version" : "1.8.0_66",
        "vm_name" : "Java HotSpot(TM) 64-Bit Server VM",
        "vm_version" : "25.66-b17",
        "vm_vendor" : "Oracle Corporation",
        "start_time" : "2016-01-19T20:38:42.245Z",
        "start_time_in_millis" : 1453235922245,
        "mem" : {
          "heap_init" : "4gb",
          "heap_init_in_bytes" : 4294967296,
          "heap_max" : "3.9gb",
          "heap_max_in_bytes" : 4260102144,
          "non_heap_init" : "2.4mb",
          "non_heap_init_in_bytes" : 2555904,
          "non_heap_max" : "0b",
          "non_heap_max_in_bytes" : 0,
          "direct_max" : "3.9gb",
          "direct_max_in_bytes" : 4260102144
        },
        "gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ],
        "memory_pools" : [ "Code Cache", "Metaspace", "Compressed Class Space", "Par Eden Space", "Par Survivor Space", "CMS Old Gen" ]
      },
      "thread_pool" : {
        "force_merge" : {
          "type" : "fixed",
          "min" : 1,
          "max" : 1,
          "queue_size" : -1
        },
        "percolate" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "fetch_shard_started" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "listener" : {
          "type" : "fixed",
          "min" : 2,
          "max" : 2,
          "queue_size" : -1
        },
        "index" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 200
        },
        "refresh" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "suggest" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "generic" : {
          "type" : "cached",
          "keep_alive" : "30s",
          "queue_size" : -1
        },
        "warmer" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "search" : {
          "type" : "fixed",
          "min" : 7,
          "max" : 7,
          "queue_size" : 1000
        },
        "flush" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "fetch_shard_store" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "management" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 5,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "get" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "bulk" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 50
        },
        "snapshot" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        }
      },
      "transport" : {
        "bound_address" : [ "[::]:9300" ],
        "publish_address" : "10.244.2.12:9300",
        "profiles" : { }
      },
      "http" : {
        "bound_address" : [ "[::]:9200" ],
        "publish_address" : "10.244.2.12:9200",
        "max_content_length" : "100mb",
        "max_content_length_in_bytes" : 104857600
      },
      "plugins" : [ {
        "name" : "analysis-phonetic",
        "version" : "2.1.1",
        "description" : "The Phonetic Analysis plugin integrates phonetic token filter analysis with elasticsearch.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.analysis.AnalysisPhoneticPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "cloud-kubernetes",
        "version" : "2.1.1",
        "description" : "Elasticsearch Kubernetes cloud plugin",
        "jvm" : true,
        "classname" : "io.fabric8.elasticsearch.plugin.discovery.kubernetes.KubernetesDiscoveryPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "hq",
        "version" : "1.0.0",
        "description" : "Elastic-HQ",
        "url" : "/_plugin/hq/",
        "jvm" : false,
        "site" : true
      }, {
        "name" : "lang-javascript",
        "version" : "2.1.1",
        "description" : "The JavaScript language plugin allows to have javascript as the language of scripts to execute.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.javascript.JavaScriptPlugin",
        "isolated" : true,
        "site" : false
      } ]
    },
    "m-ZtgY8OQYyfaCyJErYEgA" : {
      "name" : "elasticsearch-master-n1-v211-p0-0qzhd",
      "transport_address" : "10.244.6.19:9300",
      "host" : "10.244.6.19",
      "ip" : "10.244.6.19",
      "version" : "2.1.1",
      "build" : "40e2c53",
      "http_address" : "10.244.6.19:9200",
      "attributes" : {
        "data" : "false",
        "master" : "true"
      },
      "settings" : {
        "cluster" : {
          "name" : "monitoring"
        },
        "index" : {
          "translog" : {
            "flush_threshold_ops" : "50000"
          }
        },
        "bootstrap" : {
          "mlockall" : "false"
        },
        "script" : {
          "inline" : "sandbox",
          "indexed" : "sandbox",
          "file" : "off"
        },
        "network" : {
          "host" : "0.0.0.0"
        },
        "cloud" : {
          "kubernetes" : {
            "namespace" : "default",
            "service" : "elasticsearch-cluster"
          }
        },
        "node" : {
          "data" : "false",
          "name" : "elasticsearch-master-n1-v211-p0-0qzhd",
          "master" : "true"
        },
        "path" : {
          "data" : "/elasticsearch/data",
          "logs" : "/elasticsearch/log",
          "plugins" : "/elasticsearch/plugins",
          "work" : "/elasticsearch/work",
          "home" : "/elasticsearch"
        },
        "indices" : {
          "cache" : {
            "filter" : {
              "size" : "30%"
            }
          },
          "memory" : {
            "index_buffer_size" : "20%"
          },
          "recovery" : {
            "concurrent_streams" : "12",
            "translog_size" : "2mb",
            "translog_ops" : "4000",
            "max_bytes_per_sec" : "60mb",
            "file_chunk_size" : "2mb"
          },
          "store" : {
            "throttle" : {
              "max_bytes_per_sec" : "40mb"
            }
          },
          "breaker" : {
            "fielddata" : {
              "limit" : "3584mb"
            }
          },
          "fielddata" : {
            "cache" : {
              "size" : "3072mb"
            }
          }
        },
        "security" : {
          "manager" : {
            "enabled" : "false"
          }
        },
        "marvel" : {
          "agent" : {
            "enabled" : "false"
          }
        },
        "discovery" : {
          "type" : "kubernetes",
          "zen" : {
            "ping" : {
              "multicast" : {
                "enabled" : "false"
              }
            }
          }
        },
        "merge" : {
          "policy" : {
            "merge_factor" : "30"
          }
        },
        "name" : "elasticsearch-master-n1-v211-p0-0qzhd",
        "action" : {
          "disable_delete_all_indices" : "true"
        },
        "client" : {
          "type" : "node"
        },
        "http" : {
          "enabled" : "true",
          "max_content_length" : "100mb"
        },
        "config" : {
          "ignore_system_properties" : "true"
        }
      },
      "os" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "available_processors" : 4,
        "allocated_processors" : 4
      },
      "process" : {
        "refresh_interval" : "1s",
        "refresh_interval_in_millis" : 1000,
        "id" : 15,
        "mlockall" : false
      },
      "jvm" : {
        "pid" : 15,
        "version" : "1.8.0_66",
        "vm_name" : "Java HotSpot(TM) 64-Bit Server VM",
        "vm_version" : "25.66-b17",
        "vm_vendor" : "Oracle Corporation",
        "start_time" : "2016-01-19T20:30:29.170Z",
        "start_time_in_millis" : 1453235429170,
        "mem" : {
          "heap_init" : "4gb",
          "heap_init_in_bytes" : 4294967296,
          "heap_max" : "3.9gb",
          "heap_max_in_bytes" : 4260102144,
          "non_heap_init" : "2.4mb",
          "non_heap_init_in_bytes" : 2555904,
          "non_heap_max" : "0b",
          "non_heap_max_in_bytes" : 0,
          "direct_max" : "3.9gb",
          "direct_max_in_bytes" : 4260102144
        },
        "gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ],
        "memory_pools" : [ "Code Cache", "Metaspace", "Compressed Class Space", "Par Eden Space", "Par Survivor Space", "CMS Old Gen" ]
      },
      "thread_pool" : {
        "force_merge" : {
          "type" : "fixed",
          "min" : 1,
          "max" : 1,
          "queue_size" : -1
        },
        "percolate" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "fetch_shard_started" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "listener" : {
          "type" : "fixed",
          "min" : 2,
          "max" : 2,
          "queue_size" : -1
        },
        "index" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 200
        },
        "refresh" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "suggest" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "generic" : {
          "type" : "cached",
          "keep_alive" : "30s",
          "queue_size" : -1
        },
        "warmer" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "search" : {
          "type" : "fixed",
          "min" : 7,
          "max" : 7,
          "queue_size" : 1000
        },
        "flush" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "fetch_shard_store" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 8,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "management" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 5,
          "keep_alive" : "5m",
          "queue_size" : -1
        },
        "get" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 1000
        },
        "bulk" : {
          "type" : "fixed",
          "min" : 4,
          "max" : 4,
          "queue_size" : 50
        },
        "snapshot" : {
          "type" : "scaling",
          "min" : 1,
          "max" : 2,
          "keep_alive" : "5m",
          "queue_size" : -1
        }
      },
      "transport" : {
        "bound_address" : [ "[::]:9300" ],
        "publish_address" : "10.244.6.19:9300",
        "profiles" : { }
      },
      "http" : {
        "bound_address" : [ "[::]:9200" ],
        "publish_address" : "10.244.6.19:9200",
        "max_content_length" : "100mb",
        "max_content_length_in_bytes" : 104857600
      },
      "plugins" : [ {
        "name" : "analysis-phonetic",
        "version" : "2.1.1",
        "description" : "The Phonetic Analysis plugin integrates phonetic token filter analysis with elasticsearch.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.analysis.AnalysisPhoneticPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "cloud-kubernetes",
        "version" : "2.1.1",
        "description" : "Elasticsearch Kubernetes cloud plugin",
        "jvm" : true,
        "classname" : "io.fabric8.elasticsearch.plugin.discovery.kubernetes.KubernetesDiscoveryPlugin",
        "isolated" : true,
        "site" : false
      }, {
        "name" : "hq",
        "version" : "1.0.0",
        "description" : "Elastic-HQ",
        "url" : "/_plugin/hq/",
        "jvm" : false,
        "site" : true
      }, {
        "name" : "lang-javascript",
        "version" : "2.1.1",
        "description" : "The JavaScript language plugin allows to have javascript as the language of scripts to execute.",
        "jvm" : true,
        "classname" : "org.elasticsearch.plugin.javascript.JavaScriptPlugin",
        "isolated" : true,
        "site" : false
      } ]
    }
  }
}

failed run exporter inside docker

Hello,

I try to ran image inside docker build :

  • Dockerfile
FROM golang
RUN go get -u github.com/justwatchcom/elasticsearch_exporter
COPY start.sh /
RUN chmod +x /start.sh
CMD /start.sh
  • start.sh
#!/bin/bash
elasticsearch_exporter -es.uri http://my.ip.ad.dr:9200
  • docker-compose.yml
prom-elastic:
  build: ./prom-elastic
  container_name: prom-elastic
  hostname: prom-elastic
  ports:
   - 9108:9108
  • docker version
# docker --version
Docker version 17.03.1-ce, build c6d412e

Error :

2017/06/12 20:45:58 Starting Server: :9108
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x6f8062]

goroutine 49 [running]:
github.com/justwatchcom/elasticsearch_exporter/vendor/github.com/prometheus/client_golang/prometheus.(*CounterVec).WithLabelValues(0x0, 0xc42009c938, 0x2, 0x2, 0xa77300, 0xc42027b200)
        /go/src/github.com/justwatchcom/elasticsearch_exporter/vendor/github.com/prometheus/client_golang/prometheus/counter.go:139 +0x22
main.(*Exporter).Collect(0xc420194080, 0xc420196480)
        /go/src/github.com/justwatchcom/elasticsearch_exporter/exporter.go:459 +0x39af
github.com/justwatchcom/elasticsearch_exporter/vendor/github.com/prometheus/client_golang/prometheus.(*registry).writePB.func2(0xc4201b4750, 0xc420196480, 0xa252e0, 0xc420194080)
        /go/src/github.com/justwatchcom/elasticsearch_exporter/vendor/github.com/prometheus/client_golang/prometheus/registry.go:420 +0x61
created by github.com/justwatchcom/elasticsearch_exporter/vendor/github.com/prometheus/client_golang/prometheus.(*registry).writePB
        /go/src/github.com/justwatchcom/elasticsearch_exporter/vendor/github.com/prometheus/client_golang/prometheus/registry.go:421 +0x274

Inability to differentiate between red and yellow.

According to this ticket:

#120

There is now way to detect if a cluster is red or yellow.

For dashboards like Grafana we need to show the proper color.

It looks like older versions of the plugin used 1,2,3 because the dashboards that reference this plugin on Grafana.com no longer work.

We don't mind publishing our dashboards for Prom 2.0 and the latest elasticsearch_exporter but we have no way to differentiate between yellow and red.

ES_exporter doesn't export cluster statistics

Currently only node level statistics are exported. There's some valuable stats at /_cluster/health and /_cluster/stats that should be exported as well.

The key stats I noticed were missing:

  • cluster status ❗
  • index count
  • total shard count
  • primary shard count
  • [relocating, initializing, unassigned] shard count

/_cluster/health:

{
    cluster_name: "devops-es",
    status: "green",
    timed_out: false,
    number_of_nodes: 7,
    number_of_data_nodes: 5,
    active_primary_shards: 22330,
    active_shards: 66990,
    relocating_shards: 0,
    initializing_shards: 0,
    unassigned_shards: 0
}

/_cluster/stats: http://pastebin.com/1nBbEH9T

FWIW this was my reasoning behind #1 - to reduce the amount of duplicated cluster-level statistics. I'd like to implement a similar flag (--cluster-stats) to enable exporting these stats from only a subset of nodes in the cluster.

Update dashboard

Hi,
i'm trying to use this dashboard https://github.com/justwatchcom/elasticsearch_exporter/blob/master/examples/grafana/dashboard.json but it seems not working anymore.

first, if I've the node_exporter installed on all the nodes of the cluster it sums the nodes. I've 2 nodes and the nodes displayed are instead 4 since it does a sum and both nodes report 2 for that cluster.

Memory / CPU and other are not showing any data, I think (i'm not an expert) that the exported metrics have changed name.

Does anyone has a dashboard to suggest? i've seen that there are several others in grafana, but I can't get my head around to find something that show cluster + instance usage.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.