Files
oceanbase/tools/systemd/profile/telemetry.sh.template
2024-04-12 12:57:45 +00:00

87 lines
3.0 KiB
Bash

#!/bin/bash
url="https://openwebapi.oceanbase.com/api/web/oceanbase/report"
type=@CPACK_PACKAGE_NAME@
version=@CPACK_PACKAGE_VERSION@
release=@CPACK_RPM_PACKAGE_RELEASE@
ip=$(hostname -I | awk '/^[0-9]/ {print $1; exit}')
hostHash=$(echo -n "$ip" | sha1sum | awk '{print $1}')
osName=$(cat /etc/os-release | grep "^ID=" | cut -f2 -d=)
osRelease=$(cat /etc/os-release | grep "^VERSION_ID=" | cut -f2 -d=)
cnf_file='/etc/oceanbase.cnf'
step='none'
reporter='none'
jsonData=$(jq -n --arg reporter "$reporter" \
--arg type "$type" \
--arg step "$step" \
--arg version "$version" \
--arg release "$revision" \
--arg hostHash "$hostHash" \
--arg osName "$osName" \
--arg osRelease "$osRelease" '{
component: "ocs",
content: {
reporter: $reporter,
type: $type,
step: $step,
version: $version,
release: $release,
hostHash: $hostHash,
osName: $osName,
osRelease: $osRelease,
observerConfig: {}
}
}')
function add_observer_config {
while IFS='=' read -r key value; do
key=$(echo "$key" | awk '{$1=$1};1')
value=$(echo "$value" | awk '{$1=$1};1')
value=$(echo "$value" | sed 's/^"//' | sed 's/"$//')
if [[ -n "$key" && ! "$key" =~ ^\; && $key != *"rootPwd"* ]]; then
jsonData=$(echo "$jsonData" | jq --arg parent "content" --arg child "observerConfig" --arg key "$key" --arg value "$value" '.[$parent][$child][$key] = $value')
fi
done < "$cnf_file"
}
# Function Name: do_telemetry
# Purpose: prepare the telemetry json data
# Arguments: arg1 - 0 means rpm uninstall, 1 means rpm install, 2 means rpm upgrade, 3 means systemd deploy
# Arguments: arg2 - systemd step: 10 means only start, 11 means start successfully with bootstrap,
# 12 means start successfully without bootstrap
# Return Value: None
function do_telemetry {
# arg1 0 means rpm uninstall, 1 means rpm install, 2 means rpm upgrade, 3 means systemd deploy
# arg2 means systemd step
if [ "$1" -eq 0 ]; then
# rpm uninstall step
step="0"
reporter="rpm"
elif [ "$1" -eq 1 ]; then
# rpm install step
step="1"
reporter="rpm"
elif [ "$1" -eq 2 ]; then
# rpm upgrade step
step="2"
reporter="rpm"
add_observer_config
elif [ "$1" -eq 3 ]; then
step="$2"
reporter="systemd"
add_observer_config
fi
jsonData=$(echo "$jsonData" | jq --arg parent "content" --arg key "reporter" --arg value "$reporter" '.[$parent][$key] = $value')
jsonData=$(echo "$jsonData" | jq --arg parent "content" --arg key "step" --arg value "$step" '.[$parent][$key] = $value')
nohup curl -X POST \
-H "Content-Type: application/json" \
-d "$jsonData" "$url" >/dev/null 2>&1 &
}
if [[ -z "$TELEMETRY_MODE" ]] || ( [[ "$TELEMETRY_MODE" =~ ^-?[0-9]+$ ]] && [[ "$TELEMETRY_MODE" -eq 1 ]] ); then
do_telemetry $1 "$2"
fi