OpenSearch Dashboards did not load properly

I’m following the guide posted at OpenSearch-Dashboards/DEVELOPER_GUIDE.md at main · opensearch-project/OpenSearch-Dashboards · GitHub
When I try to connect to localhost:5603/xyz I see a blank page with a red error message that says: OpenSearch Dashboards did not load properly. Check the server output for more information.
In the server output there are no obvious error messages.
I tried this both on my intel macbook pro and on windows 11 using wsl and I get the same error.

Hi @francesco,

How did you deploy your cluster? could you share your config files and the output of the following:

curl --insecure -u <username>:<password> -XGET https://<OS_node>:9200/_plugins/_security/authinfo?pretty

Best,
mj

This is the output of the command:

{
“user” : “User [name=admin, backend_roles=[admin], requestedTenant=null]”,
“user_name” : “admin”,
“user_requested_tenant” : null,
“remote_address” : “[::1]:53278”,
“backend_roles” : [
“admin”
],
“custom_attribute_names” : ,
“roles” : [
“own_index”,
“all_access”
],
“tenants” : {
“global_tenant” : true,
“admin_tenant” : true,
“admin” : true
},
“principal” : null,
“peer_certificates” : “0”,
“sso_logout_url” : null
}

This is the opensearch.yml

# ======================== OpenSearch Configuration =========================
#
# NOTE: OpenSearch comes with reasonable defaults for most settings.
#       Before you set out to tweak and tune the configuration, make sure you
#       understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.opensearch.org
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
#cluster.name: my-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
#node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /var/lib/opensearch
#
# Path to log files:
#
path.logs: /var/log/opensearch
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# OpenSearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["host1", "host2"]
#
# Bootstrap the cluster using an initial set of cluster-manager-eligible nodes:
#
#cluster.initial_cluster_manager_nodes: ["node-1", "node-2"]
#
# For more information, consult the discovery and cluster formation module documentation.
#
discovery.type: single-node
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
#gateway.recover_after_nodes: 3
#
# For more information, consult the gateway module documentation.
#
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
#
# ---------------------------------- Remote Store -----------------------------------
# Controls whether cluster imposes index creation only with remote store enabled
# cluster.remote_store.enabled: true
#
# Repository to use for segment upload while enforcing remote store for an index
# node.attr.remote_store.segment.repository: my-repo-1
#
# Repository to use for translog upload while enforcing remote store for an index
# node.attr.remote_store.translog.repository: my-repo-1
#
# ---------------------------------- Experimental Features -----------------------------------
# Gates the visibility of the experimental segment replication features until they are production ready.
#
#opensearch.experimental.feature.segment_replication_experimental.enabled: false
#
# Gates the functionality of a new parameter to the snapshot restore API
# that allows for creation of a new index type that searches a snapshot
# directly in a remote repository without restoring all index data to disk
# ahead of time.
#
#opensearch.experimental.feature.searchable_snapshot.enabled: false
#
#
# Gates the functionality of enabling extensions to work with OpenSearch.
# This feature enables applications to extend features of OpenSearch outside of
# the core.
#
#opensearch.experimental.feature.extensions.enabled: false
#
#
# Gates the optimization of datetime formatters caching along with change in default datetime formatter
# Once there is no observed impact on performance, this feature flag can be removed.
#
#opensearch.experimental.optimization.datetime_formatter_caching.enabled: false
#
# Gates the functionality of enabling Opensearch to use pluggable caches with respective store names via setting.
#
#opensearch.experimental.feature.pluggable.caching.enabled: false
#
# Gates the functionality of star tree index, which improves the performance of search aggregations.
#
#opensearch.experimental.feature.composite_index.star_tree.enabled: false


######## Start OpenSearch Security Demo Configuration ########
# WARNING: revise all the lines below before you go into production
plugins.security.disabled: false
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn: ['CN=kirk,OU=client,O=client,L=test,C=de']
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: [all_access, security_rest_api_access]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [.plugins-ml-agent, .plugins-ml-config, .plugins-ml-connector,
  .plugins-ml-controller, .plugins-ml-model-group, .plugins-ml-model, .plugins-ml-task,
  .plugins-ml-conversation-meta, .plugins-ml-conversation-interactions, .plugins-ml-memory-meta,
  .plugins-ml-memory-message, .plugins-ml-stop-words, .opendistro-alerting-config,
  .opendistro-alerting-alert*, .opendistro-anomaly-results*, .opendistro-anomaly-detector*,
  .opendistro-anomaly-checkpoints, .opendistro-anomaly-detection-state, .opendistro-reports-*,
  .opensearch-notifications-*, .opensearch-notebooks, .opensearch-observability, .ql-datasources,
  .opendistro-asynchronous-search-response*, .replication-metadata-store, .opensearch-knn-models,
  .geospatial-ip2geo-data*, .plugins-flow-framework-config, .plugins-flow-framework-templates,
  .plugins-flow-framework-state]
node.max_local_storage_nodes: 3
######## End OpenSearch Security Demo Configuration ########

I’m trying to follow the guide on the github repo and i’m using the latest opensearch snapshot as shown in the guide.

I am having exactly the same error. In mine, I have traced it to the point where upon running step 3 on the quick installation guide below:

docker-compose up -d

I get the seemingly normal output:

Starting opensearch-node1      ... done
Starting opensearch-dashboards ... done
Starting opensearch-node2      ... done

But upon checking the docker state with
docker-compose ps
I get the following:

        Name                   Command           State            Ports
--------------------------------------------------------------------------------
opensearch-dashboards   ./opensearch-            Up       0.0.0.0:5601-
                        dashboards-do ...                 >5601/tcp,:::5601-
                                                          >5601/tcp
opensearch-node1        ./opensearch-docker-     Exit 1
                        entryp ...
opensearch-node2        ./opensearch-docker-     Exit 1
                        entryp ...

I will be trying some stuff like a previous build or something, will keep you posted if something works. Currently uploading on Ubuntu 22.04 LTS vm on Google.

Hello, I’m working with WSL and Ubuntu. I followed every step as shown in the guide found in the github repo but I still get the error. I’m using yarn opensearch snapshot for the server, maybe that’s the problem? If I clone the Opensearch Dashboards repo I get the 3.0.0 version, maybe that’s the problem?

I have made mine work.
Following the tutorial available at https://opensearch.org/docs/latest/security/configuration/demo-configuration/ , which now used version 2.18 instead of 2.17, it showed up upon startup that the password I had provisioned did not comply with the password generation rules (at least 8 chars, upper AND lowercase letters, numbers and symbols). Upon setting up the pass with the command (please change to the actual password):

export OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password>

and setting the .env file at the same folder of the docker yaml with

sudo nano .env

with contents

OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password>

i finally managed to get all three services running, per tutorial:

        Name                    Command           State           Ports
--------------------------------------------------------------------------------
opensearch-dashboards   ./opensearch-             Up      0.0.0.0:5601-
                        dashboards-do ...                 >5601/tcp,:::5601-
                                                          >5601/tcp
opensearch-node1        ./opensearch-docker-      Up      0.0.0.0:9200-
                        entryp ...                        >9200/tcp,:::9200-
                                                          >9200/tcp, 9300/tcp, 0
                                                          .0.0.0:9600-
                                                          >9600/tcp,:::9600-
                                                          >9600/tcp, 9650/tcp
opensearch-node2        ./opensearch-docker-      Up      9200/tcp, 9300/tcp,
                        entryp ...                        9600/tcp, 9650/tcp

Hope this helps.

I am also facing the same issue here. When i checked in Devtools, i see this error. Any alternative solutions/suggestions to solve this?

I assume this is one of the major fix required with respect to opensearch dashboards as new user cannot login to the dashboard due to this. Sometimes works and sometime not. Most of the times microsoft edge works but not on Chrome. Again, how is it intermittent is the question which needs clarity.

screenshot attached

bootstrap.js:76 
        
        
       GET https://demo-kb.domain.com/7946/bundles/plugin/expressions/expressions.plugin.js net::ERR_ABORTED 504 (Gateway Timeout)

I was able to fix by increasing the dashboard resources.

    resources:
      requests:
         memory: "2Gi"
         cpu: "2000m"
      limits:
         memory: "2Gi"
         cpu: "2000m"

Rootcause: In devtools we noticed that not all the plugins were able to download during login process and half of the plugins were failed with 504 timed out error.

1 Like

I solved the issue by following the docker developer guide