Skip to content

Engines and coverages

A coverage is one area of data the agent collects from a database, such as standard metrics, query performance, or a schema catalog. You pick coverages per database in the wizard. This page lists the coverages for each engine, what they collect, what they need, and how to set up the database for them.

  • Standard metrics is always on. Check Collect all optional metrics to collect the receiver’s full metric set.
  • Every other coverage is off until you turn it on.
  • Setup steps appear in the wizard when you turn on a coverage that needs them, such as a grant or an extension. The wizard doesn’t test them when you save, so run them first. A missing grant shows up as an empty tab in the Databases module and as errors in the agent log.
  • Passwords go in the wizard’s Password field, or in the environment variable it names. See Database credentials.
  • Log file coverages read files on the database host. They’re available on a virtual machine and hidden on Kubernetes.
  • The coverage list comes from the agent, so an older agent offers fewer coverages.
EngineMetricsQuery performanceSchemaTopologyLogsAlso available
PostgreSQLYesYesYesYesServer logsLocks, vacuum, bloat, replication health
MySQL and MariaDBYesYesYesYesSlow query logLocks
SQL ServerYesYesYesAvailability groupsQuery logAgent jobs, backups, index health, memory, sessions, TempDB, waits
OracleYesYesYesCDB/PDB, RAC, Data GuardQuery logAWR, RMAN backups, locks
MongoDBYesYes————
MongoDB AtlasYes———Host, audit, and access logs—
RedisYes—————
ClickHouseYes——YesQuery logInstance info and core metrics
ElasticsearchYes—————
SAP HANAYes—————
SnowflakeYes———Top queries—

Every coverage connects as a monitoring user with the pg_monitor role.

CoverageCollectsNeeds
Standard metricsConnections, cache hit ratio, replication lag, WAL and background writer, buffers, table and index statisticspg_monitor
Instance infoVersion, role, and key settings—
Query performance (samples + top queries)Top queries from pg_stat_statements, live samples from pg_stat_activity, and optionally execution planspg_stat_statements in shared_preload_libraries (restart), then CREATE EXTENSION in each monitored database. Plans also need pg_read_all_data and an Advanced override.
Locks & blockingLock counts by mode and blocked sessions—
Schema catalogTables, columns, indexes, and constraints in the schemas you list—
Replication topology & lagPrimary or standby role, standby roster, lag and backlog per linkTurn on for the primary
Replication health (slots, WAL retention)Replication slot state and retained WAL—
Vacuum health & wraparoundWraparound headroom and per-table vacuum recency—
Table bloat & vacuum blockersDead tuples per table and sessions blocking vacuum—
Server logs (JSON, PostgreSQL 15+)Slow queries and errors from jsonlog fileslog_destination = 'jsonlog'. VM only.
Logs (stderr, PostgreSQL <15)The same, from stderr log fileslog_destination = 'stderr'. VM only.

Only one of the two log coverages can be on. Schema catalog, Table bloat, and per-table vacuum stats cover the database set in the Database field.

Every PostgreSQL coverage connects as a monitoring user with the built-in pg_monitor role:

CREATE USER kmmonitor WITH PASSWORD 'YOUR_PASSWORD';
GRANT pg_monitor TO kmmonitor;

Query performance reads pg_stat_statements:

  1. Add pg_stat_statements to shared_preload_libraries in postgresql.conf. This needs a PostgreSQL restart.

  2. In each database you monitor, create the extension:

    CREATE EXTENSION pg_stat_statements;

pg_stat_statements.max (default 5000) caps how many distinct statements PostgreSQL tracks. If your workload has many distinct statements, raise it. Evicted statements show up as gaps in Top queries.

For Server logs (JSON, PostgreSQL 15+), set these in postgresql.conf, then run SELECT pg_reload_conf();:

logging_collector = on
log_destination = 'jsonlog'
log_min_duration_statement = 250

For Logs (stderr, PostgreSQL <15), use log_destination = 'stderr' instead. Any log_line_prefix works. In both cases, set Log file glob in the wizard to where PostgreSQL writes its logs. log_min_duration_statement is the slow-query threshold in milliseconds.

Keep a postgres database on managed PostgreSQL

Section titled “Keep a postgres database on managed PostgreSQL”

The agent connects to the database named postgres to read server-wide statistics and query performance. These statistics cover every database on the server, so the data you see still comes from your application databases.

