测试方案: - lm2机器端口映射到本机:18080, 18081, 8082-8085 - 访问URL: http://localhost:18080/dashboard       端到端测试通过:  Co-authored-by: sundapeng.sdp <sundapeng@hashdata.cn> Reviewed-on: #35 Reviewed-by: xuxt <xuxt@zgclab.edu.cn> Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn> Reviewed-by: huhy <husteryezi@163.com>
56 lines
1.6 KiB
Bash
Executable File
56 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# DCGM Exporter 健康检查脚本
|
|
# 输出 JSON 格式结果
|
|
|
|
set -e
|
|
|
|
# 检查 DCGM Exporter 健康状态
|
|
check_health() {
|
|
local url="http://localhost:9400"
|
|
local metrics_url="$url/metrics"
|
|
local name="dcgm-exporter"
|
|
local status="unhealth"
|
|
local reason=""
|
|
|
|
# 检查 curl 是否可用
|
|
if ! command -v curl &> /dev/null; then
|
|
reason="curl 命令不可用,无法进行健康检查"
|
|
echo "{\"name\": \"$name\", \"status\": \"$status\", \"reason\": \"$reason\"}"
|
|
exit 1
|
|
fi
|
|
|
|
# 测试根路径连接
|
|
local http_code=$(curl -s -o /dev/null -w "%{http_code}" "$url" 2>/dev/null || echo "000")
|
|
|
|
if [[ "$http_code" == "200" ]]; then
|
|
# 测试 metrics 端点
|
|
local metrics_code=$(curl -s -o /dev/null -w "%{http_code}" "$metrics_url" 2>/dev/null || echo "000")
|
|
|
|
if [[ "$metrics_code" == "200" ]]; then
|
|
status="health"
|
|
reason="success"
|
|
echo "{\"name\": \"$name\", \"status\": \"$status\", \"reason\": \"$reason\"}"
|
|
exit 0
|
|
else
|
|
reason="Metrics 端点异常 (HTTP $metrics_code)"
|
|
echo "{\"name\": \"$name\", \"status\": \"$status\", \"reason\": \"$reason\"}"
|
|
exit 1
|
|
fi
|
|
else
|
|
reason="HTTP 服务异常 (HTTP $http_code),请检查 DCGM Exporter 是否正在运行在端口 9400"
|
|
echo "{\"name\": \"$name\", \"status\": \"$status\", \"reason\": \"$reason\"}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# 主函数
|
|
main() {
|
|
check_health
|
|
}
|
|
|
|
# 脚本入口
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
main "$@"
|
|
fi
|