Skip to main content
Version: NG-2.16

Azure MySQL Database

Introduction

Azure MySQL Database monitoring involves the continuous collection, analysis, and visualization of performance, health, availability, and usage metrics from the Azure Database for MySQL service. This monitoring ensures optimal performance, helps identify potential issues proactively, and supports capacity planning and compliance efforts.

Getting Started

Compatibility

The Azure MySQL O11ySource is designed to work with all versions greater than or equal to 5.7, and it has been tested with Azure MySQL 8.0.

Qcache queries will not work with version 8.x, as the feature has been revoked.

Data Collection Method

The Azure MySQL O11ySource is configured to collect various kinds of metrics related to Azure MySQL Performance & Azure MySQL Engine Performance.

vuSmartMaps uses an internal agent to collect Azure MySQL Performance Metrics, Azure MySQL Engine Performance Metrics

Prerequisites

Dependent Configuration

To configure this O11ySource, create a 'credential' of type 'user' under the 'Definition' tab.

Inputs for Configuring Data Source

  • Instance Name: Please enter the name of the AzureMySQL instance. This should be a unique identifier for the specific AzureMySQL deployment you want to monitor.
  • DB Details: Please provide the details of DB
  • Server Name: Host name needs to be a valid FQDN
  • Port: Enter a valid port
  • Credential: This field is required
  • Secure Transport: This is optional
  • Metrics Collection Queries: These queries are utilized for AzureMYSQL server's metrics.
  • Query: Choose the Queries
  • Polling Interval [seconds]: How frequently data is gathered. interval should be between 180 -.86400 seconds

Firewall Requirement

To collect data from this O11ySource, ensure the following ports are opened:

Source IPDestination IPDestination PortProtocolDirection
vuSmartMaps IPIP address of the Azure MySQL server3306*TCPOutbound
IP address of the Azure MySQL servervuSmartMaps Kafka Broker IP9092*TCPInbound

*Before providing the firewall requirements, please update the port based on the customer environment.

Configuring the Target

Configure Metrics Collection from Azure MySQL Server

  • On each Azure MySQL server, create a database user for the vuSmartMaps Agent.
  • *For Azure MySQL 5.6 or Azure MySQL 5.7 create the vunet user with the following command:
CREATE USER 'vunet'@'%' IDENTIFIED BY '<UNIQUEPASSWORD>';
  • *or Azure MySQL 8.0 or greater, create the vunet user with the native password hashing method:
CREATE USER 'vunet'@'%' IDENTIFIED WITH Azure MySQL_native_password '<UNIQUEPASSWORD>';
  • The vuSmartMaps agent required the below permissions to collect the metrics from Azure MySQL. Grant the vunet user only the following limited privileges:
  • *Grant replication client with the following command:
GRANT REPLICATION CLIENT ON *.* TO 'vunet'@'%';
  • *Grant replication client with the following command:
GRANT PROCESS ON *.* TO 'vunet'@'%';
  • *Grant replication client with the following command:
GRANT SELECT ON performance_schema.* TO 'vunet'@'%';
GRANT SELECT ON sys.schema_unused_indexes TO 'vunet'@'%';
GRANT SELECT ON sys.x$statements_with_full_table_scans TO 'vunet'@'%';

Configuration Steps

  • Enable the AzureMYSQL O11ySource.
  • Select the Sources tab and press the + button to add AzureMYSQL instance that has to be monitored.
  • Set up metrics collection configurations. The O11ySource already provides predefined metric collection queries. Users have the flexibility to adjust query intervals, modify existing queries, and introduce new queries as needed.
  • Once all the required details are filled, click on Save and Continue

Metrics Collected

