Skip to content

PMM-14989 Fix the Kubernetes PMM Client persistence example - #5897

Merged
ademidoff merged 10 commits into
doc-3.10.0from
PMM-14989-fix-k8s-client-persistence-docs
Sep 24, 2026
Merged

ademidoff merged 10 commits into
doc-3.10.0from
PMM-14989-fix-k8s-client-persistence-docs

Conversation

@ademidoff

@ademidoff ademidoff commented Sep 7, 2026 •

Copy link
Copy Markdown
Member

Ticket number: PMM-14989

Feature build: N/A - documentation only.

Based on doc-3.10.0, not main.

The problem

This is the user-facing half of PMM-14989. The reporter followed the Kubernetes page exactly,
created the PV and PVC it asks for, and still lost every database Service they had added whenever
the pod restarted or the client image was upgraded. The page was wrong in four ways at once:

  • The volume was introduced as "persistent storage for PMM Client data between pod restarts" and
    then mounted at /usr/local/percona/pmm/tmp, never at config, where the Agent identity lives.
  • PMM_AGENT_CONFIG_FILE was the relative config/pmm-agent.yaml, resolving under the image's
    WORKDIR and so onto the container's ephemeral layer rather than the volume.
  • The workload was a Deployment, so the pod hostname, and with it the Node name, changed on every
    rollout.
  • PMM_AGENT_SETUP_FORCE=1 was set, which makes PMM Server remove the Node together with every
    Service configured on it.

The first two mean nothing was ever persisted; the last two mean the Node would have been replaced
even if it had been.

The example now

A StatefulSet, whose pod name is stable and is passed to PMM_AGENT_SETUP_NODE_NAME, with the
volume claimed from a volumeClaimTemplates entry and mounted at both directories that have to
survive a restart: config for the identity, tmp for the metrics the Client buffers on disk while
PMM Server is unreachable. PMM_AGENT_CONFIG_FILE is absolute so it cannot drift from the mount,
and fsGroup: 1002 replaces the chown init container.

The force flag is gone from the manifest and documented instead as the one-off recovery for a volume
lost while its Node still exists in PMM, with the consequence spelled out.