Managed services such as Amazon RDS, Aurora, Cloud SQL, and Azure Database for PostgreSQL usually create postgres for you. If it was dropped, or the instance only has an application database, the agent logs pq: database "postgres" does not exist (3D000) and query performance and some metrics panels stay empty.

To fix it, connect as an administrator and create an empty postgres database with pg_stat_statements in it:

CREATE DATABASE postgres;
\c postgres
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
GRANT CONNECT ON DATABASE postgres TO kmmonitor;

Replace kmmonitor with your monitoring user. KloudMate doesn’t write anything to this database. You don’t need to restart the agent; data appears on the next collection.

MariaDB uses the MySQL coverages.

CoverageCollectsNeeds
Standard metricsBuffer pool, commands, handlers, InnoDB, connections, replicationPROCESS, REPLICATION CLIENT, SELECT
Instance infoVersion, flavor, read-only state, binlog, key settings, and max_connections—
Query performance (samples + top queries)Samples and top queries from performance_schema, and optionally execution plansperformance_schema=ON, larger digest and SQL text lengths, SELECT on performance_schema
Locks & blockingLock counts and blocked transactionsperformance_schema=ON, SELECT on performance_schema
Schema catalogTables, columns, indexes, and constraintsSchemas (databases) to scan is required
Replication topology & lagSource or replica role, Group Replication roster, applier lagperformance_schema=ON, REPLICATION CLIENT
Slow query logSlow queries with query time, lock time, and rowsslow_query_log=ON. VM only.

Every MySQL coverage connects as one monitoring user:

CREATE USER 'kmmonitor'@'%' IDENTIFIED BY 'YOUR_PASSWORD';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'kmmonitor'@'%';

Query performance, Locks & blocking, and Replication topology & lag read performance_schema. Standard metrics also reads connection counts and uptime from it.

  1. Add these settings under [mysqld] in my.cnf, then restart MySQL. None of them can be changed at runtime.

    [mysqld]
    performance_schema = ON
    performance_schema_max_digest_length = 4096
    performance_schema_max_sql_text_length = 4096
  2. Give the monitoring user read access to it:

    GRANT SELECT ON performance_schema.* TO 'kmmonitor'@'%';

The two length settings stop long statements from being cut off in Top queries and Running queries.

For Slow query log, turn on the log and find where MySQL writes it:

SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;
SHOW VARIABLES LIKE 'slow_query_log_file';

