This document explains how to monitor MySQL database metrics using OpenTelemetry Collector and SigNoz.
Pre-requisites
- MySQL database server running and accessible
Setup
Step 1: Setup OTel Collector
OpenTelemetry Collector is required to collect metrics from MySQL. Please refer to this documentation to setup the agent.
Step 2: Configuring the MySQL receiver
You will need to configure the MySQL receiver for collecting MySQL metrics. The receiver collects various performance metrics from your MySQL database.
Edit the OTel Collector config file to configure the mysql receiver as shown below:
receivers:
mysql:
endpoint: <mysql-endpoint>
username: <your-root-username>
password: <your-root-password>
collection_interval: 10s
initial_delay: 10sConfiguration parameters:
endpoint: MySQL server endpoint (required)username: MySQL username (required)password: MySQL password (required)
You can find more details about the MySQL receiver configuration in the receiver documentation.
Also collect query samples and top queries
Beyond metrics, the mysql receiver can emit query-monitoring logs from performance_schema: db.server.query_sample (statements running now) and db.server.top_query (most resource-intensive queries). To collect MySQL's error, slow, and general log files instead, use the filelog approach.
Enable the events on the receiver (requires performance_schema):
receivers:
mysql:
# ...existing metrics config...
events:
db.server.query_sample:
enabled: true
db.server.top_query:
enabled: true
service:
pipelines:
logs:
receivers: [mysql]The receiver's logs signal is at development stability, so treat it as experimental.
Step 3: Configuring the pipelines
Once the receiver is configured, you need to enable it in the pipelines section of the OTel Collector config file:
service:
pipelines:
metrics:
receivers: [mysql]Now, run the OpenTelemetry collector and you should see the metrics coming in SigNoz.
Visualizing MySQL Metrics
Once you have configured OTel Collector to send MySQL metrics to SigNoz, you can start visualizing the metrics in the metrics explorer.
You can also use the pre-configured MySQL dashboard to monitor critical MySQL metrics.

Recommended. Uses the V2 dashboard schema and needs SigNoz v0.135.0 or newer.
Import it in SigNoz with Dashboards → + New dashboard → Import JSON. Import guide
Monitoring Multiple MySQL Instances
You can monitor multiple MySQL databases by adding multiple receivers with different names:
receivers:
mysql:
endpoint: <endpoint-database-1>
username: <username-database-1>
password: <password-database-1>
collection_interval: 10s
initial_delay: 10s
mysql/production:
endpoint: <endpoint-database-2>
username: <username-database-2>
password: <password-database-2>
collection_interval: 10s
initial_delay: 10s
service:
pipelines:
metrics:
receivers: [mysql, mysql/production]
processors: [resource/env, batch]
exporters: [otlp]Troubleshooting
Common Issues
-
No metrics appearing in SigNoz
- Verify MySQL server is running and accessible
- Check MySQL credentials and user permissions
- Verify OTel Collector logs for connection errors
- Ensure MySQL is accepting connections on the specified port
-
Authentication errors
- Verify MySQL username and password are correct
- Check if the MySQL user has appropriate privileges
- Ensure the user can connect from the OTel Collector host
-
Connection timeout errors
- Check network connectivity between OTel Collector and MySQL
- Verify firewall rules allow connections on MySQL port (default 3306)
- Increase timeout value in receiver configuration if needed
-
Missing specific metrics
- Some metrics are only available in MySQL Enterprise edition
- Verify MySQL version compatibility with the receiver
- Check if specific features (like performance schema) are enabled