Files
ljwx-k8s/import-mysql-dashboard.sh
2026-02-20 22:50:45 +08:00

72 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# 导入 MySQL Dashboard 到 Grafana
# 使用方法: ./import-mysql-dashboard.sh
set -e
echo "=== 导入 MySQL Dashboard 到 Grafana ==="
echo ""
# 检查是否已经有 port-forward 在运行
PORT_FORWARD_PID=$(lsof -ti:30300 2>/dev/null || echo "")
if [ -z "$PORT_FORWARD_PID" ]; then
echo "启动 Grafana port-forward..."
kubectl port-forward -n monitoring svc/grafana 30300:80 > /dev/null 2>&1 &
PORT_FORWARD_PID=$!
echo "Port-forward PID: $PORT_FORWARD_PID"
sleep 3
CLEANUP_PORT_FORWARD=true
else
echo "检测到已有 port-forward 运行中 (PID: $PORT_FORWARD_PID)"
CLEANUP_PORT_FORWARD=false
fi
# 清理函数
cleanup() {
if [ "$CLEANUP_PORT_FORWARD" = true ] && [ -n "$PORT_FORWARD_PID" ]; then
echo ""
echo "清理 port-forward..."
kill $PORT_FORWARD_PID 2>/dev/null || true
fi
}
trap cleanup EXIT
echo ""
echo "1. 提取 Dashboard JSON..."
kubectl get configmap grafana-dashboard-mysql -n monitoring \
-o jsonpath='{.data.mysql-dashboard\.json}' > /tmp/mysql-dashboard.json
echo "2. 导入到 Grafana..."
RESPONSE=$(curl -s -X POST \
-H "Content-Type: application/json" \
-u "admin:admin123" \
-d @/tmp/mysql-dashboard.json \
http://localhost:30300/api/dashboards/db)
echo ""
if echo "$RESPONSE" | grep -q '"status":"success"'; then
echo "✓ Dashboard 导入成功!"
# 提取 dashboard UID
DASHBOARD_UID=$(echo "$RESPONSE" | grep -o '"uid":"[^"]*"' | head -1 | cut -d'"' -f4)
echo ""
echo "Dashboard 访问地址:"
echo " http://localhost:30300/d/${DASHBOARD_UID}/mysql-database-monitoring"
echo ""
echo "或者在 Grafana 中搜索: MySQL Database Monitoring"
echo ""
else
echo "✗ 导入失败"
echo "响应: $RESPONSE"
exit 1
fi
# 不自动清理,让用户可以继续访问
if [ "$CLEANUP_PORT_FORWARD" = true ]; then
echo "提示: port-forward 将保持运行,按 Ctrl+C 停止"
trap - EXIT
wait $PORT_FORWARD_PID
fi