feat: expand otel export architectures and versions (#3066)

This commit is contained in:
Andy Li
2025-06-30 17:51:12 -07:00
committed by GitHub
parent c275221d59
commit 99591397fe

View File

@@ -1,16 +1,132 @@
#!/bin/bash
set -e # Exit on any error
# Create bin directory if it doesn't exist
mkdir -p bin
# Configuration
OTEL_VERSION="0.96.0"
INSTALL_DIR="bin"
BINARY_NAME="otelcol-contrib"
GRAFANA_URL="https://letta.grafana.net/d/dc738af7-6c30-4b42-aef2-f967d65638af/letta-dev-traces?orgId=1"
# Download and extract collector if not already present
if [ ! -f "bin/otelcol-contrib" ]; then
echo "Downloading OpenTelemetry Collector..."
curl -L https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.96.0/otelcol-contrib_0.96.0_darwin_amd64.tar.gz -o otelcol.tar.gz
tar xzf otelcol.tar.gz -C bin/
rm otelcol.tar.gz
chmod +x bin/otelcol-contrib
# Function to detect OS and architecture
detect_platform() {
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m)
# Map OS names
case "$OS" in
darwin*)
OS="darwin"
;;
linux*)
OS="linux"
;;
mingw*|msys*|cygwin*)
echo "Error: Windows is not supported by this script"
echo "For supporting other operating systems, please open a Github pull request or issue."
exit 1
;;
*)
echo "Unsupported operating system: $OS"
exit 1
;;
esac
# Map architecture names
case "$ARCH" in
x86_64|amd64)
ARCH="amd64"
;;
aarch64|arm64)
ARCH="arm64"
;;
*)
echo "Unsupported architecture: $ARCH"
echo "Supported architectures: amd64 (x86_64), arm64 (aarch64)"
echo "For supporting other architectures, please open a Github pull request or issue."
exit 1
;;
esac
echo "${OS}_${ARCH}"
}
# Function to get current installed version
get_installed_version() {
if [ -f "$INSTALL_DIR/$BINARY_NAME" ]; then
# Try to get version from binary
VERSION_OUTPUT=$("$INSTALL_DIR/$BINARY_NAME" --version 2>/dev/null | head -n1)
if [[ $VERSION_OUTPUT =~ ([0-9]+\.[0-9]+\.[0-9]+) ]]; then
echo "${BASH_REMATCH[1]}"
else
echo "unknown"
fi
else
echo "none"
fi
}
# Function to check if update is needed
needs_update() {
INSTALLED_VERSION=$(get_installed_version)
if [ "$INSTALLED_VERSION" = "none" ]; then
return 0 # Not installed, needs download
elif [ "$INSTALLED_VERSION" = "unknown" ]; then
echo "Warning: Cannot determine installed version. Reinstalling..."
return 0 # Can't determine version, reinstall
elif [ "$INSTALLED_VERSION" != "$OTEL_VERSION" ]; then
echo "Update available: $INSTALLED_VERSION -> $OTEL_VERSION"
return 0 # Different version, needs update
else
echo "OpenTelemetry Collector v$OTEL_VERSION is already installed and up to date."
return 1 # Same version, no update needed
fi
}
# Main script
echo "Checking OpenTelemetry Collector installation..."
# Create bin directory if it doesn't exist
mkdir -p "$INSTALL_DIR"
# Check if update is needed
if needs_update; then
# Detect platform
PLATFORM=$(detect_platform)
echo "Detected platform: $PLATFORM"
# Construct download URL
DOWNLOAD_URL="https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v${OTEL_VERSION}/otelcol-contrib_${OTEL_VERSION}_${PLATFORM}.tar.gz"
ARCHIVE_NAME="otelcol.tar.gz"
echo "Downloading OpenTelemetry Collector v$OTEL_VERSION..."
echo "URL: $DOWNLOAD_URL"
# Download with error handling
if ! curl -L "$DOWNLOAD_URL" -o "$ARCHIVE_NAME"; then
echo "Error: Failed to download OpenTelemetry Collector"
exit 1
fi
# Extract archive
echo "Extracting..."
tar xzf "$ARCHIVE_NAME" -C "$INSTALL_DIR/"
# Clean up
rm "$ARCHIVE_NAME"
# Make executable
chmod +x "$INSTALL_DIR/$BINARY_NAME"
echo "OpenTelemetry Collector v$OTEL_VERSION installed successfully!"
# Verify installation
if [ -f "$INSTALL_DIR/$BINARY_NAME" ]; then
echo "Binary location: $INSTALL_DIR/$BINARY_NAME"
"$INSTALL_DIR/$BINARY_NAME" --version 2>/dev/null | head -n1 || echo "Note: Could not verify version"
fi
else
echo "Skipping download - already up to date."
fi
# Start OpenTelemetry Collector
@@ -23,7 +139,7 @@ else
fi
device_id=$(python3 -c 'import uuid; print(uuid.getnode())')
echo "View traces at https://letta.grafana.net/d/dc738af7-6c30-4b42-aef2-f967d65638af/letta-dev-traces?orgId=1&var-deviceid=$device_id"
echo "View traces at $GRAFANA_URL&var-deviceid=$device_id"
# Run collector
exec ./bin/otelcol-contrib --config "$CONFIG_FILE"