Performance Analyzer Webservice does not come up

Versions (relevant - OpenSearch/Dashboard/Server OS/Browser):
opensearch: 2.14. Dashboard = 2.14, ubuntu 24.02

Describe the issue:
curl http://localhost:9600/_plugins/_performanceanalyzer/metrics/units -k -u ‘admin:admin’
have timeout all time .

Configuration:
docker-compose.yml


services:

  os01:
    restart: always
    image: opensearchproject/opensearch:2.14.0
    environment:
      UID: 1000
      GID: 1000      
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
      node.name: os01
      discovery.seed_hosts: os01,os02
      cluster.initial_master_nodes: os01,os02
      plugins.security.ssl.transport.pemkey_filepath: certificates/os01/os01.key # relative path
      plugins.security.ssl.transport.pemcert_filepath: certificates/os01/os01.pem
      plugins.security.ssl.http.pemkey_filepath: certificates/os01/os01.key
      plugins.security.ssl.http.pemcert_filepath: certificates/os01/os01.pem
      DISABLE_INSTALL_DEMO_CONFIG: "true"
      JAVA_HOME: /usr/share/opensearch/jdk
      bootstrap.memory_lock: "true" # along with the memlock settings below, disables swapping
      network.host: "0.0.0.0"
    ulimits: 
      memlock:
        soft: -1
        hard: -1
    volumes:
      - "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"
      - "os-data1:/usr/share/opensearch/data"
      - "./certs:/usr/share/opensearch/config/certificates:ro"
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "1"
    ports:
      - 9200:9200
      - 9600:9600 # required for Performance Analyzer
  
  os02:
    restart: always
    image: opensearchproject/opensearch:2.14.0
    environment:
      UID: 1000
      GID: 1000      
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
      node.name: os02
      discovery.seed_hosts: os01,os02
      cluster.initial_master_nodes: os01,os02
      plugins.security.ssl.transport.pemkey_filepath: certificates/os02/os02.key # relative path
      plugins.security.ssl.transport.pemcert_filepath: certificates/os02/os02.pem
      plugins.security.ssl.http.pemkey_filepath: certificates/os02/os02.key
      plugins.security.ssl.http.pemcert_filepath: certificates/os02/os02.pem
      DISABLE_INSTALL_DEMO_CONFIG: "true"
      JAVA_HOME: /usr/share/opensearch/jdk
      bootstrap.memory_lock: "true" # along with the memlock settings below, disables swapping
      network.host: "0.0.0.0"
    ulimits: 
      memlock:
        soft: -1
        hard: -1
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "1"
    volumes:
      - "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"
      - "os-data2:/usr/share/opensearch/data"
      - "./certs:/usr/share/opensearch/config/certificates:ro"
  
  kibana:
    restart: always
    image: opensearchproject/opensearch-dashboards:2.14.0
    environment:
      OPENSEARCH_HOSTS: '["https://os01:9200","https://os02:9200"]' # must be a string with no spaces when specified as an environment variable
      DISABLE_INSTALL_DEMO_CONFIG: "true"
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "1"
    volumes:
      - "./certs:/usr/share/opensearch-dashboards/config/certificates:ro"
      - "./opensearch-dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml"
    ports:
      - 5601:5601

volumes:
  os-data1:
  os-data2:

after that

curl -XPOST https://localhost:9200/_plugins/_performanceanalyzer/cluster/config -H 'Content-Type: application/json' -d '{"enabled": true}' -u 'admin:admin' -k
curl -XPOST https://localhost:9200/_plugins/_performanceanalyzer/rca/cluster/config -H 'Content-Type: application/json' -d '{"enabled": true}' -u 'admin:admin' -k

curl -k -u admin:admin -XPOST https://localhost:9200/_plugins/_performanceanalyzer/batch/config -H 'Content-Type: application/json' -d '{"enabled": true}'
curl -k -u admin:admin -XPOST https://localhost:9200/_plugins/_performanceanalyzer/batch/cluster/config -H 'Content-Type: application/json' -d '{"enabled": true}'

Relevant Logs or Screenshots:
GET https://localhost:9200/_plugins/_performanceanalyzer/cluster/config/?verbose
{
“currentPerformanceAnalyzerClusterState”: {
“PerformanceAnalyzerEnabled”: true,
“RcaEnabled”: true,
“LoggingEnabled”: false,
“BatchMetricsEnabled”: true,
“ThreadContentionMonitoringEnabled”: false
},
“shardsPerCollection”: 0,
“batchMetricsRetentionPeriodMinutes”: 7
}

Pls help me.

performance-analyzer.properties is default.

Are you seeing any errors in logs/PerformanceAnalyzer.log ?

@pdcuong27 All plugins.security settings must be passed through opensearch.yml instead of environment variables.

@pdcuong27 How did you get admin:admin working? This is not valid since 2.11
This docker-compose should failed to start due to missing OPENSEARCH_INITIAL_ADMIN_PASSWORD.

@pablo, I think I pushed the wrong docker-compose.yaml. The bug I’m facing is described here: [BUG] Performance Analyzer webserver on port 9600 not responding to any API calls (caused by JDK upgrade?) · Issue #545 · opensearch-project/performance-analyzer-rca · GitHub.

Do you have any suggestions on how to resolve this? I hope to use this plugin in an OpenSearch cluster deployed by an operator.

Thanks!

@pdcuong27 I’ve got the same result from 2.12 up to 2.16. I’ve tried solution with custom image build but it didn’t work for me. Have you tried that?

I see there is a bug fix still ongoing.