1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
#!/bin/bash
# Script to check that mysqlrouter_exporter connects to mysqlrouter and
# provides metrics after a basic configuration.
set -ex
# Create a basic mysqlrouter config file that connects to local mysql-server
create_mysqlrouter_config_file() {
mkdir -p /etc/mysqlrouter/
cat <<EOF > /etc/mysqlrouter/mysqlrouter.conf
[DEFAULT]
logging_folder = /var/log/mysqlrouter
[logger]
level = INFO
[routing:main]
bind_address = 127.0.0.1
bind_port = 3310
destinations=127.0.0.1:3306
mode = read-write
routing_strategy = round-robin
[keepalive]
interval = 60
[http_server]
port=8080
[rest_api]
EOF
}
# Create systemd service file for mysqlrouter
create_mysqlrouter_service_file() {
cat <<EOF > /etc/systemd/system/mysqlrouter.service
[Unit]
Description=MySQL Router
After=network.target
[Service]
Type=exec
ExecStart=mysqlrouter
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
}
# Update exporter defaults file to point to local MySQL Router
update_mysqlrouter_exporter_defaults() {
sed -i "s|MYSQLROUTER_EXPORTER_URL='.*'|MYSQLROUTER_EXPORTER_URL='http://127.0.0.1:8080'|" /etc/default/prometheus-mysqlrouter-exporter
sed -i "s|MYSQLROUTER_EXPORTER_SERVICE_NAME='.*'|MYSQLROUTER_EXPORTER_SERVICE_NAME='mysqlrouter'|" /etc/default/prometheus-mysqlrouter-exporter
}
# Start mysql router and mysqlrouter exporter
start_routing() {
systemctl start mysqlrouter
systemctl start prometheus-mysqlrouter-exporter
sleep 60 # Avoid race condition with service startup
}
create_mysqlrouter_config_file
create_mysqlrouter_service_file
update_mysqlrouter_exporter_defaults
start_routing
curl -s http://localhost:9152/metrics
METRICS_FOUND=$?
if [ "$METRICS_FOUND" != 0 ]; then
echo "Error: mysqlrouter_exporter metrics not found."
exit 1
fi
|