main:删除 Grafana 仪表板配置文件
更新内容: - 移除 `dashboard.json` 文件,清理不再需要的 Grafana 仪表板配置。 - 简化项目目录结构,删除多余的监控配置以优化维护。
This commit is contained in:
104
scripts/test_concurrency.sh
Executable file
104
scripts/test_concurrency.sh
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/bin/bash
|
||||
# 并发控制测试脚本
|
||||
|
||||
set -e
|
||||
|
||||
BASE_URL="http://localhost:8000"
|
||||
|
||||
echo "=== 异步任务并发控制测试 ==="
|
||||
echo ""
|
||||
|
||||
# 1. 检查服务是否运行
|
||||
echo "1. 检查服务状态..."
|
||||
if ! curl -s "${BASE_URL}/healthz" > /dev/null; then
|
||||
echo "❌ 服务未运行,请先启动服务"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ 服务正常运行"
|
||||
echo ""
|
||||
|
||||
# 2. 查询初始并发状态
|
||||
echo "2. 查询初始并发状态..."
|
||||
curl -s "${BASE_URL}/jobs/concurrency/status" | jq '.'
|
||||
echo ""
|
||||
|
||||
# 3. 创建多个任务
|
||||
echo "3. 创建 15 个任务(测试并发限制)..."
|
||||
JOB_IDS=()
|
||||
for i in {1..15}; do
|
||||
# 使用较大的质数,让任务执行时间更长
|
||||
NUMBER=$((10000 + i * 1000))
|
||||
RESPONSE=$(curl -s -X POST "${BASE_URL}/jobs" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"algorithm\": \"PrimeChecker\", \"params\": {\"number\": ${NUMBER}}}")
|
||||
|
||||
JOB_ID=$(echo "$RESPONSE" | jq -r '.job_id')
|
||||
JOB_IDS+=("$JOB_ID")
|
||||
echo " 创建任务 ${i}/15: job_id=${JOB_ID}"
|
||||
|
||||
# 短暂延迟,避免请求过快
|
||||
sleep 0.1
|
||||
done
|
||||
echo ""
|
||||
|
||||
# 4. 立即查询并发状态(应该看到多个任务在运行)
|
||||
echo "4. 查询并发状态(任务执行中)..."
|
||||
for i in {1..5}; do
|
||||
echo " 第 ${i} 次查询:"
|
||||
STATUS=$(curl -s "${BASE_URL}/jobs/concurrency/status")
|
||||
echo " $(echo "$STATUS" | jq -c '.')"
|
||||
sleep 1
|
||||
done
|
||||
echo ""
|
||||
|
||||
# 5. 等待所有任务完成
|
||||
echo "5. 等待任务完成..."
|
||||
COMPLETED=0
|
||||
TOTAL=${#JOB_IDS[@]}
|
||||
|
||||
while [ $COMPLETED -lt $TOTAL ]; do
|
||||
COMPLETED=0
|
||||
for JOB_ID in "${JOB_IDS[@]}"; do
|
||||
STATUS=$(curl -s "${BASE_URL}/jobs/${JOB_ID}" | jq -r '.status')
|
||||
if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then
|
||||
((COMPLETED++))
|
||||
fi
|
||||
done
|
||||
|
||||
echo " 进度: ${COMPLETED}/${TOTAL} 任务完成"
|
||||
|
||||
# 显示当前并发状态
|
||||
CONCURRENCY=$(curl -s "${BASE_URL}/jobs/concurrency/status")
|
||||
echo " 并发状态: $(echo "$CONCURRENCY" | jq -c '.')"
|
||||
|
||||
if [ $COMPLETED -lt $TOTAL ]; then
|
||||
sleep 2
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
|
||||
# 6. 查询最终并发状态
|
||||
echo "6. 查询最终并发状态..."
|
||||
curl -s "${BASE_URL}/jobs/concurrency/status" | jq '.'
|
||||
echo ""
|
||||
|
||||
# 7. 显示任务结果统计
|
||||
echo "7. 任务结果统计..."
|
||||
COMPLETED_COUNT=0
|
||||
FAILED_COUNT=0
|
||||
|
||||
for JOB_ID in "${JOB_IDS[@]}"; do
|
||||
STATUS=$(curl -s "${BASE_URL}/jobs/${JOB_ID}" | jq -r '.status')
|
||||
if [ "$STATUS" = "completed" ]; then
|
||||
((COMPLETED_COUNT++))
|
||||
elif [ "$STATUS" = "failed" ]; then
|
||||
((FAILED_COUNT++))
|
||||
fi
|
||||
done
|
||||
|
||||
echo " 总任务数: ${TOTAL}"
|
||||
echo " 成功: ${COMPLETED_COUNT}"
|
||||
echo " 失败: ${FAILED_COUNT}"
|
||||
echo ""
|
||||
|
||||
echo "=== 测试完成 ==="
|
||||
39
scripts/test_metrics_filtering.sh
Executable file
39
scripts/test_metrics_filtering.sh
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
# 测试指标过滤和路径规范化
|
||||
|
||||
echo "=== 测试指标过滤和路径规范化 ==="
|
||||
echo ""
|
||||
|
||||
# 启动服务(假设已经在运行)
|
||||
BASE_URL="http://localhost:8000"
|
||||
|
||||
echo "1. 访问健康检查端点(应该被跳过,不记录指标)"
|
||||
curl -s "$BASE_URL/healthz" > /dev/null
|
||||
curl -s "$BASE_URL/readyz" > /dev/null
|
||||
echo " ✓ 已访问 /healthz 和 /readyz"
|
||||
echo ""
|
||||
|
||||
echo "2. 访问普通端点(应该记录指标)"
|
||||
curl -s -X POST "$BASE_URL/invoke" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"number": 17}' > /dev/null
|
||||
echo " ✓ 已访问 POST /invoke"
|
||||
echo ""
|
||||
|
||||
echo "3. 访问任务端点(应该规范化为 /jobs/{job_id})"
|
||||
curl -s "$BASE_URL/jobs/a1b2c3d4e5f6" > /dev/null
|
||||
curl -s "$BASE_URL/jobs/xyz123456789" > /dev/null
|
||||
echo " ✓ 已访问 GET /jobs/a1b2c3d4e5f6 和 GET /jobs/xyz123456789"
|
||||
echo ""
|
||||
|
||||
echo "4. 查看指标输出"
|
||||
echo " 查找 http_requests_total 指标:"
|
||||
curl -s "$BASE_URL/metrics" | grep 'http_requests_total{' | grep -v '#'
|
||||
echo ""
|
||||
echo " 预期结果:"
|
||||
echo " - 应该看到 endpoint=\"/invoke\" 的记录"
|
||||
echo " - 应该看到 endpoint=\"/jobs/{job_id}\" 的记录(而不是具体的 job_id)"
|
||||
echo " - 不应该看到 endpoint=\"/healthz\" 或 endpoint=\"/readyz\" 的记录"
|
||||
echo " - 不应该看到 endpoint=\"/metrics\" 的记录"
|
||||
echo ""
|
||||
echo "=== 测试完成 ==="
|
||||
100
scripts/verify_loki.sh
Executable file
100
scripts/verify_loki.sh
Executable file
@@ -0,0 +1,100 @@
|
||||
#!/bin/bash
|
||||
# Loki 集成验证脚本
|
||||
|
||||
set -e
|
||||
|
||||
echo "========================================="
|
||||
echo "Loki 日志收集系统验证"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
|
||||
# 颜色定义
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 检查服务状态
|
||||
echo "1. 检查服务状态..."
|
||||
echo "-------------------"
|
||||
docker-compose ps
|
||||
|
||||
echo ""
|
||||
echo "2. 检查 Loki 健康状态..."
|
||||
echo "-------------------"
|
||||
if curl -s http://localhost:3100/ready | grep -q "ready"; then
|
||||
echo -e "${GREEN}✓ Loki 服务正常${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Loki 服务异常${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "3. 检查 Promtail 健康状态..."
|
||||
echo "-------------------"
|
||||
if curl -s http://localhost:9080/ready | grep -q "ready"; then
|
||||
echo -e "${GREEN}✓ Promtail 服务正常${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Promtail 服务异常${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "4. 生成测试日志..."
|
||||
echo "-------------------"
|
||||
curl -X POST http://localhost:8111/invoke \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"algorithm": "PrimeChecker", "params": {"number": 17}}' \
|
||||
-s -o /dev/null -w "HTTP Status: %{http_code}\n"
|
||||
|
||||
echo ""
|
||||
echo "5. 等待日志收集 (5秒)..."
|
||||
sleep 5
|
||||
|
||||
echo ""
|
||||
echo "6. 查询 Loki 日志..."
|
||||
echo "-------------------"
|
||||
LOGS=$(curl -G -s "http://localhost:3100/loki/api/v1/query_range" \
|
||||
--data-urlencode 'query={job="functional-scaffold-app"}' \
|
||||
--data-urlencode 'limit=5')
|
||||
|
||||
if echo "$LOGS" | jq -e '.data.result | length > 0' > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ 成功查询到日志${NC}"
|
||||
echo ""
|
||||
echo "最近的日志条目:"
|
||||
echo "$LOGS" | jq -r '.data.result[0].values[-1][1]' | head -3
|
||||
else
|
||||
echo -e "${YELLOW}⚠ 暂时没有查询到日志,可能需要等待更长时间${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "7. 检查 Grafana 数据源..."
|
||||
echo "-------------------"
|
||||
DATASOURCES=$(curl -s -u admin:admin http://localhost:3000/api/datasources)
|
||||
if echo "$DATASOURCES" | jq -e '.[] | select(.name == "Loki")' > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ Loki 数据源已配置${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Loki 数据源未配置${NC}"
|
||||
fi
|
||||
|
||||
if echo "$DATASOURCES" | jq -e '.[] | select(.name == "Prometheus")' > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ Prometheus 数据源已配置${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Prometheus 数据源未配置${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "验证完成!"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
echo "访问地址:"
|
||||
echo " - Grafana: http://localhost:3000 (admin/admin)"
|
||||
echo " - Loki: http://localhost:3100"
|
||||
echo " - Promtail: http://localhost:9080"
|
||||
echo ""
|
||||
echo "查看日志:"
|
||||
echo " 1. 访问 Grafana Explore: http://localhost:3000/explore"
|
||||
echo " 2. 选择 Loki 数据源"
|
||||
echo " 3. 输入查询: {job=\"functional-scaffold-app\"}"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user