Setup still runs on every start. That is only safe from 3.10.0, where PMM-15260 (#5890)
makes pmm-agent setup idempotent, so the page states the requirement up front - on earlier
versions this manifest still loses Services, and quietly.

Also adds a step that deletes the pod to show the identity surviving the restart, and fixes the
troubleshooting section, which pointed at pmm-client-pvc, a claim the flow no longer creates.

The sidecar example

Its deployment pattern is unchanged and correct: an ephemeral configuration file, a forced setup and
a prerun script that re-adds the database service on every start. A sidecar's lifecycle is the
database's, so it rebuilds its state rather than keeping it, which is what the Percona database
operators do too.

What it did carry was the same false promise as the standalone example. It created a 10Gi
PersistentVolume and claim for the PMM Client and declared a pod volume for them, none of which any
container ever mounted, and step 2 introduced that storage as being "for storing PMM Client and
MySQL data between pod restarts". Second commit removes the volume, the claim and the pod volume
entry, says the remaining storage is for MySQL, and states why the Client gets none - so the
removal does not read later as an omission to correct. Every volume the example declares is now
mounted by a container.

The command pages

pmm-agent setup and pmm-admin config are what the manifests on the install pages actually run, so
the pages describing them carry the same promise. They described the idempotent registration as it
stood when they were written, and one sentence had since become wrong: --force does not replace
the Node PMM Server holds the pmm-agent on when the names differ. It registers the name you gave as a
new Node and leaves the other one, with its Services, behind. That is the state the install examples
exist to avoid, so the wording is corrected on both pages.

Both now list what a re-run does rather than running it together in one paragraph, and cover what was
missing from it:

  • the configuration file being left unchanged when setup did not read it, which is the pmm-admin config path
  • an unverifiable PMM Server keeping the registration, warning on standard error, and still succeeding
  • an encrypted configuration file needing its key before setup can tell whether the Node is registered
  • a registered Node address or type being reported rather than quietly ignored
  • the Agent ID --skip-registration expects, and where it may come from

The --force row in the options table matches the flag's own help text again.

Verification

No local mkdocs build - the change is confined to one page and adds no new links, so linkspector
in CI covers what a build would. The manifest itself was checked, since it is hand-written and
readers copy it verbatim:

  • every manifest on the page parses as YAML, and kubectl apply --dry-run=client accepts each one
  • PMM_AGENT_CONFIG_FILE resolves inside a mounted path, which is the specific defect being fixed
  • no PMM_AGENT_SETUP_FORCE in the manifest
  • code fences balanced across the page, and the admonition classes match those already used in
    documentation/docs

Related

A release note for PMM-15260 is not yet in documentation/docs/release-notes/3.10.0.md; its ticket
asks for one, and it is not part of this PR.

The standalone example claimed a volume for "PMM Client data between pod restarts" and then
mounted it at the temporary directory, while PMM_AGENT_CONFIG_FILE resolved under the image's
working directory. The Agent identity therefore lived on the container's ephemeral layer and was
gone on every restart. The example also ran a Deployment, so the pod hostname and with it the Node
name changed on each rollout, and set PMM_AGENT_SETUP_FORCE, which makes PMM Server remove the
Node together with every Service configured on it. Following the page as written lost every
manually added Service on a restart or a client upgrade.

The example is now a StatefulSet, which keeps the pod name and so the Node name, with its volume
claimed from a claim template and mounted at both directories that have to survive a restart:
config for the Agent identity, tmp for the metrics buffered while PMM Server is unreachable.
PMM_AGENT_CONFIG_FILE is absolute, so it cannot drift from the mount. The force flag is gone from
the manifest and documented as the one-off recovery for a lost volume instead, and fsGroup replaces
the chown init container. Setup still runs on every start, which is safe from 3.10.0 on, where
PMM-15260 makes it idempotent - the page says so, since it silently loses Services on earlier
versions.

Also adds a step that restarts the pod to show the identity surviving, and corrects the
troubleshooting section, which referred to a claim the flow no longer creates.

The sidecar example is deliberately unchanged: an ephemeral configuration file, a forced setup and
a prerun script that re-adds the database service on each start is the right pattern there, and it
is what the database operators do.
The sidecar example created a 10Gi PersistentVolume and claim for the PMM Client, and declared a
pod volume for it, which no container ever mounted. Step 2 introduced it as storage "for storing
PMM Client and MySQL data between pod restarts", so it made the same promise the standalone example
made and did not keep: a volume presented as persistence that persists nothing.

Nothing needs to persist here. The sidecar keeps its configuration in the container, registers with
PMM_AGENT_SETUP_FORCE=1 and re-adds the database service from PMM_AGENT_PRERUN_SCRIPT on every
start, so it rebuilds its state rather than keeping it. That is the correct pattern for a sidecar
whose lifecycle is the database's, and it is what the Percona database operators do.

The PV, the claim and the pod volume are gone, and the step now says the volume is for MySQL data
and states why the Client gets none, so the removal does not read as an omission to be corrected.
Every volume the example declares is now mounted by a container.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Running `pmm-agent setup` or `pmm-admin config` again for a registered
pmm-agent now keeps its registration unless the server address changed,
PMM Server no longer knows the pmm-agent on that Node, or --force is
given. Describe that, the new meaning of --force, and that the
credentials given to setup only serve to register the Node.

Signed-off-by: Alex Demidoff <a@demidoff.me>
Setup now stops when PMM Server has the pmm-agent on a Node with another
name, instead of registering a second Node next to it. Say so on the
pmm-agent and pmm-admin config pages, and tell Docker users who keep the
configuration file across containers to pin the Node name and drop the
force flag, because a new container gets a new hostname.

Signed-off-by: Alex Demidoff <a@demidoff.me>
The page taught PMM_AGENT_SETUP_FORCE=1 in every example, which replaces
the Node together with its Services on every container start, and a
prerun script to add them again. With the idempotent setup that pattern
is the wrong default: give the configuration a volume, pin the Node
name, and let the registration survive restarts and re-created
containers, the way the Kubernetes page already does. Force stays as the
way to recover a Node after losing the volume.

A prerun script now runs against Services which still exist, and
pmm-admin add reports them as an error, which stops the container
outside sidecar mode. Add Services once with docker exec instead, and
say on both pages that a script has to tolerate what it added before.

Signed-off-by: Alex Demidoff <a@demidoff.me>
The command pages described the idempotent registration as it stood when
they were written. The behaviour has moved on, and one sentence had become
wrong: --force does not replace the Node PMM Server holds the pmm-agent on
when the names differ. It registers the name you gave as a new Node and
leaves the other one, with its Services, behind.

Both pages now list what a re-run does instead of running it together in a
paragraph, and cover what was missing: the configuration file being left
alone when setup did not read it, an unverifiable PMM Server keeping the
registration and still succeeding, an encrypted file needing its key, the
Node address and type being reported rather than applied, and the ID
--skip-registration expects.

The --force row matches the flag's own help text again.

Signed-off-by: Alex Demidoff <a@demidoff.me>
The page asked for "the IP address of your PMM Server", which says
nothing about a PMM Server running in the same cluster. A Kubernetes
Service name resolves only from inside its own namespace, so a Client
deployed to any other one never registers, and the log names the
lookup rather than the connection - the wrong half of the page to
read, since the address looks right.

Say what the address is in both cases, qualify the Service name with
its namespace, name the HAProxy Service for an HA deployment, and add
the failure to the troubleshooting section.

Signed-off-by: Alex Demidoff <a@demidoff.me>
@ademidoff
ademidoff temporarily deployed to PMM-14989-fix-k8s-client-persistence-docs - pmm-3.10.0 PR #5897 September 23, 2026 10:49 — with Render Destroyed

@catalinaadam catalinaadam left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pushed commit with a linguistic review and updated rel notes separately with 88679ab

@ademidoff
ademidoff merged commit ae0f0a9 into doc-3.10.0 Sep 24, 2026
5 checks passed
@ademidoff
ademidoff deleted the PMM-14989-fix-k8s-client-persistence-docs branch September 24, 2026 06:51
theTibi pushed a commit that referenced this pull request Oct 22, 2026
* release branch

* PMM-15067

* PMM-13932

* [DOCS] update docs on MongoDB Unused indexes dashboard (#5789)

* [DOCS] update docs on MongoDB Unused indexes dashboard

* tootlips

* undo json changes

* PMM-0 Fix linkspector Chrome sandbox error in CI

Co-authored-by: ademidoff <81549+ademidoff@users.noreply.github.com>

* PMM-0 Fix linkspector Chrome sandbox launch

Co-authored-by: ademidoff <81549+ademidoff@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ademidoff <81549+ademidoff@users.noreply.github.com>

* pmm-15092

* PMM-15204

* PMM-15091

* PMM-14908

* PMM-14848

* PMM-15302

* RTA docs on MongoDB services (#5787)

* RTA docs on MongoDB services

* [DOCS] update docs on MongoDB Unused indexes dashboard

* [DOCS] Fix wrong K8s service name in Helm restore docs (#5918)

* Add PMM-15104 improvement entry to 3.10.0 release notes

* PMM-15104: Update Queries panel docs to Top slow queries

* Revert PMM-15104 dashboard doc change (belongs in PR #5956)

* PMM-15104 Update PG overview Queries panel docs (#5956)

* PMM-15104 Update PG overview Queries panel docs

The panel was renamed from "Queries" to "Top slow queries", so the
section heading no longer matched any panel on the dashboard. That
page uses one section per panel, named after the panel title.

Rewrite the section for what the panel now does. It is no longer a
list of recent queries sorted by performance: rows are aggregated per
query across the whole time range and ranked by average execution
time, and two columns were added. Document Slowest at and Calls, and
note that the average is call-weighted.

Signed-off-by: Alex Demidoff <a@demidoff.me>

* PMM-15104: Improve Top slow queries panel documentation

---------

Signed-off-by: Alex Demidoff <a@demidoff.me>
Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com>

* PMM-14735 Add HA Helm upgrade documentation topic

Documents the end-to-end process for upgrading a PMM HA cluster via
helm upgrade, verified against a live 3-replica PMM HA deployment:

- StatefulSet rolling update behavior (pods restart one at a time in
  reverse ordinal order, no extra maxUnavailable needed)
- expected brief (~5-10s) interruptions during Raft leader failover,
  correcting "zero-downtime" framing to set accurate expectations
- a caution that haproxy.service.type (and other externally-visible
  settings) must be set via values/--set on every upgrade, since a
  plain kubectl patch is reverted by the next helm upgrade
- rollback guidance clarifying helm rollback only reverts the release
  configuration, not already-applied data migrations

Linked from the pmm-upgrade section index and mkdocs-base.yml nav
under "Upgrade PMM Server in K8s".

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014k751sGd1UiypqfsXxGpwF
Signed-off-by: Claude <noreply@anthropic.com>

* PMM-14735 Link to operator docs instead of duplicating DB upgrade info

Adds an "Upgrade the underlying databases" section to the HA Helm
upgrade topic clarifying that helm upgrade pmm-ha only upgrades PMM
Server, not the PostgreSQL/ClickHouse/VictoriaMetrics versions pinned
in the chart. Links to each operator's own upgrade documentation
(PostgreSQL major/minor upgrade and certified images, ClickHouse
version-change guide, VictoriaMetrics operator config/API reference)
rather than duplicating their procedures here.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014k751sGd1UiypqfsXxGpwF
Signed-off-by: Claude <noreply@anthropic.com>

* PMM-15260

* PMM-14735 Disambiguate single-instance Helm upgrade topic for HA

Adds a note at the top of upgrade_helm.md pointing HA users to the
new Upgrade PMM HA Cluster using Helm topic, since the chart, release
name, and rolling-update behavior differ from the single-instance
percona/pmm chart this topic covers. Completes the last open item
from PMM-14735's acceptance criteria: "Adjust old Helm K8s upgrade
to not confuse HA users."

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014k751sGd1UiypqfsXxGpwF
Signed-off-by: Claude <noreply@anthropic.com>

* PMM-14735 Refine backup guidance, add upgrade-blocker note, screenshot

Based on PMM-14338's linked tickets and a live PMM HA cluster:

- Rewrite the "Before you begin" backup step to be accurate per
  datastore instead of a generic "back these up" line: PostgreSQL is
  backed up automatically via pgBackRest by default (chart sets
  backups.enabled: true); ClickHouse and VictoriaMetrics have no
  built-in backup and need a manual solution (PMM-13858, a unified
  backup/restore tool, is still In Review).
- Document a real helm upgrade failure mode found in PMM-15445: the
  pmm-token-init Job's immutable pod spec can block an upgrade with
  "field is immutable". Add the fix to troubleshoot/upgrade_issues.md
  and cross-link it from the HA upgrade topic.
- Add a screenshot of the PMM HA leader/status badge (captured live,
  post-upgrade, via a local kubectl port-forward after the egress
  proxy's path to the cluster's LoadBalancer proved unreachable) to
  "Verify the leader after upgrade".

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014k751sGd1UiypqfsXxGpwF
Signed-off-by: Claude <noreply@anthropic.com>

* PMM-14735 Add 3.10.0 release notes entry for HA Helm upgrade docs

Adds a Release summary subsection and a matching Improvements bullet
covering the new Upgrade PMM HA Cluster using Helm topic, following
the existing 3.10.0.md conventions (subsection + screenshot for a
highlighted feature, one-line bullet cross-referencing it under
Improvements). Reuses the leader-badge screenshot already captured
from the live test cluster, and summarizes the two real upgrade
gotchas found during testing (haproxy.service.type reverting on
upgrade, and the pmm-token-init immutable-field failure) with links
to the full details.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014k751sGd1UiypqfsXxGpwF
Signed-off-by: Claude <noreply@anthropic.com>

* PMM-14735 Document lost-quorum recovery, tested on a live cluster

Adds the first entry in a new PMM HA troubleshooting guide
(troubleshoot/ha_issues.md), covering what happens when a PMM HA
cluster loses Raft quorum (2 of 3 replicas down at once) and how to
recover. This was a known gap called out in the HA GA project plan
("Handle scenario if there is no quorum for election - provide
guidance how to fix") that wasn't covered by any existing doc.

Reproduced on a live cluster rather than described from theory:
scaled the pmm-ha StatefulSet from 3 to 1 replica (removing the
then-current leader along with a follower) and captured the actual
behavior:

- HAProxy returns a sustained 503 (not a brief blip) since no
  replica passes its leader health check
- the surviving replica logs a repeating, non-resolving election
  loop: "raft: Election timeout reached, restarting election" /
  "failed to make requestVote RPC: ... no such host"
- recovery is automatic and near-instant once a second replica
  becomes reachable again - logged as "I am the leader!" - with no
  manual Raft intervention needed; total observed downtime restoring
  from 1 to 3 replicas was about a minute, almost all of it
  Kubernetes rescheduling the pod

Also cross-links this from the HA Helm upgrade topic: upgrading a
cluster that's already missing a replica pushes it below quorum via
the upgrade's own rolling restart, so "Before you begin" now checks
replica health first. Updated the 3.10.0 release notes to cover both
additions.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014k751sGd1UiypqfsXxGpwF
Signed-off-by: Claude <noreply@anthropic.com>

* PMM-14989 Fix the Kubernetes PMM Client persistence example (#5897)

* PMM-14989 Fix the Kubernetes PMM Client persistence example

The standalone example claimed a volume for "PMM Client data between pod restarts" and then
mounted it at the temporary directory, while PMM_AGENT_CONFIG_FILE resolved under the image's
working directory. The Agent identity therefore lived on the container's ephemeral layer and was
gone on every restart. The example also ran a Deployment, so the pod hostname and with it the Node
name changed on each rollout, and set PMM_AGENT_SETUP_FORCE, which makes PMM Server remove the
Node together with every Service configured on it. Following the page as written lost every
manually added Service on a restart or a client upgrade.

The example is now a StatefulSet, which keeps the pod name and so the Node name, with its volume
claimed from a claim template and mounted at both directories that have to survive a restart:
config for the Agent identity, tmp for the metrics buffered while PMM Server is unreachable.
PMM_AGENT_CONFIG_FILE is absolute, so it cannot drift from the mount. The force flag is gone from
the manifest and documented as the one-off recovery for a lost volume instead, and fsGroup replaces
the chown init container. Setup still runs on every start, which is safe from 3.10.0 on, where
PMM-15260 makes it idempotent - the page says so, since it silently loses Services on earlier
versions.

Also adds a step that restarts the pod to show the identity surviving, and corrects the
troubleshooting section, which referred to a claim the flow no longer creates.

The sidecar example is deliberately unchanged: an ephemeral configuration file, a forced setup and
a prerun script that re-adds the database service on each start is the right pattern there, and it
is what the database operators do.

* PMM-14989 Drop the sidecar example's unused PMM Client volume

The sidecar example created a 10Gi PersistentVolume and claim for the PMM Client, and declared a
pod volume for it, which no container ever mounted. Step 2 introduced it as storage "for storing
PMM Client and MySQL data between pod restarts", so it made the same promise the standalone example
made and did not keep: a volume presented as persistence that persists nothing.

Nothing needs to persist here. The sidecar keeps its configuration in the container, registers with
PMM_AGENT_SETUP_FORCE=1 and re-adds the database service from PMM_AGENT_PRERUN_SCRIPT on every
start, so it rebuilds its state rather than keeping it. That is the correct pattern for a sidecar
whose lifecycle is the database's, and it is what the Percona database operators do.

The PV, the claim and the pod volume are gone, and the step now says the volume is for MySQL data
and states why the Client gets none, so the removal does not read as an omission to be corrected.
Every volume the example declares is now mounted by a container.

* PMM-15260 Document the idempotent Node registration

Running `pmm-agent setup` or `pmm-admin config` again for a registered
pmm-agent now keeps its registration unless the server address changed,
PMM Server no longer knows the pmm-agent on that Node, or --force is
given. Describe that, the new meaning of --force, and that the
credentials given to setup only serve to register the Node.

Signed-off-by: Alex Demidoff <a@demidoff.me>

* PMM-15260 Document the setup Node name conflict

Setup now stops when PMM Server has the pmm-agent on a Node with another
name, instead of registering a second Node next to it. Say so on the
pmm-agent and pmm-admin config pages, and tell Docker users who keep the
configuration file across containers to pin the Node name and drop the
force flag, because a new container gets a new hostname.

Signed-off-by: Alex Demidoff <a@demidoff.me>

* PMM-15260 Rewrite the Docker client page for kept registrations

The page taught PMM_AGENT_SETUP_FORCE=1 in every example, which replaces
the Node together with its Services on every container start, and a
prerun script to add them again. With the idempotent setup that pattern
is the wrong default: give the configuration a volume, pin the Node
name, and let the registration survive restarts and re-created
containers, the way the Kubernetes page already does. Force stays as the
way to recover a Node after losing the volume.

A prerun script now runs against Services which still exist, and
pmm-admin add reports them as an error, which stops the container
outside sidecar mode. Add Services once with docker exec instead, and
say on both pages that a script has to tolerate what it added before.

Signed-off-by: Alex Demidoff <a@demidoff.me>

* PMM-15260 Document what a kept registration does and does not change

The command pages described the idempotent registration as it stood when
they were written. The behaviour has moved on, and one sentence had become
wrong: --force does not replace the Node PMM Server holds the pmm-agent on
when the names differ. It registers the name you gave as a new Node and
leaves the other one, with its Services, behind.

Both pages now list what a re-run does instead of running it together in a
paragraph, and cover what was missing: the configuration file being left
alone when setup did not read it, an unverifiable PMM Server keeping the
registration and still succeeding, an encrypted file needing its key, the
Node address and type being reported rather than applied, and the ID
--skip-registration expects.

The --force row matches the flag's own help text again.

Signed-off-by: Alex Demidoff <a@demidoff.me>

* PMM-15260 Say how to address PMM Server in-cluster

The page asked for "the IP address of your PMM Server", which says
nothing about a PMM Server running in the same cluster. A Kubernetes
Service name resolves only from inside its own namespace, so a Client
deployed to any other one never registers, and the log names the
lookup rather than the connection - the wrong half of the page to
read, since the address looks right.

Say what the address is in both cases, qualify the Service name with
its namespace, name the HAProxy Service for an HA deployment, and add
the failure to the troubleshooting section.

Signed-off-by: Alex Demidoff <a@demidoff.me>

* PMM-14989 Clarify usage of PMM_AGENT_PRERUN_SCRIPT in Docker setup instructions

* linguistic review

---------

Signed-off-by: Alex Demidoff <a@demidoff.me>
Co-authored-by: Catalina A <catalina.adam@percona.com>

* [DOCS] Update MySQL dashboards for compatibility with MySQL 9.7 (#5981)

* [DOCS] Document VictoriaMetrics Agents Overview  dashboard  (PMM-15060)

* [DOCS] Update MySQL dashboards for compatibility with MySQL 9.7 and enhancements to InnoDB and table activity metrics

* [DOCS] Fix rendering and accuracy in the MySQL 9.7 documentation

Rendering:

- dashboard-mysql-innodb-details.md had "`mysqld_exporte`r`", which renders as
  code "mysqld_exporte" followed by a stray backtick.
- dashboard-mysql-instance-summary.md indented the "!!! note" marker by four
  spaces, so MkDocs renders the admonition as a code block, and put the body at
  the same indent instead of one level deeper. It now matches the identical note
  in dashboard-mysql-instances-overview.md.

Accuracy:

- Both files told the reader to "verify that the mysqld_exporter is up to date"
  when redo log panels are empty. That is the wrong diagnosis. Total Log Space,
  InnoDB Logging Performance, InnoDB Log File Usage Hourly, InnoDB Log File Size
  and InnoDB Log Files were empty on MySQL 5.7, Percona Server 5.7 and MariaDB
  because of a version gate in the dashboard that could never match, not because
  of the exporter version; those panels read global variables that older
  exporters already provided. Upgrading PMM fixes them, and the troubleshooting
  section now separates panels that need innodb_monitor_enable from those that
  do not.
- "Top Tables ... now show data for all MySQL variants" overstated it. Both
  panels still require per-table statistics collection, which PMM disables above
  the configured table limit. Qualified in the release notes and documented on
  the Table Details page, which described the source per flavour but not the
  dependency.

Release notes, items that shipped but were not listed:

- The five redo log panels that were always empty on 5.7 and MariaDB.
- MySQL 9.7 backups no longer rejected as incompatible with XtraBackup.
- AHI Miss Ratio showed the hit ratio on short time ranges.
- A "Changes to be aware of" subsection for the two behaviour changes users will
  notice: the Checkpoint Age limit series is now measured against total redo log
  capacity on 8.0.30+, so the same workload reports a lower percentage than on
  older servers; and the -1 placeholder for the 5.7 checkpoint age row is no
  longer exported, so that series now shows a gap.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* linguistic review

---------

Co-authored-by: Jiří Čtvrtka <j.ctvrtka@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Refine HA upgrade documentation for clarity and accuracy

* structure

* PMM-15322 Document mutual TLS for Valkey

Add a mutual TLS example to the Valkey/Redis connect page, now that
--tls-cert and --tls-key reach valkey_exporter, and note that the two
must be given together. Bring the existing examples in line with the
CLI: the service name and address are positional arguments, and the
exporter subcommand is valkey-exporter.

Signed-off-by: Marcus Cruz <marcus.cruz@percona.com>

* improve wording

* wording

* improve wording

* worfing

* linguistic review

* Removed outdated HA-docker.md file and updated  references

* PMM-14338 Soften overclaimed metric caching guarantees in HA docs

Replace "zero data loss" and "nothing gets lost" language with accurate
phrasing: metrics are cached and resent on reconnect, but this is not
guaranteed to be lossless for all outage durations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* - Renamed and restructured to clarify deployment options

* PMM-14262

* PMM-14956 Document the built-in alert rules

PMM Server now provisions nine alert rules of its own: four for its own
components on every server, five for a High Availability cluster.
Document what each one detects, that PMM owns them so they cannot be
edited in the interface, how to copy a template to change a threshold,
and how to turn a set off with PMM_ENABLE_COMPONENT_ALERTS or
PMM_ENABLE_HA_ALERTS.

The pages also record what these alerts structurally cannot see, so
nobody relies on them to catch a whole-cluster outage or a total
VictoriaMetrics failure.

Extracted from percona/pmm#5730 so the docs can merge ahead of the code.

Signed-off-by: Ante Gulin <ante.gulin@percona.com>
(cherry picked from commit d3dc6d34c4feed9c2baa1a81104245b8c3789f85)

* updated rel notes entry

* fixed and known issues HA

* PMM-15149 Document installing PMM HA into namespaces

Add a section on running more than one PMM HA Cluster on the same
Kubernetes cluster: per-instance requirements, upgrading the operators
first on installs older than 3.10.0, installation steps, and what each
instance monitors.

Based on the pmm-ha and pmm-ha-dependencies chart READMEs on the
PMM-HA-GA branch (PMM-15149, PMM-15151).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LYr5JuigCsfgLKnboACpi8
Signed-off-by: Catalina Adam <catalina.adam@percona.com>

* restructure

* PMM-13858 Document PMM HA backup and restore

Add a task-based topic for the backup and restore tool in
percona-helm-charts#919: turning on backups (S3, IRSA, shared
volume), taking, scheduling, and listing backups, restoring in place
and into another namespace, and limitations.

Also:
- Point the HA upgrade page's backup and rollback steps to it
- Link it from the install page and the multi-namespace section
- Add backup and restore entries to HA troubleshooting
- Add the limitation to the HA Cluster known issues
- Link the release notes bullet, add a PMM-13858 improvement, and
  add the missing fixed-issues-ha heading ID

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LYr5JuigCsfgLKnboACpi8
Signed-off-by: Catalina Adam <catalina.adam@percona.com>

* PMM-14338 Simplify HA upgrade and backup bullets

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LYr5JuigCsfgLKnboACpi8
Signed-off-by: Catalina Adam <catalina.adam@percona.com>

* fixed syntax

* imprve structure

* PMM-15422 Update Azure, HA and metrics mode docs (#6009)

* PMM-15422 Document the 5s Azure connection timeout

Azure MySQL and PostgreSQL services without an explicit connection
timeout now default to 5s, the same as RDS.

Signed-off-by: Alex Demidoff <a@demidoff.me>

* PMM-15422 Update PMM HA known issues for 3.10.0

Drop the remote-database limitation, since Azure and RDS databases
outside the cluster are now monitored from PMM Client nodes, and the
two issues fixed in 3.10.0 (PMM-14665, PMM-14678). Add that pull-mode
exporters get no metrics in HA, and how to switch them to push mode.

Signed-off-by: Alex Demidoff <a@demidoff.me>

* PMM-15422 Document changing the metrics mode

Since 3.7.0, pmm-admin inventory change agent switches an exporter
between push and pull mode in place, so a service no longer has to be
removed and re-added.

Signed-off-by: Alex Demidoff <a@demidoff.me>

---------

Signed-off-by: Alex Demidoff <a@demidoff.me>

* PMM-15362 Document disabling default-on node_exporter collectors

PMM now passes --no-collector.<name> for collectors node_exporter enables on
its own (#5841), so --disable-collectors actually stops them. Document
disabling collectors with inventory change agent node-exporter, the list
semantics, the textfile.hr/mr/lr naming, the Linux / PMM Client 3.0.0+
scope, list the default-on collectors, document pmm-admin config
--disable-collectors, and add the 3.10.0 release note.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* [DOCS] PMM-15302 Show ssh key tab only in AMI deployment (#5765)

* PMM-15302 Update docs around ssh key tab

* Update documentation/docs/install-pmm/install-pmm-server/deployment-options/virtual/ssh.md

Co-authored-by: travagliad <davi.travaglia@percona.com>

* PMM-15302 Add a note about single ssh key only

* PMM-15302 Adjust ssh key note

* linguistic review

---------

Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com>
Co-authored-by: travagliad <davi.travaglia@percona.com>
Co-authored-by: Catalina A <catalina.adam@percona.com>

* PMM-15019 Documentation. (#6029)

* PMM-15019 Document --agent-env-vars for inventory change agent mongodb-exporter

pmm-admin inventory change agent mongodb-exporter and inventory add agent
mongodb-exporter gained --agent-env-vars (#5781). Document the flag, how the
list is replaced, the name rules PMM Server enforces (pattern, PMM_AGENT_
prefix, MONGODB_URI, 32 names / 256 characters), how to set a value in the
pmm-agent environment, and add the 3.10.0 release note.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* linguistic review

* linguistic review

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Catalina A <catalina.adam@percona.com>

* PMM-15019 Address review of the --agent-env-vars documentation (#6097)

- Say that change agent restarts only the changed agent, not pmm-agent.
- Mark --agent-env-vars on change agent as PMM 3.10.0+ on both sides.
- Mount Kerberos keytab and krb5.conf into the PMM Client container.
- Note that the PMM_AGENT_ check ignores letter case, and how
  pmm-agent 3.10.0 handles names stored under the older rules.
- List invalid environment variable names under Error handling.
- Use the Kerberos names in the add mongodb examples.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* PMM-15362 Remove duplicate Disable collectors section after merge

The merge of PMM-15362-doc into doc-3.10.0 resulted in two
### Disable collectors for node-exporter sections: one auto-merged
before Examples (correct position) and one added in conflict
resolution after Pass environment variables (duplicate). Remove
the second occurrence.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Catalina A <catalina.adam@percona.com>

* PMM-15431 Document pmm-agent recovering from a blocked request loop (#6034)

* PMM-15431 Document pmm-agent recovering from a blocked request loop

pmm-agent answers pings off the request loop, applies SetState in a worker,
bounds the wait for stopping agents to 60s per phase and reconnects when its
request queue stays full for 2 minutes (#5904). Add a troubleshooting entry
for the silent outage, the log messages that show a recovery, the manual
restart for older clients, how to collect a goroutine dump, and the 3.10.0
release note.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* linguistic review

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Catalina A <catalina.adam@percona.com>

* PMM-15191 Documentation. (#6031)

* PMM-15191 Document change agent types and the wrong-type rejection

inventory change agent now rejects an agent ID of another type before
anything is applied, and PMM_ENABLE_INTERNAL_PG_QAN is parsed as a boolean
and only guards the internal PostgreSQL QAN agent (#5703).

List every agent type the command supports instead of the stale
"MongoDB only", document the mismatched-type and env-pin errors, describe
the PMM_ENABLE_INTERNAL_PG_QAN values and precedence, and add the 3.10.0
release note.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* linguistic review

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com>
Co-authored-by: Catalina A <catalina.adam@percona.com>

* PMM-15295 Document the Nomad public address warning (#6033)

* PMM-15295 Document the Nomad public address warning

PMM Server now warns at startup when PMM_ENABLE_NOMAD is set without
PMM_PUBLIC_ADDRESS (#5849). Replace the "silently skips ... with no error or
warning" statement with the warning text and where it is logged, note that a
public address set in Settings still triggers it, point the verification
steps at it, and add the 3.10.0 release note.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* linguistic review

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Catalina A <catalina.adam@percona.com>

* PMM-14979 Document sharing the encryption key in HA (#5984)

* PMM-14979 Document sharing the encryption key in HA

Correct the key format in data_encryption.md (a base64-encoded Tink
keyset, not 32 raw bytes) and describe how HA nodes must share one key,
for both the Helm chart and Docker deployments.

Signed-off-by: Alex Demidoff <a@demidoff.me>

* PMM-14979 Correct the encryption key docs for Kubernetes

- Generate keys with docker run: pmm-encryption-rotation only ships in the
  PMM Server image.
- Back up and restore the HA key as a key file. Applying a `get -o yaml`
  dump fails on create because it carries a resourceVersion.
- Stop the other nodes before rotating in Docker HA, and say that the HA
  chart cannot rotate, since its key is a read-only secret mount.
- Document the single-node chart's encryption key backup, and the secrets
  that outlive helm uninstall.

* PMM-14979 Add the release note

* PMM-14979 Shorten the release note

* PMM-14979 Tidy up the 3.10.0 release notes structure

* PMM-14979 Move the indexstats note to its section

* PMM-14979 Note that the key backup is sensitive

* Update data encryption documentation and Helm chart to clarify encryption key management in HA clusters

* linguistic review

* feedback from Nailya

* Clarify HA upgrade support

* feedback from Nailya

---------

Signed-off-by: Alex Demidoff <a@demidoff.me>
Co-authored-by: Catalina A <catalina.adam@percona.com>

* PMM-14754

* Linguistic review

* linguistic review

* PMM-15662

* PMM-14956

* [DOCS] Native ARM64 PMM Server (PMM-13798)

* fixed formatting

* [DOCS] PMM-14912 Document dynamic alert thresholds (#6012)

* PMM-14912 Document dynamic alert thresholds

Add the threshold override API reference and describe the queries,
expressions and overridable template fields.

Merge only after PMM-14912 ships: a merge to main publishes the docs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Matej Kubinec <matej.kubinec@3pillarglobal.com>

* PMM-14912 Document dynamic thresholds end to end

Add a Dynamic alert thresholds page covering overrides from
Inventory, custom templates and limitations, with screenshots.
Link it from the alerting, template and inventory pages, and
extend the threshold API reference.

* linguistic review

* feedback from Matej and Mattia

---------

Signed-off-by: Matej Kubinec <matej.kubinec@3pillarglobal.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Catalina A <catalina.adam@percona.com>
Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com>

* merged documentation updates for MySQL backups images

* [DOCS] Add supported EKS and OpenShift versions for PMM HA (PMM-14736) (#6139)

Signed-off-by: Catalina A <catalina.adam@percona.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* [DOCS] Fix MongoDB X.509 authentication example (PMM-15599) (#6137)

* [DOCS] Document VictoriaMetrics Agents Overview  dashboard  (PMM-15060) (#5957)

* [DOCS] Document VictoriaMetrics Agents Overview  dashboard  (PMM-15060)

* Apply suggestion from @mattiasimonato

Co-authored-by: Mattia Simonato <mattia.simonato@percona.com>

* Apply suggestion from @mattiasimonato

Co-authored-by: Mattia Simonato <mattia.simonato@percona.com>

* Apply suggestion from @mattiasimonato

Co-authored-by: Mattia Simonato <mattia.simonato@percona.com>

* PMM-15060 Retake VictoriaMetrics Agents Overview screenshot

The old screenshot predates the uptime-panel pagination fix: it shows
a single filtered node with a legend and no page controls. Retaken on
a 12-node instance so the panel's pagination (perPage 8) and node
labels are visible, matching the current showLegend: false panel.

Signed-off-by: Claude <noreply@anthropic.com>
(cherry picked from commit 7744054b44ba9bec2eda7f0835515a1db25aa2ad)

---------

Signed-off-by: Claude <noreply@anthropic.com>
Co-authored-by: Mattia Simonato <mattia.simonato@percona.com>
Co-authored-by: Claude <noreply@anthropic.com>

* added missing fixes

* removed duplicates

* added index entry

* wording

* wording

* Update documentation/docs/reference/dashboards/dashboard-mysql-innodb-details.md

Co-authored-by: Mattia Simonato <mattia.simonato@percona.com>

* Update documentation/api/alerting/overview.md

Co-authored-by: travagliad <davi.travaglia@percona.com>

* Update documentation/docs/install-pmm/install-pmm-server/prerequisites.md

Co-authored-by: travagliad <davi.travaglia@percona.com>

* Update documentation/docs/troubleshoot/ha_issues.md

Co-authored-by: travagliad <davi.travaglia@percona.com>

* Update documentation/docs/reference/dashboards/dashboard-victoriametrics-agents-overview.md

Co-authored-by: travagliad <davi.travaglia@percona.com>

* Update documentation/docs/release-notes/3.10.0.md

Co-authored-by: travagliad <davi.travaglia@percona.com>

* variables

* Update documentation/docs/install-pmm/install-HA-clustered.md

Co-authored-by: Ante Gulin <8070595+4nte@users.noreply.github.com>

* feedback from Ante

* [DOCS] PMM Extensions Integration (#5850)

* [DOCS] PMM SEP Integration

* formatting

* clarify differnece from pmm dump

* wording

* wording

* wording

* wording

* formatting

* formatting

* wording

* mysql backupos draft

* focus on Apps

* update MySQL backup documentation for clarity and consistency

* wording

* link fix

* api

* api docs

* api updates

* Add tooling versions, compression constraints, and prerequisites

* Add tooling versions, compression constraints, and prerequisites

* Clarify root access requirements for Mydumper and Binlog installation in MySQL backup documentation

* Update documentation/api/sep-tasks/execute-task.md

Co-authored-by: yyyyyyy <yan.orestes@percona.com>

* Update documentation/docs/release-notes/3.10.0.md

Co-authored-by: yyyyyyy <yan.orestes@percona.com>

* PMM-15569 Rename SEP to PMM Extensions in the docs

Applies the 78 suggestions from PR review 5299980478 and renames the
documentation/api/sep-inventory and documentation/api/sep-tasks
directories to extensions-inventory and extensions-tasks.

Signed-off-by: Yan Orestes <yan.orestes@percona.com>

* Add documentation for deploying PMM Extensions and update related app references

* rewording

* formatting

* feedback from yan

* wording

* image versioning and Compose
  profiles

* image versioning and Compose
  profile

* update rel notes

* update rel notes

* formatting

* feedback from Marcus

* Update documentation/api/extensions-inventory/nodes.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/api/extensions-tasks/overview.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* removed duplicate entry

* Update documentation/docs/apps/deploy-pmm-extensions.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/backup/mysql-backup/backup_mysql.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/backup/index.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/support-diagnostics.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/api/release-notes/3.10.0.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/api/extensions-inventory/overview.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/api/extensions-inventory/nodes.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/deploy-pmm-extensions.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/deploy-pmm-extensions.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/mysql-backup.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/support-diagnostics.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/docs/apps/support-diagnostics.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/api/extensions-tasks/periodic-tasks.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/api/extensions-tasks/execute-task.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* Update documentation/api/extensions-tasks/overview.md

Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* feedback from Marcus

* Apply review fixes to PMM Extensions docs

- Deploy: recreate pmm-server once per path, reuse an existing user-defined
  network (Easy-install pmm-net, manual pmm-network), and pin Compose volume
  names so existing pmm-data is reused instead of a project-prefixed volume.
- MySQL Backups: add Backup location and Backup encryption to the restore
  procedure, drop unsupported ~/.mylogin.cnf and unused SSH key name, mark
  pre/post-scripts as Mydumper-only, fix XtraBackup parallel, Binlog
  compression and log cap wording, and apply style fixes.
- API: document app task lists, the periodic task PUT body, all
  connectivity status values and the Task concept; fix the execute body
  limitation in the API release notes.
- Release notes: "lightly loaded".

---------

Signed-off-by: Yan Orestes <yan.orestes@percona.com>
Co-authored-by: yyyyyyy <yan.orestes@percona.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: marcuscruz-percona <272857389+marcuscruz-percona@users.noreply.github.com>
Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>

* [DOCS] Update 3.10.0 security notes

Signed-off-by: aaron-percona <aaron.ormerod@percona.com>

* [DOCS] Document change agent for all agent types (PMM-14919) (#6124)

* [DOCS] Document change agent for all agent types (PMM-14919)

* feedback from Peter

* PMM-15659

* Update documentation/docs/install-pmm/install-HA-clustered.md

Co-authored-by: Ante Gulin <8070595+4nte@users.noreply.github.com>

* Update documentation/docs/install-pmm/install-HA-clustered.md

Co-authored-by: Ante Gulin <8070595+4nte@users.noreply.github.com>

* Update documentation/docs/install-pmm/install-HA-clustered.md

Co-authored-by: Ante Gulin <8070595+4nte@users.noreply.github.com>

* Update documentation/docs/release-notes/3.10.0.md

Co-authored-by: Ante Gulin <8070595+4nte@users.noreply.github.com>

* Update documentation/docs/install-pmm/HA-clustered.md

Co-authored-by: Ante Gulin <8070595+4nte@users.noreply.github.com>

* Update documentation/docs/install-pmm/install-HA-clustered.md

Co-authored-by: Ante Gulin <8070595+4nte@users.noreply.github.com>

* Update documentation/docs/install-pmm/install-HA-clustered.md

Co-authored-by: Ante Gulin <8070595+4nte@users.noreply.github.com>

* Update documentation/docs/release-notes/3.10.0.md

Co-authored-by: Mattia Simonato <mattia.simonato@percona.com>

* Update documentation/docs/reference/dashboards/dashboard-postgresql-instances-overview.md

Co-authored-by: travagliad <davi.travaglia@percona.com>

* Update security policy and add security contact

Point reporting at GitHub private vulnerability reporting and the current
Percona Jira URL, align remediation timelines with the internal CVE
process (14/30/60/90 days, same clock for upstream fixes from vendor
patch availability), add a scope section, and list a security contact.

Signed-off-by: aaron-percona <aaron.ormerod@percona.com>

* [DOCS] Review HA Cluster docs for 3.10.0 (PMM-14338) (#6153) (#6185)

* [DOCS] Review HA Cluster docs for 3.10.0 (PMM-14338) (#6153)

* PMM-14338 HA docs as they ship in 3.10.0, for review

Takes the current doc-3.10.0 version of every file #5993 changed,
plus the HA release note entries from #6152, on top of doc-3.10.0
as it was before #5993 (4b26a4899a). Review fixes go in separate
commits on top of this one.

Signed-off-by: Catalina Adam <catalina.adam@percona.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* PMM-14338 Rename Single-Instance HA to Kubernetes single instance

* feedback from Vasyl and Fabio

* wording

* wording

* wording

* Potential fix for pull request finding 'Document the five-minute alerting reconciliation delay'

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding 'Preserve the platform support heading anchor'

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Clarify HA Helm upgrade available from PMM 3.10.0

* feedback from Vasyl

* feedback from copilot

* Potential fix for pull request finding 'Handle HAProxy 503 before querying Grafana'

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* feedback from copilot

* feedback from Ante

* feedback from Nailya

* feedback from Nailya

* docs(ha): restore review fixes and address Shruti's comments

Restore the fixes from b0a0b87, which a later force-push dropped:
chart keys, labels and pod names on the single-instance pages,
dataRetentionDays for HA retention, the pinned chart version and
per-pod logs on the HA upgrade page, the port-forward to a pod, the
pmm-secret copy, and the removal of the expense-tracker entry.

Address Shruti's review:
- Document the built-in PMM HA disk space usage alert (PMM-15616)
  and update the rule counts.
- Use PMM_HA_VM_* and drop PMM_CLICKHOUSE_DATASOURCE_* from every
  pmm-secret example; chart 1.8.0 creates the datasource user itself.
- Install the sizing example with helm pull + helm install.
- Say the sizing table lists recommended sizes, not minimums.
- Link the architecture diagram to the full-size image.
- Drop the cross-references between the single-instance and HA
  upgrade pages.

Signed-off-by: Fabio Silva <ffjs1993@gmail.com>

* release variables

* formatting

* structure

* feedback from Nailya

* feedback from Nailya

* feedback from Shruti

* fefedback

* feedback from shruti

---------

Signed-off-by: Catalina Adam <catalina.adam@percona.com>
Signed-off-by: Fabio Silva <ffjs1993@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Fabio Silva <ffjs1993@gmail.com>

* docs(ha): repair the doc-3.10.0 merge

The merge in d5d202707 resolved against 4b26a4899, which predates the
HA docs, so it undid review changes and dropped doc-3.10.0 fixes.

- install-HA-clustered.md: restore the OpenShift steps from
  doc-3.10.0 (operators values file, runAsUser overrides,
  useStrictSecurity, datasource note, rollout status check) in the
  review's 8-space layout.
- Delete install-HA-kubernetes-single-instance.md and
  ha_single_instance_issues.md, which the review renamed.
- upgrade_helm.md: drop the HA upgrade cross-reference again.
- 3.10.0.md: restore the reviewed HA summary and own-components
  text, the PMM-14787, PMM-14956, PMM-15067, PMM-15172, PMM-15462 and
  PMM-15616 entries, and the five HA fixes from #6152. Keep
  OpenShift 4.19 and drop the stray "All deployments" heading.
- Restore PMM_HA_Health_Overview.png, which 32624182d overwrote with
  the MySQL Backups screenshot.
- Point HA.md and the Troubleshoot nav at the renamed
  single-instance pages.

Signed-off-by: Fabio Silva <ffjs1993@gmail.com>

* docs(ha): fix two anchors linkspector rejects

- upgrade_helm_ha.md: point both "Before you begin" links at
  #prerequisites, the heading the review renamed it to.
- 3.10.0.md: link PMM-14787 to 3.6.0.md without an anchor. MkDocs
  renders "✅ Fixed issues" as #fixed-issues, while linkspector expects
  #-fixed-issues, so no anchor satisfies both.

Signed-off-by: Fabio Silva <ffjs1993@gmail.com>

* bumped up version

---------

Signed-off-by: Catalina Adam <catalina.adam@percona.com>
Signed-off-by: Fabio Silva <ffjs1993@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Fabio Silva <ffjs1993@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

* Simplify vulnerability reporting channel

Point reporters solely at GitHub private vulnerability reporting.

Signed-off-by: aaron-percona <aaron.ormerod@percona.com>

* [DOCS] Refresh 3.10.0 security findings

Signed-off-by: aaron-percona <aaron.ormerod@percona.com>

* formatting

* [DOCS] MongoOP docs (#6180)

* draft

* mention in extensions topic

* draft

* restructure

* removed unwanted files

* Update documentation/docs/use/mongodb-operations.md

Co-authored-by: Radoslaw Szulgo <radoslaw.szulgo@percona.com>

* feedback from pawel

* Update documentation/docs/use/mongodb-operations.md

Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>

* Update documentation/docs/use/mongodb-operations.md

Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>

* Update documentation/docs/use/mongodb-operations.md

Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>

* Update documentation/docs/configure-pmm/advanced_settings.md

Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>

* Update documentation/docs/use/mongodb-operations.md

Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>

* [DOC] PMM-15659: Address review comments on Operations for MongoDB docs

- Describe automatic scans as on by default and retitle the section to
  "Change the scan schedule"
- Make /root/.mongodb_uri the only way to provide scan credentials
- Move name resolution and member network access out of node checks into
  the requirements, since PMM doesn't check them before the install
- Rename "Bind address" to "Listen on" and add a note about PMM-15764
- Release notes: remove duplicate bullets, use the "Operations for
  MongoDB" name and "Developer preview features" section, and add known
  issues for PMM-15772 and PMM-15764

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* remove duplicate

* feedback from pawel

* wording

* improved wording and strutcture

* structure

* Update documentation/docs/release-notes/3.10.0.md

Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>

* Update documentation/docs/use/mongodb-operations.md

Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>

* Update documentation/docs/use/mongodb-operations.md

Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>

* Update documentation/docs/release-notes/3.10.0.md

Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>

* feedback from Pawel

* wording

---------

Co-authored-by: Radoslaw Szulgo <radoslaw.szulgo@percona.com>
Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feedback from Davi

* feedback from Daniil

* linguistic review of security updates section

* [DOCS] Histograms for MongoDB exporter (PMM-15246) (#5713)

* release setup

* PMM-13306

* PMM-13306

* PMM-15029

* PMM-15030

* PMM-14661

* PMM-14661

* PMM-14576

* PMM-14193

* PMM-14519

* PMM-15145]

* PMM-13910

* PMM-15139

* PMM-14193

* [DOC] Document low-memory ClickHouse configuration and deprecate swit… (#5566)

* [DOC] Document low-memory ClickHouse configuration and deprecate switch-config.sh script

* feedback from Alex

* PMM-15118

* PMM-15114

* [DOC] PMM-15001: Document OVF removal (#5607)

* Restore virtual appliance OVF pages deleted/replaced by PR #5563

* Restore OVF references in ssl_encryption, configure, deploy_aws, faq, prerequisites, choose-deployment, migrating_from_pmm_2, server/index

* Restore migrating_from_pmm_2, install-pmm index, quickstart, and mkdocs-base.yml nav with virtual machines section

* Restore install-pmm/index.md, quickstart.md, and mkdocs-base.yml with virtual machines nav and SSH key under Configure

* Revert: remove env_var.md moved from virtual/ to aws/ by PMM-15001

* Revert: remove ssh.md moved from virtual/ to aws/ by PMM-15001

* readd OVF removal

* formatting

* typo

* [DOC] Clarify Nomad prerequisites: require PMM_PUBLIC_ADDRESS for Nomad to start

* mentioned error

* [DOC] Remove unused images from documentation (#5626)

* [DOC] RTA data export (PMM-14609) (#5642)

* [DOC] Add CSV export feature for Real-Time Analytics data

* readability

* fix  SS

* PMM-14576 Backup improvements doc update. (#5646)

* PMM-14576 Doc update.

* linguistic review

* Update documentation/docs/backup/mongodb-backup/backup_mongo.md

* Update documentation/docs/backup/mongodb-backup/mongodb_limitations.md

---------

Co-authored-by: Catalina A <catalina.adam@percona.com>
Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com>

* PMM-15130

* Update 3.9.0.md

* [DOCs]  Add custom queries for MySQL  (PMM-14502) (#5610)

* PMM-14502 Add custom queries documentation to MySQL connection guide

* [Docs] Custom queries in MySQL

* add relnotes entry

* update example

* CVE fixes

* PMM-14717 Fix missing find action on system.profile in MongoDB monitoring role (#5606)

* PMM-14717 Fix missing find action on system.profile in MongoDB monitoring role

* PMM-14717 Fix missing find action on system.profile in MongoDB monitoring role (quickstart)

* PMM-14717 Add 3.9.0 release notes file with doc fix entry

* PMM-14717 Simplify release notes entry

* PMM-14717 Fix release notes entry format

* PMM-14717 Reword release notes entry to match doc fix style

* PMM-14717 Simplify release notes entry

* PMM-14717 Add remediation note to release notes entry

* PMM-15082

* [DOC] Remove references to UI upgrade and Watchtower (PMM-14969)                                                                    (#5677)

* PMM-15130

* Removed and updated topics

* rel notes entry

* [DOC] Postgresql top queries new panels (PMM-14076 ) (#5676)

* PMM-15130

* [DOC]  new panels to PostgreSQL Top Queries dashboard

* added SS

* updated rel notes entry

* doc: update 3.9.0 security section

* doc: update release notes for PMM 3.9.0, adding Alert Status page details and security changes

* doc: update release notes and configuration for PMM 3.9.0

* added missing improvements

* [DOCS] Histograms for MongoDB exporter (PMM-15246)

* Update index.md

* updated rel version

* linguistic review

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com>
Co-authored-by: aaron-percona <aaron.ormerod@percona.com>
Co-authored-by: Jiří Čtvrtka <j.ctvrtka@gmail.com>

* Replace VictoriaMetrics danger boxes on HA pages

* Add vmagent known issue and reorder 3.10.0 known issues

* Potential fix for pull request finding 'Correct inventory endpoint paths to avoid duplicated prefix'

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding 'Update generated PDF filename to version 3.10.0'

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding 'Replace unsupported existing-service collector setup procedure'

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Fix broken documentation links

Signed-off-by: GitHub <noreply@github.com>

Co-authored-by: catalinaadam <94133018+catalinaadam@users.noreply.github.com>

* Potential fix for pull request finding 'Document required credentials and TLS options for inventory command'

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* feedback from ai

* feedback from Nailya

* feedback from Nailya

---------

Signed-off-by: Alex Demidoff <a@demidoff.me>
Signed-off-by: Claude <noreply@anthropic.com>
Signed-off-by: Marcus Cruz <marcus.cruz@percona.com>
Signed-off-by: Ante Gulin <ante.gulin@percona.com>
Signed-off-by: Catalina Adam <catalina.adam@percona.com>
Signed-off-by: Catalina A <catalina.adam@percona.com>
Signed-off-by: Matej Kubinec <matej.kubinec@3pillarglobal.com>
Signed-off-by: Yan Orestes <yan.orestes@percona.com>
Signed-off-by: aaron-percona <aaron.ormerod@percona.com>
Signed-off-by: Fabio Silva <ffjs1993@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ademidoff <81549+ademidoff@users.noreply.github.com>
Co-authored-by: Alex Demidoff <alexander.demidoff@percona.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Jiří Čtvrtka <j.ctvrtka@gmail.com>
Co-authored-by: Marcus Cruz <marcus.cruz@percona.com>
Co-authored-by: Ante Gulin <ante.gulin@percona.com>
Co-authored-by: Matej Kubinec <32638572+matejkubinec@users.noreply.github.com>
Co-authored-by: travagliad <davi.travaglia@percona.com>
Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com>
Co-authored-by: Mattia Simonato <mattia.simonato@percona.com>
Co-authored-by: Ante Gulin <8070595+4nte@users.noreply.github.com>
Co-authored-by: yyyyyyy <yan.orestes@percona.com>
Co-authored-by: marcuscruz-percona <272857389+marcuscruz-percona@users.noreply.github.com>
Co-authored-by: aaron-percona <aaron.ormerod@percona.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Fabio Silva <ffjs1993@gmail.com>
Co-authored-by: Radoslaw Szulgo <radoslaw.szulgo@percona.com>
Co-authored-by: Pawel Lebioda <pawel.lebioda89@gmail.com>

This branch was successfully deployed

No deployments
PMM-14989-fix-k8s-client-persistence-docs - pmm-3.10.0 PR #5897 — e2157b36 Deployed Sep 23, 2026 by ademidoff
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Documentation changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants