AppDynamics Monitoring Extension for use with Elasticsearch

This extension works only with the standalone machine agent.

Use Case

Elasticsearch is a distributed RESTful search server based on Lucene which provides a distributed multitenant-capable full text search engine. This extension collects cluster health metrics, nodes and indices stats from a Elasticsearch engine and presents them in AppDynamics Metric Browser.

Installation

  1. Download the file ElasticSearchMonitor.zip into <machineagent install dir>/monitors/
  2. Unzip the downloaded file
  3. In <machineagent install dir>/monitors/ElasticSearchMonitor/, open config.yaml and configure the ElasticSearch parameters.
    servers:
           - host: ""
             port: ""
             username: ""
             password: ""
             usessl: false
             displayName: ""
             # To disable the pull of json metrics
             enableJsonMetrics: true
             # To get the metrics through CAT apis
             catEndPoints:
               - endPoint: "/_cat/allocation?v&bytes=b&h=node,shards,diskUsed,diskAvailable,diskTotal,diskPercent"
                  # Any prefixes
                 metricPrefix: "Allocation"
                  # The keys to be used in metric path. Picks up in the same order.
                 metricKeys: [
                    "node"
                 ]
    
               - endPoint: "/_cat/indices?v&bytes=b&h=index,health,status,shardsPrimary,shardsReplica,docsCount,docsDeleted,storeSize,pri.store.size"
                 metricPrefix: "Indices"
                 metricKeys: [
                    "index"
                 ]
    
               - endPoint: "/_cat/recovery?v&bytes=b&h=index,shard,files,files_percent,bytes,bytes_percent"
                 metricPrefix: "Recovery"
                 metricKeys: [
                    "index"
                 ]
    
               - endPoint: "_cat/thread_pool?v&bytes=b&h=host,bulk.active,bulk.size,bulk.queue,bulk.queueSize,bulk.rejected,bulk.largest,bulk.completed,bulk.min,bulk.max"
                 metricPrefix: "ThreadPool"
                 metricKeys: [
                   "host"
                 ]
    
               - endPoint: "/_cat/shards?v&bytes=b&h=node,index,shard,docs,store"
                 metricPrefix: "Shards"
                 metricKeys: [
                    "node",
                    "index"
                 ]
    
         metricPathPrefix: "Custom Metrics|Elastic Search|"  
    
  4. Restart the Machine Agent.

 

In the AppDynamics Metric Browser, look for: Application Infrastructure Performance | <Tier> | Custom Metrics | Elastic Search

Metrics

Cluster Metrics: The following metrics are reported under <ClusterName>

Metric NameDescription
statusred (0), yellow (1), green(2)
number of nodesnumber of nodes in this cluster
number of data nodesnumber of data nodes
active primary shardsactive primary shards
active shardsactive shards
relocating shardsrelocating shards
initializing shardsinitializing shards
unassigned shardsunassigned shards

 

Node Statistics: The following metrics are reported for each Node in the cluster under Nodes | <NodeName>

Metric NameDescription
size of indicessize of indices (MB)
num docsnumber of documents
open file descriptorsopen file descriptors count
threads countnumber of threads used

 

Indices Statistics: The following metrics are reported for each Index under Indices | <IndexName>

Metric NameDescription
primary sizeprimary size of index (MB)
sizetotal size of index (MB)
num docsnumber of documents

 

Cat Level Statistics: As mentioned https://www.elastic.co/guide/en/elasticsearch/reference/current/cat.html

Custom Dashboard

Contributing

Always feel free to fork and contribute any changes directly via GitHub.

Support

For any support questions, please contact help@appdynamics.com.

 

Version:

2.2

Compatibility:

3.7+

Last Update:

13th October, 2016

 

2.0 - Added support for CAT apis.

2.1 - Added support for Authentication.

2.2 - Default node stats uri changed to ES ver 1.0