完善中央与边缘部署、远程写入与监控文档
- 增加中央与边缘完整配置和部署脚本 - 引入 VictoriaMetrics 数据源与 remote_write 故障排查说明 - 新增 edge-agent 配置脚本、ONVIF 自建 exporter 与 ping 监控示例 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
156
edge-agent/deploy.sh
Normal file
156
edge-agent/deploy.sh
Normal file
@@ -0,0 +1,156 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 分布式Prometheus边缘代理部署脚本
|
||||
# 适用于Linux系统 (玩客云等设备)
|
||||
|
||||
set -e
|
||||
|
||||
echo "=== 分布式Prometheus边缘代理部署脚本 ==="
|
||||
echo ""
|
||||
|
||||
# 检查Docker是否安装
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "❌ Docker未安装,请先安装Docker"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查Docker Compose (优先检查V2,然后检查V1)
|
||||
DOCKER_COMPOSE_CMD=""
|
||||
if docker compose version &> /dev/null; then
|
||||
DOCKER_COMPOSE_CMD="docker compose"
|
||||
echo "✅ 检测到 Docker Compose V2"
|
||||
elif command -v docker-compose &> /dev/null; then
|
||||
DOCKER_COMPOSE_CMD="docker-compose"
|
||||
echo "✅ 检测到 Docker Compose V1"
|
||||
else
|
||||
echo "❌ Docker Compose未安装,请先安装Docker Compose"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Docker环境检查通过"
|
||||
echo ""
|
||||
|
||||
# 检查jq是否安装
|
||||
if ! command -v jq &> /dev/null; then
|
||||
echo "❌ jq未安装,请先安装jq:"
|
||||
echo " Ubuntu/Debian: sudo apt-get install jq"
|
||||
echo " CentOS/RHEL: sudo yum install jq"
|
||||
echo " Alpine: apk add jq"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查并生成配置文件
|
||||
echo "🔄 检查并生成配置文件..."
|
||||
|
||||
if [ -f "config/devices.csv" ]; then
|
||||
echo "📱 从CSV生成ONVIF设备配置..."
|
||||
cd config
|
||||
chmod +x *.sh
|
||||
./update-configs.sh
|
||||
cd ..
|
||||
else
|
||||
echo "⚠️ config/devices.csv 不存在,使用默认JSON配置"
|
||||
fi
|
||||
|
||||
if [ ! -f "config/onvif-targets.json" ]; then
|
||||
echo "❌ 配置文件 config/onvif-targets.json 不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "config/ping-targets.json" ]; then
|
||||
echo "❌ 配置文件 config/ping-targets.json 不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "prometheus-edge/prometheus.yml" ]; then
|
||||
echo "❌ 配置文件 prometheus-edge/prometheus.yml 不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ 配置文件检查通过"
|
||||
echo ""
|
||||
|
||||
# 创建环境变量文件
|
||||
if [ ! -f ".env" ]; then
|
||||
if [ -f "env.example" ]; then
|
||||
cp env.example .env
|
||||
echo "📝 已创建 .env 文件,请编辑其中的配置"
|
||||
echo " 特别是 CENTRAL_SERVER_HOST 和 CENTRAL_SERVER_PORT"
|
||||
echo ""
|
||||
read -p "按回车键继续,或 Ctrl+C 取消..."
|
||||
else
|
||||
echo "❌ env.example 文件不存在"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 从 .env 生成 prometheus.yml(使 remote_write 指向中央服务器)
|
||||
if [ -f ".env" ]; then
|
||||
set -a
|
||||
source .env
|
||||
set +a
|
||||
CENTRAL_SERVER_HOST=${CENTRAL_SERVER_HOST:-192.168.1.10}
|
||||
CENTRAL_SERVER_PORT=${CENTRAL_SERVER_PORT:-8428}
|
||||
if [ -f "prometheus-edge/prometheus.yml.template" ]; then
|
||||
echo "📝 根据 .env 生成 prometheus.yml (中央: ${CENTRAL_SERVER_HOST}:${CENTRAL_SERVER_PORT})..."
|
||||
export CENTRAL_SERVER_HOST CENTRAL_SERVER_PORT
|
||||
envsubst '${CENTRAL_SERVER_HOST} ${CENTRAL_SERVER_PORT}' < prometheus-edge/prometheus.yml.template > prometheus-edge/prometheus.yml
|
||||
echo "✅ prometheus.yml 已生成"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 创建数据目录
|
||||
mkdir -p prometheus-edge/data
|
||||
echo "✅ 数据目录创建完成"
|
||||
echo ""
|
||||
|
||||
# 停止现有服务
|
||||
echo "🛑 停止现有服务..."
|
||||
$DOCKER_COMPOSE_CMD down 2>/dev/null || true
|
||||
|
||||
# 拉取最新镜像
|
||||
echo "📥 拉取Docker镜像..."
|
||||
if ! $DOCKER_COMPOSE_CMD pull; then
|
||||
echo ""
|
||||
echo "⚠️ 镜像拉取失败,尝试继续启动(如果本地已有镜像)..."
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# 启动服务
|
||||
echo "🚀 启动服务..."
|
||||
$DOCKER_COMPOSE_CMD up -d
|
||||
|
||||
# 等待服务启动
|
||||
echo "⏳ 等待服务启动..."
|
||||
sleep 10
|
||||
|
||||
# 检查服务状态
|
||||
echo ""
|
||||
echo "📊 服务状态检查:"
|
||||
$DOCKER_COMPOSE_CMD ps
|
||||
|
||||
echo ""
|
||||
echo "📋 服务日志:"
|
||||
$DOCKER_COMPOSE_CMD logs --tail=20
|
||||
|
||||
echo ""
|
||||
echo "✅ 部署完成!"
|
||||
echo ""
|
||||
echo "🔗 访问地址:"
|
||||
echo " - Prometheus UI: http://localhost:9092"
|
||||
echo " - 目标状态: http://localhost:9092/targets"
|
||||
echo ""
|
||||
echo "📝 管理命令:"
|
||||
echo " - 查看日志: $DOCKER_COMPOSE_CMD logs -f"
|
||||
echo " - 重启服务: $DOCKER_COMPOSE_CMD restart"
|
||||
echo " - 停止服务: $DOCKER_COMPOSE_CMD down"
|
||||
echo ""
|
||||
echo "🔄 配置更新:"
|
||||
echo " - 编辑CSV: nano config/devices.csv"
|
||||
echo " - 生成JSON: cd config && ./update-configs.sh"
|
||||
echo " - 热重载: 等待5分钟自动重载,或重启prometheus-edge"
|
||||
echo ""
|
||||
echo "⚠️ 请确保:"
|
||||
echo " 1. 已正确配置 .env 文件中的服务器地址"
|
||||
echo " 2. 已更新 config/devices.csv 中的设备信息"
|
||||
echo " 3. 网络连接正常,可以访问ONVIF设备"
|
||||
Reference in New Issue
Block a user