1
0
mirror of git://f0xx.org/ac/ac-deploy synced 2026-07-29 05:59:05 +03:00
Files
ac-deploy/monitoring/artc0/mysqld-exporter-docker.sh
2026-06-28 22:01:59 +02:00

54 lines
1.5 KiB
Bash

#!/bin/sh
# Deploy mysqld_exporter as Docker container on artc0
# Run once as root / sudo after creating the MariaDB monitoring user below.
#
# PREREQUISITE — run in mysql:
# CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'ExporterPass2026!' WITH MAX_USER_CONNECTIONS 3;
# GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
# FLUSH PRIVILEGES;
#
# Then run this script.
set -e
CONTAINER_NAME="mysqld_exporter"
CNF_FILE="/etc/mysqld-exporter.cnf"
# Write config file if not present
if [ ! -f "$CNF_FILE" ]; then
cat > "$CNF_FILE" << 'EOF'
[client]
user=exporter
password=ExporterPass2026!
socket=/run/mysqld/mysqld.sock
EOF
chmod 644 "$CNF_FILE"
fi
# Get socket GID to allow container user to access it
SOCK_GID=$(stat -c '%g' /run/mysqld/mysqld.sock)
# Stop existing container if running
docker stop "$CONTAINER_NAME" 2>/dev/null || true
docker rm "$CONTAINER_NAME" 2>/dev/null || true
# Run with Unix socket mount — MariaDB uses skip-networking (no TCP)
docker run -d \
--name "$CONTAINER_NAME" \
--restart unless-stopped \
--user "65534:${SOCK_GID}" \
-v "${CNF_FILE}:/etc/.my.cnf:ro" \
-v "/run/mysqld/mysqld.sock:/run/mysqld/mysqld.sock:ro" \
-p 9104:9104 \
prom/mysqld-exporter:latest \
--config.my-cnf=/etc/.my.cnf \
--collect.info_schema.innodb_metrics \
--collect.global_status \
--collect.global_variables \
--web.listen-address=":9104"
echo "mysqld_exporter started, listening on :9104"
sleep 3
docker logs "$CONTAINER_NAME" 2>&1 | tail -5
curl -s http://localhost:9104/metrics | grep 'mysql_up'