Files
oceanbase/tools/systemd/profile/telemetry.sh.template
LINxiansheng 21acb7b3ec combine ce rpm
2024-11-24 00:15:19 +00:00

95 lines
3.3 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@
prefix=@CPACK_PACKAGING_INSTALL_PREFIX@
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= | tr -d '"')
osRelease=$(cat /etc/os-release | grep "^VERSION_ID=" | cut -f2 -d= | tr -d '"')
cnf_file='/etc/oceanbase.cnf'
json_pre_file="$prefix/profile/telemetry-pre.json"
json_file="$prefix/profile/telemetry.json"
step='none'
reporter='none'
function add_observer_config {
rm -rf $json_file
cp $json_pre_file $json_file
local temp_file=$(mktemp)
first_observer_configration=true
while IFS='=' read -r key value; do
# delete empty and comment line
if [[ ! $key || $key =~ ^[[:space:]]*# ]]; then
continue
fi
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
if $first_observer_configration; then
first_observer_configration=false
sed "s/\"observerConfig\": {}/\"observerConfig\": {\n \"$key\": \"$value\"\n }/" "$json_file" > "$temp_file"
else
observer_config_line=$(grep -n "observerConfig" $json_file | head -n 1 | cut -d: -f1)
sed "$((observer_config_line+1))i\\ \"$key\": \"$value\"," "$json_file" > "$temp_file"
fi
mv "$temp_file" "$json_file"
fi
done < "$cnf_file"
}
function update_json {
sed -i "s|#reporter#|${reporter}|g" $json_file
sed -i "s|#type#|${type}|g" $json_file
sed -i "s|#step#|${step}|g" $json_file
sed -i "s|#version#|${version}|g" $json_file
sed -i "s|#release#|${release}|g" $json_file
sed -i "s|#hostHash#|${hostHash}|g" $json_file
sed -i "s|#osName#|${osName}|g" $json_file
sed -i "s|#osRelease#|${osRelease}|g" $json_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
update_json
nohup curl -X POST \
-H "Content-Type: application/json" \
-d @"$json_file" "$url" >/dev/null 2>&1 &
}
if [[ -z "$TELEMETRY_MODE" ]] || ( [[ "$TELEMETRY_MODE" =~ ^-?[0-9]+$ ]] && [[ "$TELEMETRY_MODE" -eq 1 ]] ); then
do_telemetry $1 "$2"
fi