diff --git a/docs/reference/troubleshooting/diagnostic.asciidoc b/docs/reference/troubleshooting/diagnostic.asciidoc
new file mode 100644
index 0000000000000..17a499c88c7a9
--- /dev/null
+++ b/docs/reference/troubleshooting/diagnostic.asciidoc
@@ -0,0 +1,115 @@
+[[diagnostic]]
+=== Diagnostic
+++++
+Capturing Diagnostic
+++++
+:keywords: Elasticsearch diagnostic, diagnostics
+
+An https://github.com/elastic/support-diagnostics[{es} diagnostic] allows
+you to capture a point-in-time snapshot of cluster statistics and most settings.
+It works against all {es} versions and requires JRE/JDK ≥v1.8. It is
+useful when escalting to https://support.elastic.co[Elastic Support] or
+https://discuss.elastic.co[Elastic Discuss] to minimize turnaround time.
+It's point-in-time view is also useful when troubleshooting, see
+https://www.elastic.co/blog/why-does-elastic-support-keep-asking-for-diagnostic-files[this
+for examples].
+
+[TIP]
+====
+The {es} diagnostic is included as a sub-library within Elastic's platforms:
+
+* {ece} which you can pull under {ece} > Deployment > Operations >
+Prepare Bundle > {es}.
+* {eck}'s https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-take-eck-dump.html[diagnostic]
+pulls this by default.
+====
+
+[discrete]
+[[diagnostic-capture]]
+==== Capture
+
+To capture an {es} diagnostic:
+
+. Download latest `diagnostics-X.X.X-dist.zip` (_not_ the "source code") file
+from https://github.com/elastic/support-diagnostics/releases/latest[its
+latest releases]. We will reference the unzipped execution file below as
+`./diagnostics.sh` below which is for Unix-based systems though Windows will
+replace this for `.\diagnostics.bat`.
+
+. There's https://github.com/elastic/support-diagnostics#diagnostic-types[three
+available `type`'s'] to capture your {es} diagnostic.
+
+** `local` (default, **recommended**): polls the <>,
+gathers Operating System info, and captures cluster and GC logs.
+Alternatively, you can use `remote` which will establish an ssh session
+to the applicable target server to pull the same info.
+
+** `api` polls the <> but all other data must be
+collected manually.
+
+. Verify network and user permissions are sufficient to connect to your {es}
+cluster by checking its <>. For example,
+for `host:localhost`, `port:9200`, and `username:elastic` this would curl as:
++
+[source,sh]
+---
+curl -X GET -k -u elastic -p https://localhost:9200/_cluster/health
+---
+
+. You're expecting an HTTP 200 `OK` response that reports the cluster's
+`status`. If you can't successfully curl your {es} host, please
+pause and review the resulting error as the diagnostic will potentially
+not have the expected results. Outlining common errors and their next steps:
+
+** HTTP 401 `UNAUTHENTICATED`: the error will usually tell you either
+that your `username:password` pair is invalid or that your `.security`
+index is unavailable and you'll need to setup a temporary
+<> user with `role:superuser` to authenticate.
+
+** HTTP 403 `UNAUTHORIZED`: your attempted `username` is recognized but
+has insufficient permissions to run the diagnostic. Either use a different
+username or elevate this user's privileges.
+
+** HTTP 429 `TOO_MANY_REQUESTS` (for example `circuit_breaking_exception`):
+your username authenticated and authorized but the cluster is under
+sufficiently high strain that it's not responding to API calls. These
+responses are usually hit and miss, so potentially indicate that you can
+proceed with running the diagnostic (which will pull what it can).
+
+** HTTP 504 `BAD_GATEWAY`: your network is experiencing issues reaching
+the cluster (for example because of proxy or firewall). You might
+change where you attempt from, confirm your port, or attempt targeting
+the host's IP instead of its URL domain.
+
+** HTTP 503 `SERVICE_UNAVAILABLE` (for example `master_not_discovered_exception`):
+your cluster does not currently have an elected master node (which is
+required for it to be API-responsive). This may be temporary while master
+node rotates. Otherwise, do not run Step#5 but pivot towards investigating
+and first resolve <>
+before proceeding.
+
+. Once you have a working curl request, use those same parameters to fill-in
+the https://github.com/elastic/support-diagnostics#standard-options[diagnostic
+parameters]. From our example, most common results will appear:
++
+[source,sh]
+---
+sudo ./diagnostics.sh --type local --host localhost --port 9200 -u elastic -p --bypassDiagVerify --ssl --noVerify
+---
+
+. Once this script has completed, verify no errors emitted in the
+`diagnostic.log`. Common errors to resolve:
+
+** `Error: Could not find or load main class com.elastic.support.diagnostics.DiagnosticApp`
+indicates that you accidentally downloaded the "source code" file
+instead of the diagnostic in Step#1 above.
+
+** `Could not retrieve the {es} version due to a system or network error - unable to continue.`
+indicates an issue for the diagnostic to curl the cluster. You should
+expect either Step#3 failed or there's a parameter disconnect between
+Step#3 and Step#5 above.
+
+** `security_exception` with `is unauthorized for user` suggests
+insufficient admin permissions to run the diagnostic tool and another
+user should be used or current user granted `role:superuser` privileges
+to run diagnostic.