Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion documentation/docs/admin/manage-users/edit_users.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ The following are the privileges for the various *roles*:

- **Viewer** - Viewing dashboards

For detailed information on the privileges for these roles and the different tasks that they can perform, see [Grafana organization roles](https://grafana.com/docs/grafana/latest/permissions/organization_roles/).
For detailed information on the privileges for these roles and the different tasks that they can perform, see [Grafana organization roles](https://grafana.com/docs/grafana/latest/permissions/organization_roles/){:target="_blank"}.
Copy link
Member

Choose a reason for hiding this comment

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

IMO, adding {:target="_blank"} to every external link heavily pollutes the code for little value. What will happen if we remove it?

Copy link
Member

@ademidoff ademidoff Oct 27, 2025

Choose a reason for hiding this comment

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

I hope the same goal is achievable even without such a snippet.

Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ To create access roles in PMM:

If you want to add more than one label for a role, click *+* and select the values from the drop-down.

For information on how the Prometheus selectors work, see [Prometheus selectors](https://prometheus.io/docs/prometheus/latest/querying/basics/#time-series-selectors).
For information on how the Prometheus selectors work, see [Prometheus selectors](https://prometheus.io/docs/prometheus/latest/querying/basics/#time-series-selectors){:target="_blank"}.

6. Review your selections, then click **Create** to finalize the role.

Expand Down
4 changes: 2 additions & 2 deletions documentation/docs/admin/roles/access-control/labels.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,6 @@ PMM allows modifying certain standard labels after a service is created:

For other standard labels that cannot be modified directly, you must remove the service and re-add it with the desired labels.

This can be done either via PMM UI or via an [API endpoint](https://percona-pmm.readme.io/reference/changeservice).
This can be done either via PMM UI or via an [API endpoint](https://percona-pmm.readme.io/reference/changeservice){:target="_blank"}.

Modifying the custom labels can be done as well via PMM UI of via the same [API endpoint](https://percona-pmm.readme.io/reference/changeservice).
Modifying the custom labels can be done as well via PMM UI of via the same [API endpoint](https://percona-pmm.readme.io/reference/changeservice){:target="_blank"}.
2 changes: 1 addition & 1 deletion documentation/docs/admin/roles/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ For more granular data access control, see [Labels for access control](../roles/

## Role types in PMM

PMM inherits its basic role structure from [Grafana](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/) but with customizations specific to database monitoring. PMM has three main role types:
PMM inherits its basic role structure from [Grafana](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/){:target="_blank"} but with customizations specific to database monitoring. PMM has three main role types:

- **Admin**: Has access to all resources and features within a PMM instance. This role can manage all aspects of PMM including users, teams, data sources, dashboards, and server settings.
- **Editor**: Can view and edit dashboards, create custom visualizations, work with alerts, and manage specific configurations. Editors cannot modify server-wide settings or manage users.
Expand Down
2 changes: 1 addition & 1 deletion documentation/docs/admin/security/ssl_encryption.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Configure both the Server and Client to implement SSL/TLS encryption in your PMM
- [Copy certificates](#copy-certificates) directly into the PMM Server container
2. **Restart PMM Server** to apply the new certificates
3. **Configure client trust**: Ensure PMM Clients can verify the server certificate:
- Add the CA certificate to the system trust store ([Ubuntu guide](https://ubuntu.com/server/docs/install-a-root-ca-certificate-in-the-trust-store) | [Red Hat guide](https://www.redhat.com/sysadmin/configure-ca-trust-list))
- Add the CA certificate to the system trust store ([Ubuntu guide](https://ubuntu.com/server/docs/install-a-root-ca-certificate-in-the-trust-store){:target="_blank"} | [Red Hat guide](https://www.redhat.com/sysadmin/configure-ca-trust-list){:target="_blank"})
- **Or use the `SSL_CERT_FILE` environment variable** for [custom CA certificates](#use-custom-ca-certificates-with-pmm-client)

### Certificate storage location
Expand Down
2 changes: 1 addition & 1 deletion documentation/docs/advisors/advisor-details.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Each Advisor includes a set of automated checks, which investigate a specific ra

This page presents the complete list of database Advisors along with the corresponding subscription tier for which they are available.

You can also access this list through the [**Advisor checks for PMM**](https://portal.percona.com/advisors) section in the Percona Portal documentation, as the Advisors are hosted on the Percona Platform. PMM Server automatically downloads them from this source when the Advisors and Telemetry options are enabled in PMM under **Configuration > Settings > Advanced Settings**. Both options are enabled by default.
You can also access this list through the [**Advisor checks for PMM**](https://portal.percona.com/advisors){:target="_blank"} section in the Percona Portal documentation, as the Advisors are hosted on the Percona Platform. PMM Server automatically downloads them from this source when the Advisors and Telemetry options are enabled in PMM under **Configuration > Settings > Advanced Settings**. Both options are enabled by default.

### Configuration Advisors

Expand Down
2 changes: 1 addition & 1 deletion documentation/docs/advisors/advisors.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ As soon as you connect your PMM instance to Percona Platform, has access to addi

If you are a Percona customer with a Percona Customer Portal account, you also get access to Standard/Premium Advisor checks, which offer more advanced database health information.

To see the complete list of available checks, see the [Advisor Checks for PMM](https://docs.percona.com/percona-platform/advisors.html) topic in the Percona Platform documentation.
To see the complete list of available checks, see the [Advisor Checks for PMM](https://docs.percona.com/percona-platform/advisors.html){:target="_blank"} topic in the Percona Platform documentation.

## Enable/Disable
To download the checks available for your Percona Account, the Advisors and Telemetry options have to be enabled under :material-cog: **Configuration >** :material-cog-outline: **Settings > Advanced Settings**.
Expand Down
24 changes: 12 additions & 12 deletions documentation/docs/advisors/develop-advisor-checks.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ As a developer, you can create custom checks to cover additional use cases, rele
A check is a combination of:

- A query for extracting data from the database.
- Python script for converting extracted data into check results. This is actually a [Starlark](https://github.com/google/starlark-go) script, which is a Python dialect that adds more imperative features than Python. The script's execution environment is sandboxed, and no I/O can be done from it.
- Python script for converting extracted data into check results. This is actually a [Starlark](https://github.com/google/starlark-go){:target="_blank"} script, which is a Python dialect that adds more imperative features than Python. The script's execution environment is sandboxed, and no I/O can be done from it.

All checks are self-contained in the first phase, as well as in most of the planned phases.

Expand Down Expand Up @@ -192,22 +192,22 @@ Expand the table below for the list of checks types that you can use to define y
| MYSQL_SELECT | Executes 'SELECT …' clause against MySQL database. |Yes|
| POSTGRESQL_SHOW | Executes 'SHOW ALL' command against PosgreSQL database. |No|
| POSTGRESQL_SELECT | Executes 'SELECT …' clause against PosgreSQL database. |Yes|
| MONGODB_GETPARAMETER | Executes db.adminCommand( { getParameter: "*" } ) against MongoDB's "admin" database. For more information, see [getParameter](https://docs.mongodb.com/manual/reference/command/getParameter/)| No|
| MONGODB_BUILDINFO | Executes db.adminCommand( { buildInfo: 1 } ) against MongoDB's "admin" database. For more information, see [buildInfo](https://docs.mongodb.com/manual/reference/command/buildInfo/) | No|
| MONGODB_GETCMDLINEOPTS | Executes db.adminCommand( { getCmdLineOpts: 1 } ) against MongoDB's "admin" database. For more information, see [getCmdLineOpts](https://docs.mongodb.com/manual/reference/command/getCmdLineOpts/) |No|
| MONGODB_REPLSETGETSTATUS | Executes db.adminCommand( { replSetGetStatus: 1 } ) against MongoDB's "admin" database. For more information, see [replSetGetStatus](https://docs.mongodb.com/manual/reference/command/replSetGetStatus/) |No|
| MONGODB_GETDIAGNOSTICDATA |Executes db.adminCommand( { getDiagnosticData: 1 } ) against MongoDB's "admin" database. For more information, see [MongoDB Performance](https://docs.mongodb.com/manual/administration/analyzing-mongodb-performance/#full-time-diagnostic-data-capture)| No|
| METRICS_INSTANT |Executes instant [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html) query. Query can use placeholders in query string {% raw %} **{{.NodeName**}} and **{{.ServiceName}}** {% endraw %}. Both match target service/node names. To read more about instant queries, check out the [Prometheus docs](https://prometheus.io/docs/prometheus/latest/querying/api/#instant-queries).|Yes|
| METRICS_RANGE |Executes range [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html) query. Query can use placeholders in query string {% raw %} **{{.NodeName**}} and **{{.ServiceName}}** {% endraw %}. Both match target service/node names. To read more about range queries, check out the [Prometheus docs](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries).|Yes|
| MONGODB_GETPARAMETER | Executes db.adminCommand( { getParameter: "*" } ) against MongoDB's "admin" database. For more information, see [getParameter](https://docs.mongodb.com/manual/reference/command/getParameter/){:target="_blank"}| No|
| MONGODB_BUILDINFO | Executes db.adminCommand( { buildInfo: 1 } ) against MongoDB's "admin" database. For more information, see [buildInfo](https://docs.mongodb.com/manual/reference/command/buildInfo/){:target="_blank"} | No|
| MONGODB_GETCMDLINEOPTS | Executes db.adminCommand( { getCmdLineOpts: 1 } ) against MongoDB's "admin" database. For more information, see [getCmdLineOpts](https://docs.mongodb.com/manual/reference/command/getCmdLineOpts/){:target="_blank"} |No|
| MONGODB_REPLSETGETSTATUS | Executes db.adminCommand( { replSetGetStatus: 1 } ) against MongoDB's "admin" database. For more information, see [replSetGetStatus](https://docs.mongodb.com/manual/reference/command/replSetGetStatus/){:target="_blank"} |No|
| MONGODB_GETDIAGNOSTICDATA |Executes db.adminCommand( { getDiagnosticData: 1 } ) against MongoDB's "admin" database. For more information, see [MongoDB Performance](https://docs.mongodb.com/manual/administration/analyzing-mongodb-performance/#full-time-diagnostic-data-capture){:target="_blank"}| No|
| METRICS_INSTANT |Executes instant [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html){:target="_blank"} query. Query can use placeholders in query string {% raw %} **{{.NodeName**}} and **{{.ServiceName}}** {% endraw %}. Both match target service/node names. To read more about instant queries, check out the [Prometheus docs](https://prometheus.io/docs/prometheus/latest/querying/api/#instant-queries){:target="_blank"}.|Yes|
| METRICS_RANGE |Executes range [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html){:target="_blank"} query. Query can use placeholders in query string {% raw %} **{{.NodeName**}} and **{{.ServiceName}}** {% endraw %}. Both match target service/node names. To read more about range queries, check out the [Prometheus docs](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries){:target="_blank"}.|Yes|
| CLICKHOUSE_SELECT |Executes 'SELECT ...' statements against PMM's [Query Analytics](../use/qan/index.md) ClickHouse database. Queries can use the {% raw %} **{{.ServiceName**}} and **{{.ServiceID}}** {% endraw %} placeholders in query string. They match the target service name and service ID respectively.|Yes|

## Query parameters
- `METRICS_INSTANT`
- **lookback** (duration, optional): specifies how far in past to look back to metrics history. If this parameter is not specified, then query executed on the latest data. Example values: `30s`, `5m`, `8h`.
- `METRICS_RANGE`
- **lookback** (duration, optional): specifies how far in past to look back to metrics history. If this parameter is not specified, then query executed on the latest data. Example values: `30s`, `5m`, `8h`.
- **range** (duration, required): specifies time window of the query. This parameter is equal to [Prometheus API](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries).
- **step** (duration, required): query resolution. This parameter is equal to [Prometheus API](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries).
- **range** (duration, required): specifies time window of the query. This parameter is equal to [Prometheus API](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries){:target="_blank"}.
- **step** (duration, required): query resolution. This parameter is equal to [Prometheus API](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries){:target="_blank"}.
- `POSTGRESQL_SELECT`
- **all_dbs** (boolean, optional): execute query on all available databases in PostgreSQL instance. If this parameter is not specified, then query executed on the default database (the one that was specified when service was added to PMM).

Expand All @@ -219,7 +219,7 @@ Expand the table below for the list of checks types that you can use to define y
To develop custom checks for PMM:
{.power-number}

1. Install the latest PMM Server and PMM Client builds following the [installation instructions](https://www.percona.com/software/pmm/quickstart#).
1. Install the latest PMM Server and PMM Client builds following the [installation instructions](https://www.percona.com/software/pmm/quickstart#){:target="_blank"}.
2. Run PMM Server with special environment variables:

- `PMM_DEV_ADVISOR_CHECKS_FILE=/srv/custom-checks.yml` to use checks from the local files instead of downloading them from Percona Platform.
Expand Down Expand Up @@ -276,4 +276,4 @@ There are two ways to reload your check file after making changes:
- From command line (always works): SSH into PMM Server and execute: `supervisorctl restart pmm-managed`.

## Submit feedback
We welcome your feedback on the current process for developing and debugging checks. Send us your comments or post a question on the [Percona Forums](https://forums.percona.com/c/percona-monitoring-and-management-pmm/pmm-3/84).
We welcome your feedback on the current process for developing and debugging checks. Send us your comments or post a question on the [Percona Forums](https://forums.percona.com/c/percona-monitoring-and-management-pmm/pmm-3/84){:target="_blank"}.
6 changes: 3 additions & 3 deletions documentation/docs/alert/alert_rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ To check the full list of available PMM templates, see the [List of available al

### Create alert rules from alert rule templates

This section focuses on creating an alert rule based on PMM templates. For information on working with the other alert types, check the Grafana documentation on [Grafana Labs](https://grafana.com/docs/grafana/latest/alerting/).
This section focuses on creating an alert rule based on PMM templates. For information on working with the other alert types, check the Grafana documentation on [Grafana Labs](https://grafana.com/docs/grafana/latest/alerting/){:target="_blank"}.

### Provision alert resources

Expand All @@ -47,7 +47,7 @@ Before creating PMM alert rules, configure the required alert resources:
### Configure alert templates

Alerts templates are YAML files that provide the source framework for alert rules.
Alert templates contain general template details and an alert expression defined in [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html). This query language is backward compatible with PromQL.
Alert templates contain general template details and an alert expression defined in [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html){:target="_blank"}. This query language is backward compatible with PromQL.

### Create custom templates

Expand Down Expand Up @@ -127,7 +127,7 @@ Note that to paste the query above, **Explore** must be in `Code` mode, and not

After provisioning the resources required for creating Percona templated alerts, you are now ready to create your alert rule based on a Percona template.

If you want to learn about creating Grafana alerts instead, check out [Grafana's documentation](https://grafana.com/docs/grafana/latest/alerting/):
If you want to learn about creating Grafana alerts instead, check out [Grafana's documentation](https://grafana.com/docs/grafana/latest/alerting/){:target="_blank"}:
{.power-number}

1. Go to **Alerting > Alert Rules**, and click **New alert rule from template**.
Expand Down
6 changes: 3 additions & 3 deletions documentation/docs/alert/silence_alerts.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ To create a new silence:
6. Review the affected alert instances that will be silenced.
7. Click **Save silece**.

For more information on working with silences, see [About alerting silences](https://grafana.com/docs/grafana/latest/alerting/manage-notifications/create-silence/) in the Grafana documentation.
For more information on working with silences, see [About alerting silences](https://grafana.com/docs/grafana/latest/alerting/manage-notifications/create-silence/){:target="_blank"} in the Grafana documentation.

## Alerting compatibility

Expand Down Expand Up @@ -52,8 +52,8 @@ To see all the available options, check the scrip help using `ia_migration.py -h

#### Script prerequisites

- Python version 3.x, which you can download from [Python Downloads centre](https://www.python.org/downloads/).
- [Requests library](https://requests.readthedocs.io/en/latest/user/install/#install), which you can install with the following command: ```pip3 install requests```.
- Python version 3.x, which you can download from [Python Downloads centre](https://www.python.org/downloads/){:target="_blank"}.
- [Requests library](https://requests.readthedocs.io/en/latest/user/install/#install){:target="_blank"}, which you can install with the following command: ```pip3 install requests```.

!!! caution alert alert-warning "Important"
The script sets all migrated alert rules to Active. Make sure to silence any alerts that should not be firing.
Expand Down
4 changes: 2 additions & 2 deletions documentation/docs/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

PMM Server provides a comprehensive REST API that enables you to monitor databases, manage resources, collect metrics, and automate PMM operations programmatically. The API supports endpoints for managing nodes, services, agents, alerting, backups, and other PMM components.

The [complete API documentation on Readme.io](https://percona-pmm.readme.io/reference/introduction) includes detailed endpoint specifications, authentication methods, example requests, and response schemas.
The [complete API documentation on Readme.io](https://percona-pmm.readme.io/reference/introduction){:target="_blank"} includes detailed endpoint specifications, authentication methods, example requests, and response schemas.

## Interactive API documentation

You can explore and test the API using the built-in [Swagger](https://swagger.io/tools/swagger-ui/) UI, accessible at the `/swagger/` endpoint of your PMM Server. The Swagger interface allows you to:
You can explore and test the API using the built-in [Swagger](https://swagger.io/tools/swagger-ui/){:target="_blank"} UI, accessible at the `/swagger/` endpoint of your PMM Server. The Swagger interface allows you to:

- browse available API endpoints
- view detailed request and response schemas
Expand Down
Loading
Loading