OpenSearch Dashboards Included with the Platform
The Zend Enterprise Web Platform ships with OpenSearch as its observability data store and OpenSearch Dashboards as the visualization layer on top of it. Together they give you a searchable, visual view of the logs, metrics, and traces flowing out of your applications and the platform's services with useful dashboards available out of the box, on first install.
This section explains where the observability data comes from, how to access the dashboards, and how to manage them.
What the dashboards show you
Everything the platform observes ends up in OpenSearch:
- Logs: Gathered from every node by FluentBit (running as a DaemonSet) and shipped to OpenSearch. This includes your application's logs, nginx access/error logs (emitted in a structured JSON format), and the logs of the platform services.
- Metrics: Scraped from the platform's services by the OpenTelemetry collector via dedicated exporters (MySQL, Redis, PHP-FPM, and ZendHQ), then forwarded through Data Prepper into OpenSearch.
- Traces: Emitted by your application (and the gateway) through OpenTelemetry and forwarded through Data Prepper into OpenSearch. Because Job Queue requests are traced too, you can follow a single request from the initial web hit through to any background jobs it spawned.
OpenSearch Dashboards visualizes all three, so you can investigate behavior and performance across the whole platform from one place.
Default dashboards on first install
By default, the platform imports a set of pre-configured dashboards automatically the first time it is installed. This behavior is controlled by the dashboard import setting:
Leave dashboardImport.enabled set to true (the default) to get the shipped dashboards without any manual setup. If you maintain your own dashboards and don't want the platform's imported, set it to false.
The Data Prepper pipelines write metrics and logs to index aliases (metrics-otel-v1 and logs-otel-v1 by default). The shipped dashboards are built against these aliases. If you change the aliases under zendphp-data-prepper.config, you may need to adjust the dashboards accordingly.
Accessing OpenSearch Dashboards
There are two ways to reach the dashboards: port-forward the service from your control plane, or expose it through the gateway.
Option A - port-forward (no public exposure)
This keeps the dashboards private to whoever has cluster access. First, find the OSD service:
kubectl -n <namespace> get svc
Then forward a local port to the dashboards' port 5601:
kubectl -n <namespace> port-forward <service_name> 5601:5601
The first 5601 is the port on the machine running kubectl; the second is the port the service exposes in the cluster. Browse to:
http://localhost:5601
kubectl port-forward tunnels over your cluster's TLS-secured connection, so it's a secure way to reach the dashboards without exposing them publicly — ideal when you run kubectl from inside your VPN.
Option B - expose through the gateway
To make the dashboards reachable at a hostname, configure the OpenSearch hostname in your global values:
The dashboards are then exposed on that hostname through the platform gateway, and you can reach them directly:
http://dashboards.example.com
Exposing the dashboards through the gateway makes them reachable to anyone who can reach that hostname. Put appropriate access controls (network policy, an authenticating proxy, or TLS termination with authentication) in front of them before exposing observability data beyond your trusted network.
Managing and extending the dashboards
You can open a shell into the OpenSearch Dashboards container to install or manage pre-configured dashboards, and into the OpenSearch container to perform backups, archive old data, or dump data:
# Shell into a container (use -c to target a specific container)
kubectl -n <namespace> exec -it <pod_name> -- /bin/sh
Tuning the observability stack
The defaults are sufficient for most deployments, but the relevant knobs are:
- OpenSearch storage and resources:
zendphp-opensearch.persistence.size,zendphp-opensearch.resources, andzendphp-opensearch.opensearchJavaOpts(JVM heap). Increase storage as your telemetry volume grows. - Dashboards resources and scaling:
zendphp-dashboards.resourcesandzendphp-dashboards.autoscaling. - Trace sampling:
global.tracingRatio(0–100) controls what percentage of requests are traced. The default is75. - Data Prepper throughput: Enable
zendphp-data-prepper.autoscalingif Data Prepper can't keep up with your telemetry volume.