fix: allow verified offline monitoring releases

This commit is contained in:
hectorzhao
2026-08-26 14:33:44 +08:00
parent b0bdb608c1
commit c769b60aaa
3 changed files with 18 additions and 4 deletions
+2
View File
@@ -12,6 +12,8 @@ bash tools/monitoring/install-service-exporters.sh
Debian/Ubuntu 使用系统包;Alibaba Cloud Linux 4 ARM64 使用脚本中锁定版本和 SHA-256 的官方 release 二进制。第一个脚本安装 Prometheus 与 Node Exporter,备份已有配置并校验规则;第二个脚本安装 PostgreSQL、Redis 和 Nginx Exporter,开启 MinIO 回环原生指标。API 指标仅监听 `127.0.0.1:9464`,Gateway 指标复用回环控制端口 `8090`。9090、9100、9187、9121、9113 和 9464 均不得对公网开放。两个脚本均会打印恢复资产路径。 Debian/Ubuntu 使用系统包;Alibaba Cloud Linux 4 ARM64 使用脚本中锁定版本和 SHA-256 的官方 release 二进制。第一个脚本安装 Prometheus 与 Node Exporter,备份已有配置并校验规则;第二个脚本安装 PostgreSQL、Redis 和 Nginx Exporter,开启 MinIO 回环原生指标。API 指标仅监听 `127.0.0.1:9464`,Gateway 指标复用回环控制端口 `8090`。9090、9100、9187、9121、9113 和 9464 均不得对公网开放。两个脚本均会打印恢复资产路径。
目标服务器无法稳定访问 GitHub 时,可先把脚本中锁定版本的 tar.gz 上传到只允许 root 写入的目录,再为两个脚本设置 `MONITORING_RELEASE_CACHE_DIR=/path/to/cache`。脚本仍会使用内置 SHA-256 二次校验缓存文件,不会信任未校验的上传内容。
安装后将下列配置写入`/etc/cmpp-platform/cmpp-platform.env`,再按正常发布窗口重启API 安装后将下列配置写入`/etc/cmpp-platform/cmpp-platform.env`,再按正常发布窗口重启API
```dotenv ```dotenv
@@ -8,6 +8,7 @@ PROMETHEUS_VERSION="3.14.0"
PROMETHEUS_SHA256_ARM64="077f3781ab7245dc04c9a3c9b78ba120fc8e41aa0dc97489b0af67247e50ba83" PROMETHEUS_SHA256_ARM64="077f3781ab7245dc04c9a3c9b78ba120fc8e41aa0dc97489b0af67247e50ba83"
NODE_EXPORTER_VERSION="1.12.1" NODE_EXPORTER_VERSION="1.12.1"
NODE_EXPORTER_SHA256_ARM64="ad35b605f9954b9f1ffddf5ba054bdc5a98d790b9eae5291e1eeb83f1ecbd0e7" NODE_EXPORTER_SHA256_ARM64="ad35b605f9954b9f1ffddf5ba054bdc5a98d790b9eae5291e1eeb83f1ecbd0e7"
MONITORING_RELEASE_CACHE_DIR="${MONITORING_RELEASE_CACHE_DIR:-}"
if [[ "$(id -u)" -ne 0 ]]; then if [[ "$(id -u)" -ne 0 ]]; then
echo "Run as root." >&2 echo "Run as root." >&2
@@ -17,10 +18,15 @@ log() { printf '\n[%s] %s\n' "$(date '+%F %T')" "$*"; }
install_release_binary() { install_release_binary() {
local url="$1" expected_sha256="$2" archive_member="$3" destination="$4" local url="$1" expected_sha256="$2" archive_member="$3" destination="$4"
local work_dir archive local work_dir archive asset_name
work_dir="$(mktemp -d /tmp/cmpp-monitoring.XXXXXX)" work_dir="$(mktemp -d /tmp/cmpp-monitoring.XXXXXX)"
archive="$work_dir/release.tar.gz" archive="$work_dir/release.tar.gz"
curl -fL --retry 5 --retry-delay 2 --connect-timeout 15 -o "$archive" "$url" asset_name="${url##*/}"
if [[ -n "$MONITORING_RELEASE_CACHE_DIR" && -f "$MONITORING_RELEASE_CACHE_DIR/$asset_name" ]]; then
cp "$MONITORING_RELEASE_CACHE_DIR/$asset_name" "$archive"
else
curl -fL --retry 5 --retry-delay 2 --connect-timeout 15 -o "$archive" "$url"
fi
printf '%s %s\n' "$expected_sha256" "$archive" | sha256sum -c - printf '%s %s\n' "$expected_sha256" "$archive" | sha256sum -c -
tar -xzf "$archive" -C "$work_dir" tar -xzf "$archive" -C "$work_dir"
install -o root -g root -m 0755 "$work_dir/$archive_member" "$destination" install -o root -g root -m 0755 "$work_dir/$archive_member" "$destination"
@@ -7,6 +7,7 @@ REDIS_EXPORTER_VERSION="1.89.0"
REDIS_EXPORTER_SHA256_ARM64="1a70d42cd1d96a9388f8b528f55ad5bdc2c3cbd911c1dff3875fcb9ac01fa28a" REDIS_EXPORTER_SHA256_ARM64="1a70d42cd1d96a9388f8b528f55ad5bdc2c3cbd911c1dff3875fcb9ac01fa28a"
NGINX_EXPORTER_VERSION="1.5.3" NGINX_EXPORTER_VERSION="1.5.3"
NGINX_EXPORTER_SHA256_ARM64="a0b1a5f5bba09483bd2e04c759c1a75fffe46ca72c0314ee2bb925d1742ff23b" NGINX_EXPORTER_SHA256_ARM64="a0b1a5f5bba09483bd2e04c759c1a75fffe46ca72c0314ee2bb925d1742ff23b"
MONITORING_RELEASE_CACHE_DIR="${MONITORING_RELEASE_CACHE_DIR:-}"
if [[ "$(id -u)" -ne 0 ]]; then echo "Run as root." >&2; exit 1; fi if [[ "$(id -u)" -ne 0 ]]; then echo "Run as root." >&2; exit 1; fi
for command_name in systemctl nginx curl install ss; do command -v "$command_name" >/dev/null || { echo "Missing command: $command_name" >&2; exit 1; }; done for command_name in systemctl nginx curl install ss; do command -v "$command_name" >/dev/null || { echo "Missing command: $command_name" >&2; exit 1; }; done
@@ -15,10 +16,15 @@ log() { printf '\n[%s] %s\n' "$(date '+%F %T')" "$*"; }
install_release_binary() { install_release_binary() {
local url="$1" expected_sha256="$2" archive_member="$3" destination="$4" local url="$1" expected_sha256="$2" archive_member="$3" destination="$4"
local work_dir archive local work_dir archive asset_name
work_dir="$(mktemp -d /tmp/cmpp-monitoring.XXXXXX)" work_dir="$(mktemp -d /tmp/cmpp-monitoring.XXXXXX)"
archive="$work_dir/release.tar.gz" archive="$work_dir/release.tar.gz"
curl -fL --retry 5 --retry-delay 2 --connect-timeout 15 -o "$archive" "$url" asset_name="${url##*/}"
if [[ -n "$MONITORING_RELEASE_CACHE_DIR" && -f "$MONITORING_RELEASE_CACHE_DIR/$asset_name" ]]; then
cp "$MONITORING_RELEASE_CACHE_DIR/$asset_name" "$archive"
else
curl -fL --retry 5 --retry-delay 2 --connect-timeout 15 -o "$archive" "$url"
fi
printf '%s %s\n' "$expected_sha256" "$archive" | sha256sum -c - printf '%s %s\n' "$expected_sha256" "$archive" | sha256sum -c -
tar -xzf "$archive" -C "$work_dir" tar -xzf "$archive" -C "$work_dir"
install -o root -g root -m 0755 "$work_dir/$archive_member" "$destination" install -o root -g root -m 0755 "$work_dir/$archive_member" "$destination"