* Make API reference top level Signed-off-by: Naarcha-AWS <[email protected]> * Fix typo on Drag and Drop page (#1633) * Fix typo on Drag and Drop page * Update _dashboards/drag-drop-wizard.md Co-authored-by: Nate Bower <[email protected]> * Update drag-drop-wizard.md Co-authored-by: Nate Bower <[email protected]> * Putting all the Docker install material on a single page (#1452) * Putting all the Docker install material on a single page Signed-off-by: JeffH-AWS <[email protected]> * Making room for revamp Signed-off-by: JeffH-AWS <[email protected]> * Intro added Signed-off-by: JeffH-AWS <[email protected]> * Continuing to flesh out the intro section and overview Signed-off-by: JeffH-AWS <[email protected]> * Overview finalized Signed-off-by: JeffH-AWS <[email protected]> * Introducing docker compose Signed-off-by: JeffH-AWS <[email protected]> * Added link to compose Signed-off-by: JeffH-AWS <[email protected]> * Continuing docker image commentary Signed-off-by: JeffH-AWS <[email protected]> * Sometimes I wonder if anyone reads these Signed-off-by: JeffH-AWS <[email protected]> * Adding notes on installing compose with pip Signed-off-by: JeffH-AWS <[email protected]> * Adding prereqs Signed-off-by: JeffH-AWS <[email protected]> * Magnets - how do they work? Signed-off-by: JeffH-AWS <[email protected]> * Almonds and peaches are part of the same plant subgenus, Amygdalus Signed-off-by: JeffH-AWS <[email protected]> * There are 293 ways to make change for a dollar Signed-off-by: JeffH-AWS <[email protected]> * A shark is the only known fish that can blink with both eyes Signed-off-by: JeffH-AWS <[email protected]> * A crocodile cannot stick its tongue out Signed-off-by: JeffH-AWS <[email protected]> * wording Signed-off-by: JeffH-AWS <[email protected]> * Reorganizing a couple paragraphs to make it flow better Signed-off-by: JeffH-AWS <[email protected]> * Forgot a word Signed-off-by: JeffH-AWS <[email protected]> * Add tip about pruning stopped containers Signed-off-by: JeffH-AWS <[email protected]> * Cleaning up Signed-off-by: JeffH-AWS <[email protected]> * Add blurb about container ls Signed-off-by: JeffH-AWS <[email protected]> * Adding the Docker Compose stuff Signed-off-by: JeffH-AWS <[email protected]> * Working on compose Signed-off-by: JeffH-AWS <[email protected]> * Continuing work on the compose section - it's a lot of info Signed-off-by: JeffH-AWS <[email protected]> * Added important settings Signed-off-by: JeffH-AWS <[email protected]> * Updates to settings that need configured Signed-off-by: JeffH-AWS <[email protected]> * Still working through compose things Signed-off-by: JeffH-AWS <[email protected]> * Fixed wording Signed-off-by: JeffH-AWS <[email protected]> * Working through compose commands and guidance Signed-off-by: JeffH-AWS <[email protected]> * Reordering/rewording Signed-off-by: JeffH-AWS <[email protected]> * More phrasing Signed-off-by: JeffH-AWS <[email protected]> * More wording in steps Signed-off-by: JeffH-AWS <[email protected]> * More wording in steps Signed-off-by: JeffH-AWS <[email protected]> * Organizing Signed-off-by: JeffH-AWS <[email protected]> * Adding stuff and things Signed-off-by: JeffH-AWS <[email protected]> * Continuing to work through the configuration steps Signed-off-by: JeffH-AWS <[email protected]> * Fixes Signed-off-by: JeffH-AWS <[email protected]> * Fixes Signed-off-by: JeffH-AWS <[email protected]> * Still working on the configuration steps Signed-off-by: JeffH-AWS <[email protected]> * Changes Signed-off-by: JeffH-AWS <[email protected]> * More work Signed-off-by: JeffH-AWS <[email protected]> * Removed perf analyzer - refer to GH issue 1555 Signed-off-by: JeffH-AWS <[email protected]> * Fixing things Signed-off-by: JeffH-AWS <[email protected]> * Adding guidance on passing settings in compose Signed-off-by: JeffH-AWS <[email protected]> * Working through dockerfile materials now Signed-off-by: JeffH-AWS <[email protected]> * wording Signed-off-by: JeffH-AWS <[email protected]> * Finalized the sample dev compose file Signed-off-by: JeffH-AWS <[email protected]> * Continuing work with configuration Signed-off-by: JeffH-AWS <[email protected]> * Finished - ready for reviews Signed-off-by: JeffH-AWS <[email protected]> * Fixed a link I forgot to change before Signed-off-by: JeffH-AWS <[email protected]> * Changes from first proofread Signed-off-by: JeffH-AWS <[email protected]> * Changed heading Signed-off-by: JeffH-AWS <[email protected]> * Addressed reviewer comments and made some changes Signed-off-by: JeffH-AWS <[email protected]> * Forgot to incorporate one change. Fixed. Signed-off-by: JeffH-AWS <[email protected]> * Final editorial changes Signed-off-by: JeffH-AWS <[email protected]> Signed-off-by: JeffH-AWS <[email protected]> * fix#1584-custom_attr_allowlist (#1636) Signed-off-by: cwillum <[email protected]> Signed-off-by: cwillum <[email protected]> * Update TERMS.md with definition for Setting (#1632) * fix#1631-Terms-setting Signed-off-by: cwillum <[email protected]> * fix#1631-Terms-setting Signed-off-by: cwillum <[email protected]> Signed-off-by: cwillum <[email protected]> * Add disclaimer about remote fs usage and an example of setting env var (#1644) * Add disclaimer about remote fs usage and an example of setting env var Signed-off-by: JeffH-AWS <[email protected]> * Enhanced wording a little bit Signed-off-by: JeffH-AWS <[email protected]> Signed-off-by: JeffH-AWS <[email protected]> * [DOC] New documentation: Self-host maps server (#1625) * Add new page self-host maps server Signed-off-by: vagimeli <[email protected]> * Added new content Signed-off-by: vagimeli <[email protected]> * Copy edit Signed-off-by: vagimeli <[email protected]> * Tech review edits Signed-off-by: vagimeli <[email protected]> * Doc review edits Signed-off-by: vagimeli <[email protected]> * Editorial review changes Signed-off-by: vagimeli <[email protected]> * Final edits Signed-off-by: vagimeli <[email protected]> Signed-off-by: vagimeli <[email protected]> * Add feedback. Signed-off-by: Naarcha-AWS <[email protected]> * Fix links Signed-off-by: Naarcha-AWS <[email protected]> Signed-off-by: Naarcha-AWS <[email protected]> Signed-off-by: JeffH-AWS <[email protected]> Signed-off-by: cwillum <[email protected]> Signed-off-by: vagimeli <[email protected]> Co-authored-by: Nate Bower <[email protected]> Co-authored-by: Jeff Huss <[email protected]> Co-authored-by: Chris Moore <[email protected]> Co-authored-by: Melissa Vagi <[email protected]>
12 KiB
layout, title, nav_order, has_children, redirect_from
| layout | title | nav_order | has_children | redirect_from | |
|---|---|---|---|---|---|
| default | Performance Analyzer | 58 | true |
|
Performance analyzer
Performance analyzer is an agent and REST API that allows you to query numerous performance metrics for your cluster, including aggregations of those metrics.
The performance analyzer plugin is installed by default in OpenSearch version 2.0 and higher. {: .note }
Performance analyzer installation and configuration
The following sections provide the steps for installing and configuring the performance analyzer plugin.
Install performance analyzer
The performance analyzer plugin is included in the installation for Docker and tarball. If you need to install the performance analyzer plugin manually, download the plugin from Maven and install the plugin using the standard plugins install process. Performance analyzer will run on each node in a cluster.
To start the performance analyzer root cause analysis (RCA) agent on a tarball installation, run the following command:
OPENSEARCH_HOME=~/opensearch-2.2.1 OPENSEARCH_JAVA_HOME=~/opensearch-2.2.1/jdk OPENSEARCH_PATH_CONF=~/opensearch-2.2.1/bin ./performance-analyzer-agent-cli
The following command enables the performance analyzer plugin and performance analyzer RCA agent:
curl -XPOST localhost:9200/_plugins/_performanceanalyzer/cluster/config -H 'Content-Type: application/json' -d '{"enabled": true}'
To shut down the performance analyzer RCA agent, run the following command:
kill $(ps aux | grep -i 'PerformanceAnalyzerApp' | grep -v grep | awk '{print $2}')
To disable the performance analyzer plugin, run the following command:
curl -XPOST localhost:9200/_plugins/_performanceanalyzer/cluster/config -H 'Content-Type: application/json' -d '{"enabled": false}'
To uninstall the performance analyzer plugin, run the following command:
bin/opensearch-plugin remove opensearch-performance-analyzer
Configure performance analyzer
To configure the performance analyzer plugin, you will need to edit the performance-analyzer.properties configuration file in the config/opensearch-performance-analyzer/ directory. Make sure to uncomment the line #webservice-bind-host and set it to 0.0.0.0. You can reference the following example configuration.
# ======================== OpenSearch performance analyzer plugin config =========================
# NOTE: this is an example for Linux. Please modify the config accordingly if you are using it under other OS.
# WebService bind host; default to all interfaces
webservice-bind-host = 0.0.0.0
# Metrics data location
metrics-location = /dev/shm/performanceanalyzer/
# Metrics deletion interval (minutes) for metrics data.
# Interval should be between 1 to 60.
metrics-deletion-interval = 1
# If set to true, the system cleans up the files behind it. So at any point, we should expect only 2
# metrics-db-file-prefix-path files. If set to false, no files are cleaned up. This can be useful, if you are archiving
# the files and wouldn't like for them to be cleaned up.
cleanup-metrics-db-files = true
# WebService exposed by App's port
webservice-listener-port = 9600
# Metric DB File Prefix Path location
metrics-db-file-prefix-path = /tmp/metricsdb_
https-enabled = false
#Setup the correct path for certificates
#certificate-file-path = specify_path
#private-key-file-path = specify_path
# Plugin Stats Metadata file name, expected to be in the same location
plugin-stats-metadata = plugin-stats-metadata
# Agent Stats Metadata file name, expected to be in the same location
agent-stats-metadata = agent-stats-metadata
To start the performance analyzer RCA agent, run the following command.
OPENSEARCH_HOME=~/opensearch-2.2.1 OPENSEARCH_JAVA_HOME=~/opensearch-2.2.1/jdk OPENSEARCH_PATH_CONF=~/opensearch-2.2.1/bin ./performance-analyzer-agent-cli
Storage
Performance analyzer uses /dev/shm for temporary storage. During heavy workloads on a cluster, performance analyzer can use up to 1 GB of space.
Docker, however, has a default /dev/shm size of 64 MB. To change this value, you can use the docker run --shm-size 1gb flag or a similar setting in Docker Compose.
If you're not using Docker, check the size of /dev/shm using df -h. The default value is probably plenty, but if you need to change its size, add the following line to /etc/fstab:
tmpfs /dev/shm tmpfs defaults,noexec,nosuid,size=1G 0 0
Then remount the file system:
mount -o remount /dev/shm
Security
Performance analyzer supports encryption in transit for requests. It currently does not support client or server authentication for requests. To enable encryption in transit, edit performance-analyzer.properties in your $OPENSEARCH_HOME directory.
vi $OPENSEARCH_HOME/config/opensearch-performance-analyzer/performance-analyzer.properties
Change the following lines to configure encryption in transit. Note that certificate-file-path must be a certificate for the server, not a root certificate authority (CA).
https-enabled = true
#Setup the correct path for certificates
certificate-file-path = specify_path
private-key-file-path = specify_path
Enable performance analyzer for RPM/YUM installations
If you installed OpenSearch from an RPM distribution, you can start and stop performance analyzer with systemctl.
# Start OpenSearch Performance Analyzer
sudo systemctl start opensearch-performance-analyzer.service
# Stop OpenSearch Performance Analyzer
sudo systemctl stop opensearch-performance-analyzer.service
Example API query and response
The following is an example API query:
GET localhost:9600/_plugins/_performanceanalyzer/metrics/units
The following is an example response:
{"Disk_Utilization":"%","Cache_Request_Hit":"count",
"Refresh_Time":"ms","ThreadPool_QueueLatency":"count",
"Merge_Time":"ms","ClusterApplierService_Latency":"ms",
"PublishClusterState_Latency":"ms",
"Cache_Request_Size":"B","LeaderCheck_Failure":"count",
"ThreadPool_QueueSize":"count","Sched_Runtime":"s/ctxswitch","Disk_ServiceRate":"MB/s","Heap_AllocRate":"B/s","Indexing_Pressure_Current_Limits":"B",
"Sched_Waittime":"s/ctxswitch","ShardBulkDocs":"count",
"Thread_Blocked_Time":"s/event","VersionMap_Memory":"B",
"Master_Task_Queue_Time":"ms","IO_TotThroughput":"B/s",
"Indexing_Pressure_Current_Bytes":"B",
"Indexing_Pressure_Last_Successful_Timestamp":"ms",
"Net_PacketRate6":"packets/s","Cache_Query_Hit":"count",
"IO_ReadSyscallRate":"count/s","Net_PacketRate4":"packets/s","Cache_Request_Miss":"count",
"ThreadPool_RejectedReqs":"count","Net_TCP_TxQ":"segments/flow","Master_Task_Run_Time":"ms",
"IO_WriteSyscallRate":"count/s","IO_WriteThroughput":"B/s",
"Refresh_Event":"count","Flush_Time":"ms","Heap_Init":"B",
"Indexing_Pressure_Rejection_Count":"count",
"CPU_Utilization":"cores","Cache_Query_Size":"B",
"Merge_Event":"count","Cache_FieldData_Eviction":"count",
"IO_TotalSyscallRate":"count/s","Net_Throughput":"B/s",
"Paging_RSS":"pages",
"AdmissionControl_ThresholdValue":"count",
"Indexing_Pressure_Average_Window_Throughput":"count/s",
"Cache_MaxSize":"B","IndexWriter_Memory":"B",
"Net_TCP_SSThresh":"B/flow","IO_ReadThroughput":"B/s",
"LeaderCheck_Latency":"ms","FollowerCheck_Failure":"count",
"HTTP_RequestDocs":"count","Net_TCP_Lost":"segments/flow",
"GC_Collection_Event":"count","Sched_CtxRate":"count/s",
"AdmissionControl_RejectionCount":"count","Heap_Max":"B",
"ClusterApplierService_Failure":"count",
"PublishClusterState_Failure":"count",
"Merge_CurrentEvent":"count","Indexing_Buffer":"B",
"Bitset_Memory":"B","Net_PacketDropRate4":"packets/s",
"Heap_Committed":"B","Net_PacketDropRate6":"packets/s",
"Thread_Blocked_Event":"count","GC_Collection_Time":"ms",
"Cache_Query_Miss":"count","Latency":"ms",
"Shard_State":"count","Thread_Waited_Event":"count",
"CB_ConfiguredSize":"B","ThreadPool_QueueCapacity":"count",
"CB_TrippedEvents":"count","Disk_WaitTime":"ms",
"Data_RetryingPendingTasksCount":"count",
"AdmissionControl_CurrentValue":"count",
"Flush_Event":"count","Net_TCP_RxQ":"segments/flow",
"Shard_Size_In_Bytes":"B","Thread_Waited_Time":"s/event",
"HTTP_TotalRequests":"count",
"ThreadPool_ActiveThreads":"count",
"Paging_MinfltRate":"count/s","Net_TCP_SendCWND":"B/flow",
"Cache_Request_Eviction":"count","Segments_Total":"count",
"FollowerCheck_Latency":"ms","Heap_Used":"B",
"Master_ThrottledPendingTasksCount":"count",
"CB_EstimatedSize":"B","Indexing_ThrottleTime":"ms",
"Master_PendingQueueSize":"count",
"Cache_FieldData_Size":"B","Paging_MajfltRate":"count/s",
"ThreadPool_TotalThreads":"count","ShardEvents":"count",
"Net_TCP_NumFlows":"count","Election_Term":"count"}
Root cause analysis
The root cause analysis (RCA) framework uses the information from performance analyzer to inform administrators of the root cause of performance and availability issues that their clusters might be experiencing.
Enable the RCA framework
To enable the RCA framework, run the following command:
curl -XPOST http://localhost:9200/_plugins/_performanceanalyzer/rca/cluster/config -H 'Content-Type: application/json' -d '{"enabled": true}'
If you encounter the curl: (52) Empty reply from server response, run the following command to enable RCA:
curl -XPOST https://localhost:9200/_plugins/_performanceanalyzer/rca/cluster/config -H 'Content-Type: application/json' -d '{"enabled": true}' -u 'admin:admin' -k
Example API query and response
To request all available RCAs, run the following command:
GET localhost:9600/_plugins/_performanceanalyzer/rca
To request a specific RCA, run the following command:
GET localhost:9600/_plugins/_performanceanalyzer/rca?name=HighHeapUsageClusterRCA
The following is an example response:
{
"HighHeapUsageClusterRCA": [{
"RCA_name": "HighHeapUsageClusterRCA",
"state": "unhealthy",
"timestamp": 1587426650942,
"HotClusterSummary": [{
"number_of_nodes": 2,
"number_of_unhealthy_nodes": 1,
"HotNodeSummary": [{
"host_address": "192.168.144.2",
"node_id": "JtlEoRowSI6iNpzpjlbp_Q",
"HotResourceSummary": [{
"resource_type": "old gen",
"threshold": 0.65,
"value": 0.81827232588145373,
"avg": NaN,
"max": NaN,
"min": NaN,
"unit_type": "heap usage in percentage",
"time_period_seconds": 600,
"TopConsumerSummary": [{
"name": "CACHE_FIELDDATA_SIZE",
"value": 590702564
},
{
"name": "CACHE_REQUEST_SIZE",
"value": 28375
},
{
"name": "CACHE_QUERY_SIZE",
"value": 12687
}
],
}]
}]
}]
}]
}
Performance analyzer and RCA API references
Related links
Further documentation on the use of performance analyzer and RCA can be found at the following links: