72 lines
2.0 KiB
Bash
Executable File
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
|