Elasticsearch OpenSearch Performance Analyzer: Deep Dive and Best Practices

By Opster Team

Updated: Nov 14, 2023

| 2 min read

Introduction

What is OpenSearch Performance Analyzer?

OpenSearch Performance Analyzer is a feature that helps users monitor and troubleshoot performance issues in their OpenSearch or Elasticsearch clusters. It provides detailed metrics and insights into various components of the cluster, such as nodes, indices, shards, and tasks.

In this article, we will dive deep into the OpenSearch Performance Analyzer, discuss its architecture, and share best practices for using it effectively. If you want to learn about how to improve OpenSearch search performance, check out this guide.

Architecture of OpenSearch Performance Analyzer

The OpenSearch Performance Analyzer consists of three main components:

  1. Performance Analyzer Agent: This component runs on each node in the cluster and collects performance metrics at regular intervals. It uses the Java Management Extensions (JMX) API to gather JVM and operating system metrics, as well as the OpenSearch REST API to collect cluster-specific metrics.
  1. Performance Analyzer REST API: This API provides an interface for users to query the performance metrics collected by the Performance Analyzer Agent. Users can request metrics for specific nodes, indices, or time ranges, and the API returns the data in JSON format.
  1. PerfTop CLI: PerfTop is a command-line interface (CLI) tool that allows users to visualize the performance metrics collected by the Performance Analyzer Agent in real-time. It queries the Performance Analyzer REST API and displays the results in a user-friendly, customizable dashboard.

Best Practices for Using OpenSearch Performance Analyzer

  1. Enable Performance Analyzer on all nodes: To get a comprehensive view of your cluster’s performance, it is essential to enable the Performance Analyzer on all nodes in the cluster. This can be done by setting the `opensearch_performance_analyzer_enabled` configuration option to `true` in the `opensearch.yml` file on each node.
  1. Use PerfTop CLI for real-time monitoring: The PerfTop CLI tool is a powerful way to visualize performance metrics in real-time. It provides a customizable dashboard that allows you to focus on specific metrics and nodes, making it easier to identify and troubleshoot performance issues. To use PerfTop, download the latest release from the OpenSearch GitHub repository and follow the installation instructions.
  1. Monitor key performance metrics: Some of the most important metrics to monitor in your OpenSearch cluster include:
  • CPU usage: High CPU usage can indicate that your nodes are struggling to keep up with the workload. Monitor the `CPU_Utilization` metric to identify nodes with high CPU usage.
  • JVM memory usage: Monitor the `Heap_Used_Percent` metric to ensure that your nodes have enough heap memory available. High JVM memory usage can lead to increased garbage collection times and reduced performance.
  • Disk usage: High disk usage can cause slow indexing and search performance. Monitor the `Disk_Utilization` metric to identify nodes with high disk usage.
  • Indexing and search latency: Monitor the `Indexing_Latency` and `Search_Latency` metrics to ensure that your cluster is meeting your performance requirements for indexing and search operations.
  1. Set up alerts for critical performance metrics: To proactively detect and address performance issues, set up alerts for critical performance metrics using the OpenSearch Alerting feature. For example, you can create an alert that triggers when the CPU usage on any node exceeds a certain threshold.
  1. Analyze performance over time: Use the Performance Analyzer REST API to query historical performance data and analyze trends over time. This can help you identify patterns and correlations between different metrics, which can be useful for capacity planning and performance tuning.
  1. Optimize your cluster configuration: Based on the insights gained from the Performance Analyzer, you may need to adjust your cluster configuration to improve performance. This can include changes such as increasing the heap size, adjusting the number of shards and replicas, or adding more nodes to the cluster.

Conclusion

The OpenSearch Performance Analyzer is a powerful tool for monitoring and troubleshooting performance issues in your OpenSearch or Elasticsearch cluster. By understanding its architecture and following best practices, you can effectively use the Performance Analyzer to identify bottlenecks, optimize your cluster configuration, and ensure that your cluster is running at peak performance.