MySQL Monitor
Checks MySQL/MariaDB connectivity by executing a health query.
Basic Example
yaml
apiVersion: monitoring.yuptime.io/v1
kind: Monitor
metadata:
name: mysql-health
namespace: yuptime
spec:
type: mysql
schedule:
intervalSeconds: 60
timeoutSeconds: 10
target:
mysql:
host: "mysql.database.svc.cluster.local"
port: 3306
database: "myapp"
credentialsSecretRef:
name: mysql-credentials
usernameKey: username
passwordKey: passwordTarget Configuration
yaml
target:
mysql:
host: "mysql.example.com" # Required: server host
port: 3306 # Optional: port (default: 3306)
database: "myapp" # Optional: database name
credentialsSecretRef:
name: mysql-credentials # Required: secret name
usernameKey: username # Optional (default: "username")
passwordKey: password # Optional (default: "password")
healthQuery: "SELECT 1" # Optional: query (default: "SELECT 1")
tls:
enabled: false # Optional: enable TLSCredentials Secret
yaml
apiVersion: v1
kind: Secret
metadata:
name: mysql-credentials
namespace: yuptime
type: Opaque
stringData:
username: monitor_user
password: secure_passwordCreate a read-only monitoring user:
sql
CREATE USER 'monitor_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT ON *.* TO 'monitor_user'@'%';Examples
Basic Health Check
yaml
apiVersion: monitoring.yuptime.io/v1
kind: Monitor
metadata:
name: mysql-primary
namespace: yuptime
spec:
type: mysql
schedule:
intervalSeconds: 30
timeoutSeconds: 10
target:
mysql:
host: "mysql.database.svc.cluster.local"
port: 3306
credentialsSecretRef:
name: mysql-credentialsAmazon RDS
yaml
apiVersion: monitoring.yuptime.io/v1
kind: Monitor
metadata:
name: rds-mysql
namespace: yuptime
spec:
type: mysql
schedule:
intervalSeconds: 60
timeoutSeconds: 15
target:
mysql:
host: "mydb.xxxx.us-east-1.rds.amazonaws.com"
port: 3306
database: "production"
credentialsSecretRef:
name: rds-credentials
tls:
enabled: trueWith Alerting
yaml
apiVersion: monitoring.yuptime.io/v1
kind: Monitor
metadata:
name: mysql-production
namespace: yuptime
spec:
type: mysql
schedule:
intervalSeconds: 30
timeoutSeconds: 10
target:
mysql:
host: "mysql.production.svc.cluster.local"
credentialsSecretRef:
name: mysql-credentials
alertmanagerUrl: "http://alertmanager.monitoring:9093/api/v2/alerts"
alerting:
notifyOn:
down: true
up: falseTroubleshooting
Connection refused: MySQL not running or wrong host/port Access denied: Wrong credentials or user doesn't exist Unknown database: Database doesn't exist