Set up MySQL monitoring using the NRDOT Collector for AWS RDS MySQL instances. RDS environments have specific considerations for Performance Schema consumers and privileges.
Prerequisites
Before you install, make sure you have:
- A New Relic license key.
- Network connectivity between the host where you install the NRDOT Collector and your RDS MySQL instance.
- Network connectivity to New Relic OTLP endpoints documentation
- RDS master user credentials.
For supported MySQL versions, required grants, and performance_schema requirements, see Compatibility and prerequisites.
Set up NRDOT Collector
Install the NRDOT Collector on a system that can connect to your RDS instance:
Configure database user
Create a monitoring user with the necessary privileges for your RDS MySQL instance.
To create a monitoring user, connect to your RDS instance as the master user and run:
CREATE USER '<YOUR_DB_USERNAME>'@'%' IDENTIFIED BY '<YOUR_DB_PASSWORD>';To collect query samples and top queries, grant the following privileges to the monitoring user:
GRANT SELECT ON performance_schema.* TO '<YOUR_DB_USERNAME>'@'%';GRANT SELECT ON *.* TO '<YOUR_DB_USERNAME>'@'%';GRANT REPLICATION CLIENT ON *.* TO '<YOUR_DB_USERNAME>'@'%';GRANT PROCESS ON *.* TO '<YOUR_DB_USERNAME>'@'%';(Optional) To view the wait-time data in New Relic platform, grant the following privileges to the monitoring user:
GRANT UPDATE ON performance_schema.setup_consumers TO '<YOUR_DB_USERNAME>'@'%';팁
This setting doesn't persist on RDS; the
events_waits_currentconsumer resets on every restart or failover. Granting this privilege lets the collector automatically re-enable it on reconnect; otherwise you'll need to re-run the enable statement after every restart.(Optional) To verify the connection and grants, run:
bash$mysql -h <YOUR_DB_HOST> -P <YOUR_DB_PORT> -u <YOUR_DB_USERNAME> -p -e "SELECT 1;"If the command completes without an error, the monitoring user, host, and port are all correct.
Configure NRDOT Collector
Configure the NRDOT Collector with your MySQL-specific settings.
This configuration focuses on essential MySQL monitoring with the nrmysql receiver only.
full configuration
This baseline configuration captures essential metrics. To see the complete metric catalog, refer to the configuration reference.
Create a configuration file named
mysql-config.yaml:bash$sudo nano /etc/nrdot-collector/mysql-config.yamlAdd the following configuration to the
mysql-config.yamlfile you created in the previous step.
receivers: nrmysql: endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>" transport: tcp username: "<YOUR_DB_USERNAME>" password: "<YOUR_DB_PASSWORD>" allow_native_passwords: true collection_interval: 15s initial_delay: 1s explain_mode: procedure statement_events: digest_text_limit: 4096 time_limit: 24h limit: 500 query_sample_collection: max_rows_per_query: 100 allowed_comment_keys: [nr_service_guid] top_query_collection: lookback_time: 60 max_query_sample_count: 5000 top_query_count: 200 collection_interval: 60s query_plan_cache_size: 1000 query_plan_cache_ttl: 1h allowed_comment_keys: [nr_service_guid] events: db.server.query_sample: enabled: true db.server.top_query: enabled: true db.server.query_plan: enabled: true resource_attributes: db.system.version: enabled: true metrics: mysql.query.count: enabled: true mysql.query.slow.count: enabled: true mysql.commands: enabled: true mysql.innodb.data_file.io: enabled: true
processors: batch:
exporters: otlp/newrelic: endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>" headers: api-key: "<YOUR_NEWRELIC_LICENSE_KEY>" compression: gzip retry_on_failure: enabled: true initial_interval: 5s max_interval: 30s max_elapsed_time: 300s
service: pipelines: metrics: receivers: [nrmysql] processors: [batch] exporters: [otlp/newrelic] logs: receivers: [nrmysql] processors: [batch] exporters: [otlp/newrelic]팁
This configuration omits the optional database and tls fields. By default, the receiver monitors every database the monitoring user can access, and connects without TLS. Most Amazon RDS/Aurora instances enforce SSL/TLS, so you'll likely need to enable it. See Enable detailed insights for the tls block and ca_file setup.
Configuration parameters
The following table describes the key configuration parameters for the nrmysql receiver:
| Parameter | Description |
|---|---|
<YOUR_DB_HOST> | Your RDS MySQL endpoint. For example, mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com |
<YOUR_DB_PORT> | Enter your MySQL port number. The default value is 3306. |
<YOUR_DB_USERNAME> | Enter the username of the monitoring user you created in Configure database user. |
<YOUR_DB_PASSWORD> | Enter the password of the monitoring user you created in Configure database user. |
<YOUR_NEWRELIC_OTLP_ENDPOINT> | Enter the New Relic OTLP endpoint. For more information, see New Relic OTLP endpoints. |
<YOUR_NEWRELIC_LICENSE_KEY> | Enter your New Relic license key. |
transport | Default value is set to tcp to connect over the network. |
collection_interval | Enter the interval between metric scrapes. Default: 15s. |
explain_mode | Default value is set to inline. Set the value to procedure to collect query plans for write statements without granting DML privileges to the monitoring user. See Query plans for write statements. |
Validate NRDOT Collector configuration
Update the config path to point to your new
mysql-config.yamlfile:bash$sudo sed -i 's|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/config.yaml"|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/mysql-config.yaml"|' /etc/nrdot-collector/nrdot-collector.confValidate the NRDOT Collector configuration to ensure it's correctly formatted and will work properly:
bash$sudo /usr/bin/nrdot-collector validate --config=/etc/nrdot-collector/mysql-config.yaml
팁
You can also:
- Configure multiple receivers: To monitor multiple MySQL instances from one collector.
- Link your MySQL database with APM: To correlate your application performance with database operations. This allows you to see exactly which applications are generating specific database workloads.
- Set up secret management: To securely manage sensitive information, such as database credentials. This helps to enhance the security of your monitoring setup by avoiding hardcoding sensitive data in configuration files.
Restart NRDOT Collector
After updating your configuration, restart the NRDOT Collector service:
bash$sudo systemctl restart nrdot-collector팁
Always restart the NRDOT Collector service after making configuration changes to ensure the new settings take effect.
To verify that the collector is running properly, check the service status:
bash$sudo systemctl status nrdot-collector
Find and use your data
Once your data is being collected, you can access comprehensive RDS MySQL database monitoring through the New Relic UI.
To find your RDS MySQL database entity in New Relic:
- Go to https://one.newrelic.com > All Capabilities > Databases.
- From the Entity type dropdown, select MySQL instance, then click Apply.
- Select your RDS MySQL database from the list of entities.
Amazon RDS limitations
The events_waits_current Performance Schema consumer is required for mysql.events_waits_current.timer_wait and wait-based dashboards. The mysql8.0 RDS parameter group family doesn't expose performance_schema_consumer_* parameters, preventing persistent configuration. This consumer must be enabled at runtime, as the setting resets after every database restart or failover.