long_query_time is the slow-query threshold in seconds. SET GLOBAL lasts until the next restart, so add the same settings to my.cnf to keep them. In the wizard, make sure Slow log path matches the file the last statement returns. The default glob, /var/{log,lib}/mysql/*slow*.log, covers the usual locations.

Most coverages need VIEW SERVER STATE on the monitoring login.

CoverageCollectsNeeds
Standard metricsConnections, batches, buffer cache, page life expectancy, locks, transactions, wait statsVIEW SERVER STATE
Instance infoVersion, edition, Always On state, CPUs, memory settingsVIEW SERVER STATE
Query performance (samples + top queries)Samples and top queries from the DMVs, and optionally XML showplansVIEW SERVER STATE (or VIEW SERVER PERFORMANCE STATE on 2022+), VIEW ANY DATABASE
Query log (active + top queries)Active queries and the most CPU-expensive statements, as log recordsVIEW SERVER STATE
Schema catalogTables, columns, indexes, and foreign keys in the connected database—
Replication topology & lagAvailability group roles, replica roster, commit lag, send and redo backlogVIEW SERVER STATE, VIEW ANY DEFINITION
Agent jobsSQL Server Agent job runs, outcomes, and messagesA user in msdb with SELECT on sysjobs, sysjobhistory, and sysjobactivity, and EXECUTE on agent_datetime. Not on Azure SQL Database.
Backup trackingTime since each database’s last full, differential, and log backupSELECT on msdb.dbo.backupset and backupmediafamily
Index healthMissing index suggestions, index usage, fragmentationVIEW SERVER STATE
Memory & plan cacheMemory clerks, plan cache by type, memory grantsVIEW SERVER STATE
Session breakdownSessions by login, application, and status; request statesVIEW SERVER STATE
TempDB usageTempDB space by consumer and fileVIEW SERVER STATE
Waits, scheduler & file I/OTop wait types, scheduler queues, per-file I/O latencyVIEW SERVER STATE

The wizard’s setup steps don’t include creating the login, so start there.

Every SQL Server coverage connects as a monitoring login. Create it and give it VIEW SERVER STATE, which Standard metrics already needs to read connections and uptime even though the wizard only lists the grant for other coverages:

CREATE LOGIN kmmonitor WITH PASSWORD = 'YOUR_PASSWORD';
GRANT VIEW SERVER STATE TO kmmonitor;

VIEW SERVER STATE also covers Instance info, Waits, scheduler & file I/O, Session breakdown, Memory & plan cache, TempDB usage, Index health, and Query log.

Query performance also needs to see every database:

GRANT VIEW ANY DATABASE TO kmmonitor;

On SQL Server 2022 and later, the wizard offers VIEW SERVER PERFORMANCE STATE as the narrower alternative to VIEW SERVER STATE for this coverage.

Agent jobs and Backup tracking read tables in msdb, which needs a database user for the login there. Create the user once, then add the grants for the coverages you use:

USE msdb;
CREATE USER kmmonitor FOR LOGIN kmmonitor;

-- Agent jobs
GRANT SELECT ON dbo.sysjobs TO kmmonitor;
GRANT SELECT ON dbo.sysjobhistory TO kmmonitor;
GRANT SELECT ON dbo.sysjobactivity TO kmmonitor;
GRANT EXECUTE ON dbo.agent_datetime TO kmmonitor;

-- Backup tracking
GRANT SELECT ON dbo.backupset TO kmmonitor;
GRANT SELECT ON dbo.backupmediafamily TO kmmonitor;

Replication topology & lag reads the sys.dm_hadr_* DMVs and the availability group catalog views:

GRANT VIEW ANY DEFINITION TO kmmonitor;

Without VIEW ANY DEFINITION, SQL Server returns no rows from the catalog views rather than an error, so the group looks like it has no members. Logins aren’t synchronized across replicas, so create the login and grants on each replica you monitor.

Schema catalog scans the database named in the wizard’s Database field, which defaults to master. Set it to your application database, and set Schemas to scan (default dbo). The monitoring login needs a user in that database and permission to see its table definitions, for example through VIEW ANY DEFINITION.

Every coverage connects with the Service name you enter, which selects a PDB or the CDB root. Monitor the root and each PDB as separate databases with distinct instance names.

CoverageCollectsNeeds
Standard metricsSessions, tablespace usage, wait classes, executions, PGA and SGA, hard parsesCREATE SESSION, SELECT_CATALOG_ROLE
Instance infoVersion, open mode, Data Guard role, archive mode, sizing parameters—
Query performance (samples + top queries)Samples, top queries, and session waits from V$ views, and optionally execution plansSELECT on V$SQL, V$SQL_PLAN, V$SQL_PLAN_STATISTICS_ALL, V$SESSION, V$SESSION_EVENT, V$LOCK, V$CONTAINERS, DBA_OBJECTS, DBA_PROCEDURES
Query log (active sessions)Active sessions and the SQL text they runSELECT on V$SESSION, V$SQL
Schema catalogTables, columns, indexes, and constraints for the owners you listOracle 12.2 or later. Schemas (owners) to scan is required.
Locks & blockingLock counts and blocked sessionsSELECT on V$LOCK, V$SESSION
Container topology (CDB / PDB)Root or PDB role and the container rosterTurn on for the CDB root
RAC topologyRAC instances and their statusSELECT on V$DATABASE, GV$INSTANCE
Data Guard topology & lagPrimary and standbys, and apply lagSELECT on V$DATABASE, V$DATAGUARD_CONFIG, V$DATAGUARD_STATS
Backup tracking (RMAN)Time since the last RMAN backup of each typeSELECT on V$RMAN_BACKUP_JOB_DETAILS
AWR load profile & instance efficiencyLoad profile and instance efficiency percentagesDiagnostics Pack
AWR time model & wait classesDB time breakdown and wait classes as average active sessionsDiagnostics Pack
AWR wait events, enqueues & servicesNamed wait events, enqueues, and service timeDiagnostics Pack
AWR top SQL & plan historyTop SQL by elapsed time with plan hash, per snapshotDiagnostics Pack
AWR I/O & segment statisticsI/O by function and tablespace, top segmentsDiagnostics Pack
AWR active session historyASH activity by wait class, SQL, module, and objectDiagnostics Pack

Every Oracle coverage connects as a monitoring user with CREATE SESSION and SELECT_CATALOG_ROLE. Connect as SYS, or another user allowed to grant these, and run:

CREATE USER kmmonitor IDENTIFIED BY "YOUR_PASSWORD";
GRANT CREATE SESSION TO kmmonitor;
GRANT SELECT_CATALOG_ROLE TO kmmonitor;

SELECT_CATALOG_ROLE covers the dictionary and V$ views the coverages read, including V$SQLSTATS, the DBA_* views behind Schema catalog, and the DBA_HIST_* views behind AWR. The wizard doesn’t show this step, but every coverage depends on it.

Use the same user in the wizard’s Monitoring user field, and the same password in Password or in the environment variable it names. See Database credentials.

The wizard lists these object grants when you turn on the coverages that need them. They overlap with SELECT_CATALOG_ROLE, and they’re what you need if your security policy grants individual views instead of the role. Oracle takes one object per GRANT SELECT statement.

Query performance:

GRANT SELECT ON V_$SQL TO kmmonitor;
GRANT SELECT ON V_$SQLSTATS TO kmmonitor;
GRANT SELECT ON V_$SQL_PLAN TO kmmonitor;
GRANT SELECT ON V_$SQL_PLAN_STATISTICS_ALL TO kmmonitor;
GRANT SELECT ON V_$SESSION TO kmmonitor;
GRANT SELECT ON V_$SESSION_EVENT TO kmmonitor;
GRANT SELECT ON V_$LOCK TO kmmonitor;
GRANT SELECT ON V_$CONTAINERS TO kmmonitor;
GRANT SELECT ON DBA_OBJECTS TO kmmonitor;
GRANT SELECT ON DBA_PROCEDURES TO kmmonitor;

Backup tracking (RMAN):

GRANT SELECT ON V_$RMAN_BACKUP_JOB_DETAILS TO kmmonitor;

Data Guard topology & lag:

GRANT SELECT ON V_$DATABASE TO kmmonitor;
GRANT SELECT ON V_$DATAGUARD_CONFIG TO kmmonitor;
GRANT SELECT ON V_$DATAGUARD_STATS TO kmmonitor;

RAC topology:

GRANT SELECT ON V_$DATABASE TO kmmonitor;
GRANT SELECT ON GV_$INSTANCE TO kmmonitor;

Locks & blocking:

GRANT SELECT ON V_$LOCK TO kmmonitor;
GRANT SELECT ON V_$SESSION TO kmmonitor;

Query log (active sessions):

GRANT SELECT ON V_$SESSION TO kmmonitor;
GRANT SELECT ON V_$SQL TO kmmonitor;

Instance info, Container topology, Schema catalog, and the AWR coverages need nothing beyond SELECT_CATALOG_ROLE.

CoverageCollectsNeeds
Standard metricsOperations, connections, memory, cache, document and collection stats, replicationLeave the user empty if the instance has no authentication
Query performance (samples + top queries)Live samples from currentOp and top slow queries from the profilerThe clusterMonitor role. Profiling level 1 on each monitored database is recommended.

Set Disable TLS for a self-hosted MongoDB without TLS. It’s off by default, and without it the connection expects a verified certificate.

The agent connects as the Monitoring user (default kmmonitor). Give that user the built-in clusterMonitor role. Run this in the database where the user is defined, which is usually admin:

db.grantRolesToUser("kmmonitor", [{ role: "clusterMonitor", db: "admin" }])

If the user is defined in a database other than the one the agent connects to, set Auth database in the wizard. Leave Monitoring user empty if the instance has no authentication. For the password, see Database credentials.

Top queries come from the database profiler. Turn it on in each database you want to monitor:

db.setProfilingLevel(1)

Level 1 records operations slower than MongoDB’s slowms threshold (100 ms by default). Without profiling, the agent reads slow operations from MongoDB’s diagnostic log instead. That log keeps only about 1,024 recent entries, so on a busy server slow operations can rotate out before the agent reads them, and Top queries misses them.

Disable TLS is off by default, so the agent expects TLS and verifies the server certificate. For a self-hosted MongoDB with no TLS configured, turn on Disable TLS, or the connection fails. For a self-signed certificate, turn on Skip certificate verification instead.

Auth mechanism can stay unset for username and password authentication. Set it only for certificate (MONGODB-X509), AWS IAM (MONGODB-AWS), or Kerberos (GSSAPI) authentication.

Atlas is monitored through the Atlas Admin API, not a database connection.

CoverageCollectsNeeds
MongoDB Atlas (cloud)Project, cluster, process, and disk metricsAn Atlas API key with the Project Read Only role, with the agent host’s IP on the key’s access list
Logs (host, audit, access)mongod, audit, and access logs for one projectAtlas project name. Audit logs also need database auditing enabled in the project.

The logs coverage uses the API, so it’s also available on Kubernetes.

  1. In Atlas, open Project Settings → Access Manager → API Keys and create an API key with the Project Read Only role.
  2. Add the public IP address of the host running the KloudMate Agent to the key’s access list. Atlas rejects requests from any other address.
  3. Copy the public key and the private key. Atlas shows the private key only once.

The Logs coverage uses the same key and role.

  • Atlas public key: the public part of the API key.
  • Atlas private key: by default, the wizard shows the environment variable the agent reads it from, such as KM_SECRET_MONGODBATLAS_PRIVATE_KEY. Set that variable on the agent host. See Database credentials.
  • Metric granularity: how finely Atlas aggregates each measurement, as an ISO-8601 duration. The default PT1M is one minute.
  • Atlas project name (Logs only): the project to pull logs from. Logs are scoped to one project, unlike metrics.

Collect audit logs is off by default. Before you turn it on, enable auditing for the project in Atlas under Project Settings → Advanced → Database Auditing.

CoverageCollectsNeeds
Standard metricsCommands, memory, keyspace, clients, replicationNothing for an instance without authentication. Set ACL username only for a Redis 6+ ACL user.

Redis needs no grants or database-side setup. In the wizard, fill in:

  • Endpoint: host:port of the Redis server, such as localhost:6379.
  • Password: leave it empty if the server has no authentication. See Database credentials.
  • ACL username: only for a Redis 6 or later ACL user. Leave it empty if the server uses requirepass alone.

If the server uses TLS with a self-signed certificate, turn on Skip certificate verification. Disable TLS connects without TLS at all.

Standard metrics come from ClickHouse’s Prometheus endpoint. The other coverages connect over SQL with their own host, port, and user.

CoverageCollectsNeeds
Standard metrics (Prometheus endpoint)Memory, queries, merges, replication, partsThe <prometheus> endpoint enabled in config.xml, on port 9363 by default
Instance info & core metricsVersion, uptime, connections, database size, query countersSELECT on system.metrics, system.events, system.parts, system.server_settings
Query log (top queries by duration)Top queries from system.query_log, as log recordsSELECT on system.query_log
Replication topology & lagCluster roster and replication delaySELECT on system.clusters, system.replicas

ClickHouse coverages use two separate connections. Standard metrics reads the Prometheus endpoint over HTTP. The other coverages run SQL against ClickHouse’s native protocol port, with their own Host, Port, Database, Monitoring user, and Password fields.

In ClickHouse’s config.xml, add a <prometheus> block:

<prometheus>
    <endpoint>/metrics</endpoint>
    <port>9363</port>
    <metrics>true</metrics>
    <events>true</events>
    <asynchronous_metrics>true</asynchronous_metrics>
</prometheus>

Keep metrics, events, and asynchronous_metrics all set to true, since the Metrics tab reads all three.

In the wizard, set Prometheus endpoint to the host and port of this endpoint, such as 10.0.0.12:9363. It’s localhost:9363 by default. If the endpoint is served over TLS, set Scrape scheme to https, and check Skip certificate verification for a self-signed certificate.

Set Host and Port to ClickHouse’s native protocol interface, not the Prometheus port. Port defaults to 9000, and Monitoring user defaults to kmmonitor.

Grant the monitoring user read access to the system tables each coverage reads. The wizard shows the grants for the coverages you turn on. Replace kmmonitor if your user has a different name.

Instance info & core metrics:

GRANT SELECT ON system.metrics TO kmmonitor;
GRANT SELECT ON system.events TO kmmonitor;
GRANT SELECT ON system.parts TO kmmonitor;
GRANT SELECT ON system.server_settings TO kmmonitor;

Replication topology & lag:

GRANT SELECT ON system.clusters TO kmmonitor;
GRANT SELECT ON system.replicas TO kmmonitor;

Query log:

GRANT SELECT ON system.query_log TO kmmonitor;
CoverageCollectsNeeds
Standard metricsCluster health, node JVM, OS, and file system, indices, shards, thread pools, circuit breakersLeave the user empty when security is disabled. Use an https:// endpoint for TLS.
  1. Set Endpoint to the base URL of an Elasticsearch node, including the scheme and port, such as http://10.0.0.20:9200. The default is http://localhost:9200.
  2. If security is enabled on the cluster, enter a Monitoring user and Password. The user needs read access to the _cluster/health and _nodes/stats APIs. If security is disabled, leave Monitoring user empty.
  3. For a cluster that serves HTTPS, use an https:// endpoint. Check Skip certificate verification if the node uses a self-signed certificate.

One endpoint is enough for the whole cluster. Cluster health comes from the node you point at, and node statistics arrive as one series per node, which most panels add together into a cluster value.

CoverageCollectsNeeds
Standard metricsConnections, memory, CPU, disk, service and host status, transactions, volume I/OA monitoring user on the SQL port (30015 by default)
  1. Set Endpoint to the host and SQL port of the HANA database, such as 10.0.0.30:30015. The default is localhost:30015. The SQL port depends on your instance number and whether you connect to a tenant database, so check it in your HANA system before you save.
  2. Enter a Monitoring user and Password. Both are required. The user needs read access to HANA’s system monitoring views.
  3. Decide on TLS. Disable TLS is on by default, which matches a self-hosted HANA without TLS configured. Turn it off to connect over TLS. The server’s certificate isn’t verified.

Snowflake is queried through SNOWFLAKE.ACCOUNT_USAGE, which lags real time and uses warehouse credits. The collection interval defaults to 300 seconds for that reason.

CoverageCollectsNeeds
Warehouse & storage metricsWarehouse credit usage and per-database storageIMPORTED PRIVILEGES on the SNOWFLAKE database and USAGE on the warehouse
Top queries (QUERY_HISTORY)Top queries by elapsed time, as log records, with about 45 minutes of latencyThe same grants

The monitoring user’s role needs imported privileges on the SNOWFLAKE database and usage on the warehouse that runs the monitoring queries:

GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE YOUR_ROLE;
GRANT USAGE ON WAREHOUSE YOUR_WAREHOUSE TO ROLE YOUR_ROLE;

Replace YOUR_ROLE and YOUR_WAREHOUSE with your role and warehouse names.

FieldWhat to enter
Account identifierYour Snowflake account identifier, such as xy12345.us-east-1
WarehouseThe warehouse that runs the monitoring queries. Required.
RoleThe role you granted access to. It defaults to ACCOUNTADMIN; enter a dedicated role if you created one.
User and PasswordThe monitoring user. Both are required.
Database and SchemaLeave them at SNOWFLAKE and ACCOUNT_USAGE.

For how to store the password, see Database credentials.

Collection interval defaults to 300s for Snowflake, instead of the 60s other engines use. Each collection runs queries on the warehouse you named, and those queries consume credits. A shorter interval raises that cost without giving you fresher data, because ACCOUNT_USAGE itself lags.

A collection also resumes the warehouse if it’s suspended, so use a small warehouse for monitoring.

PostgreSQL, MySQL and MariaDB, SQL Server, and Oracle can send each statement’s execution plan for query details. Check Collect execution plans on the Query performance coverage. A new statement can take a few collection intervals before its first plan appears.

EngineAlso neededNotes
PostgreSQLGRANT pg_read_all_data TO kmmonitor;, because running EXPLAIN needs read access to your tables. Then open Advanced, choose Query performance, and set top_query_collection.max_explain_each_interval: 1000.—
MySQL and MariaDBNothing. The monitoring user already has SELECT on your tables.Plans for statements with subqueries or UNION can’t be displayed yet.
SQL ServerNothing.Each plan is the full XML showplan, often tens to hundreds of KB per statement, so expect a noticeable increase in data volume.
OracleNothing. Plans come from V$SQL_PLAN_STATISTICS_ALL, which the Oracle grants already cover.—

Database log records carry km.db.coverage, set to the coverage they came from. Filter on it in Log Explorer, for example query-performance, query-log, top-queries, schema, agent-jobs, index-health, slow-log, server-logs, stderr-logs, or logs.