NameDescriptionData Type
timestampTimestamp of metric collectionDateTime64
tenant_idIdentifier for the tenant (multi-tenant support)LowCardinality(String)
bu_idBusiness unit identifierLowCardinality(String)
hostHostname of the monitored MySQL instanceLowCardinality(String)
typeMetric type or categoryLowCardinality(String)
ClusterIDCluster identifierLowCardinality(String)
DBNameName of the databaseLowCardinality(String)
uniqueIdUnique identifier for the metric source or queryLowCardinality(String)
Com_deleteTotal number of DELETE operationsFloat64
Com_selectTotal number of SELECT operationsFloat64
Com_insertTotal number of INSERT operationsFloat64
Com_updateTotal number of UPDATE operationsFloat64
Com_delete_multiDELETE operations that delete multiple rowsFloat64
Com_insert_selectINSERT ... SELECT operationsFloat64
Com_replace_selectREPLACE ... SELECT operationsFloat64
Com_update_multiUPDATE operations that update multiple rowsFloat64
Com_replaceREPLACE statement operationsFloat64
Com_loadNumber of LOAD DATA INFILE operationsFloat64
Com_delete_diffDelta of Com_delete since last intervalFloat64
Com_insert_diffDelta of Com_insert since last intervalFloat64
Com_select_diffDelta of Com_select since last intervalFloat64
Com_update_diffDelta of Com_update since last intervalFloat64
Com_delete_multi_diffDelta of Com_delete_multi since last intervalFloat64
Com_insert_select_diffDelta of Com_insert_select since last intervalFloat64
Com_replace_select_diffDelta of Com_replace_select since last intervalFloat64
Com_update_multi_diffDelta of Com_update_multi since last intervalFloat64
Com_replace_diffDelta of Com_replace since last intervalFloat64
Com_load_diffDelta of Com_load since last intervalFloat64
timestampTimestamp when the metric was collectedDateTime64
tenant_idIdentifier for the tenant (for multi-tenant architecture support)LowCardinality(String)
bu_idBusiness unit identifierLowCardinality(String)
hostHostname of the MySQL instance being monitoredLowCardinality(String)
typeType/category of the metricLowCardinality(String)
ClusterIDCluster identifierLowCardinality(String)
DBNameName of the database where the query was executedLowCardinality(String)
table_scan_querySQL text or fingerprint of the query performing a full table scanString
table_scan_dbDatabase on which the full table scan was detectedString
table_scan_exec_countNumber of times the table scan query was executedFloat64
table_scan_total_latencyTotal latency in microseconds across all executions of the table scan queryFloat64
table_scan_no_index_used_pctPercentage of executions where no index was usedString
table_scan_row_sent_avgAverage number of rows returned per executionString
table_scan_rows_examinedTotal number of rows examined across all executionsString
table_scan_first_seenTimestamp when the table scan query was first seenDateTime64
table_scan_last_seenTimestamp when the table scan query was last seenDateTime64
timestampTimestamp when the metric was collectedDateTime64
tenant_idIdentifier for the tenant (multi-tenant architecture support)LowCardinality(String)
bu_idBusiness unit identifierLowCardinality(String)
hostHostname of the database serverLowCardinality(String)
typeType/category of the metricLowCardinality(String)
ClusterIDIdentifier for the database clusterLowCardinality(String)
DBNameName of the database to which the object belongsLowCardinality(String)
total_size_mbTotal size of the object (e.g., table or index) in megabytesFloat64
object_schemaSchema (database) where the object is locatedString
object_nameName of the database object (typically a table name)String
index_nameName of the index associated with the object (if applicable)String
timestampTimestamp of when the metric was collectedDateTime64
tenant_idIdentifier for the tenantLowCardinality(String)
bu_idBusiness unit identifierLowCardinality(String)
hostHostname or instance nameLowCardinality(String)
typeType of monitored entityLowCardinality(String)
ClusterIDUnique identifier for the clusterLowCardinality(String)
DBNameDatabase name being monitoredLowCardinality(String)
uniqueIdUnique ID combining various identifying elementsLowCardinality(String)
Max_connectionsMaximum permitted simultaneous client connectionsFloat64
Key_buffer_sizeSize of the buffer used for index blocksFloat64
Max_prepared_stmt_countLimit on the total number of prepared statementsFloat64
Table_open_cacheNumber of open tables the server can cacheFloat64
Thread_cache_sizeNumber of threads to cache for reuseFloat64
Aborted_clientsNumber of connections aborted by the clientFloat64
Aborted_connectsFailed attempts to connect to the MySQL serverFloat64
Binlog_cache_disk_useBinary log cache overflowed to diskFloat64
Binlog_cache_useNumber of binary log cache usesFloat64
Bytes_receivedTotal bytes received from all clientsFloat64
Bytes_sentTotal bytes sent to all clientsFloat64
Threads_cachedNumber of threads in the thread cacheFloat64
Threads_connectedNumber of currently open connectionsFloat64
Threads_createdNumber of threads created to handle connectionsFloat64
Threads_runningNumber of threads actively executing queriesFloat64
ConnectionsTotal connection attempts to the serverFloat64
Created_tmp_disk_tablesTemporary tables created on diskFloat64
Created_tmp_filesNumber of temporary files created by the serverFloat64
Created_tmp_tablesNumber of in-memory temporary tables createdFloat64
Flush_commandsNumber of FLUSH commands executedFloat64
Max_used_connectionsMaximum number of connections used at one timeFloat64
Open_filesNumber of open filesFloat64
Open_streamsNumber of open streams (mainly used for logging)Float64
Opened_tablesNumber of tables openedFloat64
Open_tablesNumber of tables currently openFloat64
Table_locks_waitedNumber of times a table lock couldn't be acquired immediatelyFloat64
UptimeServer uptime in secondsFloat64
QueriesNumber of statements executed by the serverFloat64
QuestionsNumber of client queries receivedFloat64
Connection_errors_max_connectionsFailed connections due to max_connections reachedFloat64
Connection_errors_internalConnection errors caused by internal issuesFloat64
Max_used_connections_timestampTimestamp when Max_used_connections was last reachedString
Key_readsNumber of physical reads of key blocksFloat64
Key_read_requestsNumber of requests to read a key blockFloat64
Prepared_stmt_countCurrent number of prepared statementsFloat64
Slow_queriesNumber of queries longer than long_query_timeFloat64
Key_write_requestsRequests to write a key blockFloat64
Key_writesPhysical writes of key blocks to diskFloat64
Handler_commitNumber of internal COMMITsFloat64
Handler_deleteNumber of times rows were deleted from tablesFloat64
Handler_prepareNumber of calls to prepare a statementFloat64
Handler_read_firstNumber of times the first entry was read from an indexFloat64
Handler_read_keyNumber of requests to read a row based on a keyFloat64
Handler_read_nextNumber of requests to read the next row in key orderFloat64
Handler_read_prevNumber of requests to read the previous row in key orderFloat64
Handler_read_rndNumber of requests to read a row based on a fixed positionFloat64
Handler_read_rnd_nextNumber of requests to read the next row in the data fileFloat64
Handler_rollbackNumber of internal rollbacks performedFloat64
Handler_updateNumber of times a row was updated in a tableFloat64
Handler_writeNumber of times a row was inserted into a tableFloat64
SELECT_full_joinNumber of joins without indexes (full joins)Float64
SELECT_full_range_joinNumber of joins using a range search on a reference tableFloat64
SELECT_rangeNumber of joins that used ranges on the first tableFloat64
SELECT_range_checkJoins without keys where each row is checkedFloat64
SELECT_scanNumber of joins that did a full table scanFloat64
Sort_merge_passesNumber of merge passes the sort algorithm had to doFloat64
Sort_rangeNumber of sorts using rangesFloat64
Sort_rowsNumber of sorted rowsFloat64
Sort_scanNumber of sorts done by scanning the tableFloat64
Table_locks_immediateNumber of table locks acquired immediatelyFloat64
Table_open_cache_hitsNumber of hits in the table open cacheFloat64
Table_open_cache_missesNumber of misses in the table open cacheFloat64
Aborted_clients_diffDelta of aborted clients between collection intervalsFloat64
Aborted_connects_diffDelta of aborted connects between collection intervalsFloat64
Binlog_cache_use_diffDelta of binlog cache usesFloat64
Bytes_received_diffDelta of bytes receivedFloat64
Bytes_sent_diffDelta of bytes sentFloat64
Connections_diffDelta of connection countFloat64
Created_tmp_disk_tables_diffDelta of temporary tables created on diskFloat64
Created_tmp_files_diffDelta of temporary files createdFloat64
Created_tmp_tables_diffDelta of in-memory temporary tables createdFloat64
Flush_commands_diffDelta of FLUSH commands executedFloat64
Queries_diffDelta of total queriesFloat64
Table_locks_waited_diffDelta of table locks waitedFloat64
Questions_diffDelta of client queriesFloat64
Connection_errors_max_connections_diffDelta of max_connections errorsFloat64
Connection_errors_internal_diffDelta of internal connection errorsFloat64
Slow_queries_diffDelta of slow queriesFloat64
Handler_commit_diffDelta of internal commitsFloat64
Handler_delete_diffDelta of row deletesFloat64
Handler_prepare_diffDelta of prepared statementsFloat64
Handler_read_first_diffDelta of first index readsFloat64
Handler_read_key_diffDelta of index key readsFloat64
Handler_read_next_diffDelta of next row index readsFloat64
Handler_read_prev_diffDelta of previous row index readsFloat64
Handler_read_rnd_diffDelta of random row readsFloat64
Handler_read_rnd_next_diffDelta of next row data file readsFloat64
Handler_rollback_diffDelta of rollbacksFloat64
Handler_update_diffDelta of row updatesFloat64
Handler_write_diffDelta of row insertsFloat64
SELECT_full_join_diffDelta of full joinsFloat64
SELECT_full_range_join_diffDelta of full range joinsFloat64
SELECT_range_diffDelta of range joinsFloat64
SELECT_range_check_diffDelta of range check joinsFloat64
SELECT_scan_diffDelta of full scansFloat64
Sort_merge_passes_diffDelta of sort merge passesFloat64
Sort_range_diffDelta of range sortsFloat64
Sort_rows_diffDelta of sorted rowsFloat64
Sort_scan_diffDelta of full table sortsFloat64
Table_locks_immediate_diffDelta of immediate table locksFloat64
Table_open_cache_hits_diffDelta of table open cache hitsFloat64
Table_open_cache_misses_diffDelta of table open cache missesFloat64
timestampTimestamp of the metric collectionDateTime64
tenant_idTenant or customer identifierLowCardinality(String)
bu_idBusiness unit identifierLowCardinality(String)
hostHostname of the MySQL server instanceLowCardinality(String)
typeType of service or metric sourceLowCardinality(String)
ClusterIDUnique identifier for the MySQL clusterLowCardinality(String)
DBNameName of the database instanceLowCardinality(String)
uniqueIdUnique identifier combining host, DB, etc. for deduplicationLowCardinality(String)
Query_cache_sizeTotal allocated size of the query cache in bytesFloat64
Qcache_hitsNumber of times a query result was served from the cacheFloat64
Qcache_insertsNumber of queries added to the cacheFloat64
Qcache_lowmem_prunesNumber of queries removed due to low memoryFloat64
Qcache_total_blocksTotal number of blocks in the query cacheFloat64
Qcache_free_blocksNumber of free memory blocks in the query cacheFloat64
Qcache_free_memoryTotal free memory in the query cache (bytes)Float64
Qcache_not_cachedNumber of queries that were not cached due to various reasonsFloat64
Qcache_queries_in_cacheCurrent number of queries stored in the query cacheFloat64
Qcache_not_cached_diffDelta of non-cached queries since the last checkFloat64
Qcache_queries_in_cache_diffDelta of queries currently in the cache since the last checkFloat64
timestampTimestamp of the metric collection.DateTime64
tenant_idIdentifier for the tenant.LowCardinality(String)
bu_idIdentifier for the business unit.LowCardinality(String)
hostHostname of the database server.LowCardinality(String)
typeType of source (e.g., metric category).LowCardinality(String)
ClusterIDIdentifier for the database cluster.LowCardinality(String)
DBNameName of the database.LowCardinality(String)
uniqueIdUnique identifier for the record.LowCardinality(String)
Innodb_ibuf_merges_delete_markMerges in the insert buffer for delete mark operations.Float64
Innodb_ibuf_merges_deleteMerges in the insert buffer for actual delete operations.Float64
Innodb_ibuf_merges_insertMerges in the insert buffer for insert operations.Float64
Innodb_ibuf_mergesTotal number of insert buffer merges.Float64
Innodb_os_log_pending_fsyncsNumber of pending fsyncs on redo logs.Float64
Innodb_os_log_pending_writesNumber of redo log writes pending.Float64
Innodb_rwlock_s_spin_waitsCount of spin waits on shared read-write locks.Float64
Innodb_rwlock_x_spin_waitsCount of spin waits on exclusive read-write locks.Float64
Innodb_rwlock_s_spin_roundsRounds for spin waits on shared RW locks.Float64
Innodb_rwlock_x_spin_roundsRounds for spin waits on exclusive RW locks.Float64
Innodb_rwlock_s_os_waitsOS waits on shared RW locks.Float64
Innodb_rwlock_x_os_waitsOS waits on exclusive RW locks.Float64
Innodb_buffer_pool_pages_totalTotal number of pages in the buffer pool.Float64
Innodb_buffer_pool_pages_dataNumber of pages containing data (not free or dirty).Float64
Innodb_page_sizeInnoDB page size in bytes.Float64
Innodb_buffer_pool_pages_dirtyNumber of modified (dirty) pages in buffer pool.Float64
Innodb_row_lock_current_waitsCurrent number of row lock waits.Float64
Innodb_data_writesNumber of data writes to disk.Float64
Innodb_data_readsNumber of data reads from disk.Float64
Innodb_os_log_fsyncsNumber of fsyncs on redo log files.Float64
Innodb_row_lock_timeTotal time spent waiting for row locks (ms).Float64
Innodb_row_lock_waitsTotal number of row lock wait occurrences.Float64
Innodb_data_fsyncsNumber of fsync operations on data files.Float64
Innodb_data_pending_fsyncsNumber of pending fsync operations.Float64
Innodb_data_pending_readsNumber of pending read I/O operations.Float64
Innodb_data_pending_writesNumber of pending write I/O operations.Float64
Innodb_data_readTotal bytes read from data files.Float64
Innodb_data_writtenTotal bytes written to data files.Float64
Innodb_dblwr_pages_writtenPages written by the doublewrite buffer.Float64
Innodb_dblwr_writesDoublewrite operations executed.Float64
Innodb_buffer_pool_pages_flushedPages flushed from the buffer pool.Float64
Innodb_buffer_pool_pages_freeNumber of free pages in the buffer pool.Float64
Innodb_buffer_pool_read_aheadPages read in advance by read-ahead algorithm.Float64
Innodb_buffer_pool_read_ahead_evictedPages evicted without being used after read-ahead.Float64
Innodb_buffer_pool_read_ahead_rndRandom read-ahead pages requested.Float64
Innodb_buffer_pool_wait_freeNumber of waits for buffer pool pages to be freed.Float64
Innodb_buffer_pool_write_requestsWrite requests to buffer pool pages.Float64
Innodb_log_waitsWaits due to insufficient log buffer space.Float64
Innodb_log_write_requestsRequests to write to the log buffer.Float64
Innodb_log_writesPhysical writes to the log file.Float64
Innodb_os_log_writtenBytes written to the redo log.Float64
Innodb_pages_createdPages created in the buffer pool.Float64
Innodb_pages_readPages read from the disk.Float64
Innodb_pages_writtenPages written to the disk.Float64
Innodb_rows_deletedNumber of rows deleted.Float64
Innodb_rows_insertedNumber of rows inserted.Float64
Innodb_rows_readNumber of rows read.Float64
Innodb_rows_updatedNumber of rows updated.Float64
Innodb_buffer_pool_readsNumber of reads from disk into the buffer pool.Float64
Innodb_buffer_pool_read_requestsNumber of logical read requests from the buffer pool (i.e., reads that didn't need a disk access).Float64
Innodb_buffer_pool_bytes_dataTotal bytes used for data pages in the buffer pool.Float64
Innodb_buffer_pool_bytes_dirtyTotal bytes of dirty (modified but not flushed) pages in the buffer pool.Float64
Innodb_buffer_pool_sizeTotal size (in pages) of the InnoDB buffer pool.Float64
Innodb_ibuf_merges_delete_mark_diffChange in number of delete mark merges in insert buffer.Float64
Innodb_ibuf_merges_delete_diffChange in delete merges from insert buffer.Float64
Innodb_ibuf_merges_insert_diffChange in insert merges from insert buffer.Float64
Innodb_ibuf_merges_diffTotal change in insert buffer merges.Float64
Innodb_os_log_pending_fsyncs_diffDelta in pending fsyncs on redo logs.Float64
Innodb_os_log_pending_writes_diffDelta in pending redo log writes.Float64
Innodb_rwlock_s_spin_waits_diffDelta in spin waits for shared RW locks.Float64
Innodb_rwlock_x_spin_waits_diffDelta in spin waits for exclusive RW locks.Float64
Innodb_rwlock_s_spin_rounds_diffDelta in spin rounds for shared RW locks.Float64
Innodb_rwlock_x_spin_rounds_diffDelta in spin rounds for exclusive RW locks.Float64
Innodb_rwlock_s_os_waits_diffDelta in OS waits for shared RW locks.Float64
Innodb_rwlock_x_os_waits_diffDelta in OS waits for exclusive RW locks.Float64
Innodb_buffer_pool_read_requests_diffDelta in logical read requests.Float64
Innodb_buffer_pool_reads_diffDelta in physical reads from disk into buffer pool.Float64
Innodb_page_size_diffChange in InnoDB page size (usually static, used for alerting on config drift).Float64
Innodb_pages_created_diffDelta in pages created in buffer pool.Float64
Innodb_pages_read_diffDelta in pages read from disk.Float64
Innodb_pages_written_diffDelta in pages written to disk.Float64
Innodb_data_writes_diffDelta in data writes to disk.Float64
Innodb_data_reads_diffDelta in data reads from disk.Float64
Innodb_data_fsyncs_diffDelta in fsyncs on data files.Float64
Innodb_data_read_diffDelta in bytes read.Float64
Innodb_data_written_diffDelta in bytes written.Float64
Innodb_buffer_pool_pages_flushed_diffDelta in buffer pool pages flushed.Float64
Innodb_buffer_pool_wait_free_diffDelta in waits for buffer pool free pages.Float64
Innodb_buffer_pool_write_requests_diffDelta in write requests to buffer pool.Float64
Innodb_log_waits_diffDelta in log waits (log buffer full).Float64
Innodb_log_write_requests_diffDelta in log write requests.Float64
Innodb_log_writes_diffDelta in physical log writes.Float64
timestampTimestamp when the process data was collected.DateTime64
tenant_idIdentifier for the tenant (multi-tenant context).LowCardinality(String)
bu_idIdentifier for the business unit.LowCardinality(String)
hostHostname of the MySQL server instance.LowCardinality(String)
typeType of the source (e.g., metric, log, etc.).LowCardinality(String)
ClusterIDIdentifier for the cluster where the MySQL instance is running.LowCardinality(String)
DBNameName of the database from which the data is collected.LowCardinality(String)
IDUnique thread or connection ID assigned by MySQL.Float64
USERMySQL user associated with the connection.String
HOSTHost and port from which the client is connected.String
DBDefault database currently in use by the connection.String
COMMANDType of command the connection is executing (e.g., Sleep, Query, Connect).String
TIMETime in seconds the thread has been in its current state.Float64
STATEHuman-readable status of the thread (e.g., "Waiting for table metadata lock").String
INFOSQL query being executed, if applicable. May be NULL if not running a query.String
EXECUTION_ENGINEThe execution engine used (e.g., "SQL", "SPJ", may be empty in standard MySQL).String