首页 > 代码库 > Cloudinsight Agent install script

Cloudinsight Agent install script

#!/bin/bash# Cloudinsight Agent install script.set -elogfile="ci-agent-install.log"gist_request=/tmp/agent-gist-request.tmpgist_response=/tmp/agent-gist-response.tmpif [ $(command -v curl) ]; then    cl_cmd="curl -f"else    cl_cmd="wget --quiet"fi# Set up a named pipe for loggingnpipe=/tmp/$$.tmpmknod $npipe p# Log all output to a log for error checkingtee <$npipe $logfile &exec 1>&-exec 1>$npipe 2>&1trap "rm -f $npipe" EXITfunction on_error() {    printf "\033[31m$ERROR_MESSAGEIt looks like you hit an issue when trying to install the Agent.Troubleshooting and basic usage information for the Agent are available at:    http://docs-ci.oneapm.com/quick-start/If you‘re still having problems, please contact to support@oneapm.comand we‘ll try our best to help you solve your problem.\n\033[0m\n"}trap on_error ERRif [ -n "$CI_LICENSE_KEY" ]; then    license_key=$CI_LICENSE_KEYfiif [ -n "$CI_INSTALL_ONLY" ]; then    no_start=trueelse    no_start=falsefiif [ ! $license_key ]; then    printf "\033[31mLicense key not available in CI_LICENSE_KEY environment variable.\033[0m\n"    exit 1;fi# OS/Distro Detection# Try lsb_release, fallback with /etc/issue then uname commandKNOWN_DISTRIBUTION="(Debian|Ubuntu|RedHat|CentOS|Amazon)"DISTRIBUTION=$(lsb_release -d 2>/dev/null | grep -Eo $KNOWN_DISTRIBUTION  || grep -Eo $KNOWN_DISTRIBUTION /etc/issue 2>/dev/null || uname -s)if [ $DISTRIBUTION = "Darwin" ]; then    printf "\033[31mThis script does not support installing on the Mac..\033[0m\n"    exit 1;elif [ -f /etc/debian_version -o "$DISTRIBUTION" == "Debian" -o "$DISTRIBUTION" == "Ubuntu" ]; then    OS="Debian"elif [ -f /etc/redhat-release -o "$DISTRIBUTION" == "RedHat" -o "$DISTRIBUTION" == "CentOS" -o "$DISTRIBUTION" == "Amazon" ]; then    OS="RedHat"elif [ -f /etc/system-release -o "$DISTRIBUTION" == "Amazon" ]; then    OS="RedHat"fi# Root user detectionif [ $(echo "$UID") = "0" ]; then    sudo_cmd=‘‘else    sudo_cmd=‘sudo‘fifunction backup_old_configuration {    if [[ ! -d /etc/cloudinsight-agent ]]; then        # New configuration does not exist, move legacy configuration to new location        echo -e "Please note, Cloudinsight Agent‘s configuration is now located at ‘/etc/cloudinsight-agent‘ (previously ‘/etc/oneapm-ci-agent‘)."        $sudo_cmd mkdir /etc/cloudinsight-agent        $sudo_cmd cp -r /etc/oneapm-ci-agent/checks.d /etc/cloudinsight-agent/        $sudo_cmd cp -r /etc/oneapm-ci-agent/conf.d /etc/cloudinsight-agent/        backup_name="oneapm-ci-agent.conf.$(date +%s).backup"        echo "A backup of your current configuration can be found at: /etc/cloudinsight-agent/$backup_name"        $sudo_cmd cp -a /etc/oneapm-ci-agent/oneapm-ci-agent.conf /etc/cloudinsight-agent/$backup_name    fi}# Install the necessary package sourcesif [ $OS = "RedHat" ]; then    echo -e "\033[34m\n* Installing YUM sources for Cloudinsight Agent\n\033[0m"    UNAME_M=$(uname -m)    if [ "$UNAME_M"  == "i686" -o "$UNAME_M"  == "i386" -o "$UNAME_M"  == "x86" ]; then        ARCHI="i386"    else        ARCHI="x86_64"    fi    $sudo_cmd sh -c "echo -e ‘[cloudinsight-agent]\nname = OneAPM, Inc.\nbaseurl = http://yum.oneapm.com/$ARCHI/\nenabled=1\ngpgcheck=0\npriority=1‘ > /etc/yum.repos.d/cloudinsight-agent.repo"    printf "\033[34m* Installing the Cloudinsight Agent package\n\033[0m\n"    CI_OLD_INSTALLED=$(yum list installed oneapm-ci-agent > /dev/null 2>&1 || echo "no")    if [ "$CI_OLD_INSTALLED" != "no" ]; then        backup_old_configuration        $sudo_cmd rm -f /etc/yum.repos.d/oneapm-ci-agent.repo        echo -e "\033[34m\n* Uninstall oneapm-ci-agent\n\033[0m"        $sudo_cmd yum -y remove oneapm-ci-agent        # Remove extra files        $sudo_cmd rm -rf /opt/oneapm-ci-agent        $sudo_cmd rm -rf /var/log/oneapm-ci-agent        $sudo_cmd rm -rf /etc/oneapm-ci-agent    fi    $sudo_cmd yum -y --disablerepo=‘*‘ --enablerepo=‘cloudinsight-agent‘ install cloudinsight-agentelif [ $OS = "Debian" ]; then    printf "\033[34m\n* Installing APT package sources for Cloudinsight Agent\n\033[0m\n"    $sudo_cmd sh -c "echo ‘deb http://apt.oneapm.com/ stable main‘ > /etc/apt/sources.list.d/cloudinsight-agent.list"    $sudo_cmd apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 54B043BC    printf "\033[34m\n* Installing the Cloudinsight Agent package\n\033[0m\n"    ERROR_MESSAGE="ERRORFailed to update the sources after adding the Cloudinsight repository.This may be due to any of the configured APT sources failing -see the logs above to determine the cause.If the failing repository is Cloudinsight, please contact Cloudinsight support.*****"    $sudo_cmd apt-get update -o Dir::Etc::sourcelist="sources.list.d/cloudinsight-agent.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"    ERROR_MESSAGE="ERRORFailed to install the Cloudinsight package, sometimes it may bedue to another APT source failing. See the logs above todetermine the cause.If the cause is unclear, please contact Cloudinsight support.*****"    if [ -f /etc/apt/sources.list.d/oneapm-ci-agent.list ]; then        $sudo_cmd rm -f /etc/apt/sources.list.d/oneapm-ci-agent.list    fi    CI_OLD_INSTALLED=$(dpkg -l | grep oneapm-ci-agent > /dev/null 2>&1 || echo "no")    if [ "$CI_OLD_INSTALLED" != "no" ]; then        backup_old_configuration        echo -e "\033[34m\n* Uninstall oneapm-ci-agent\n\033[0m"        $sudo_cmd apt-get purge -y oneapm-ci-agent    fi    $sudo_cmd apt-get install -y --force-yes cloudinsight-agent    ERROR_MESSAGE=""else    printf "\033[31mYour OS or distribution are not supported by this install script.Please follow the instructions on the Agent setup page.\033[0m\n"    exit;fi# Set the configurationif [ -e /etc/cloudinsight-agent/cloudinsight-agent.conf ]; then    printf "\033[34m\n* Keeping old cloudinsight-agent.conf configuration file\n\033[0m\n"else    printf "\033[34m\n* Adding your license key to the Agent configuration: /etc/cloudinsight-agent/cloudinsight-agent.conf\n\033[0m\n"    $sudo_cmd sh -c "sed ‘s/license_key:.*/license_key: $license_key/‘ /etc/cloudinsight-agent/cloudinsight-agent.conf.example > /etc/cloudinsight-agent/cloudinsight-agent.conf"firestart_cmd="$sudo_cmd /etc/init.d/cloudinsight-agent restart"if command -v invoke-rc.d >/dev/null 2>&1; then    restart_cmd="$sudo_cmd invoke-rc.d cloudinsight-agent restart"fiif $no_start; then    printf "\033[34m* CI_INSTALL_ONLY environment variable set: the newly installed version of the agentwill not start by itself. You will have to do it manually using the followingcommand:    $restart_cmd\033[0m\n"    exitfiprintf "\033[34m* Starting the Agent...\n\033[0m\n"eval $restart_cmd# Wait for metrics to be submitted by the forwarderprintf "\033[32mYour Agent has started up for the first time. We‘re currently verifying thatdata is being submitted.\033[0mWaiting for metrics..."c=0while [ "$c" -lt "30" ]; do    sleep 1    echo -n "."    c=$(($c+1))done# Reuse the same counterc=0# The command to check the status of the forwarder might fail at first, this is expected# so we remove the trap and we set +eset +etrap - ERR$cl_cmd http://127.0.0.1:10010/status?threshold=0 > /dev/null 2>&1success=$?while [ "$success" -gt "0" ]; do    sleep 1    echo -n "."    $cl_cmd http://127.0.0.1:10010/status?threshold=0 > /dev/null 2>&1    success=$?    c=$(($c+1))    if [ "$c" -gt "15" -o "$success" -eq "0" ]; then        # After 15 tries, we give up, we restore the trap and set -e        # Also restore the trap on success        set -e        trap on_error ERR    fidone# Metrics are submitted, echo some instructions and exitprintf "\033[32mYour Agent is running and functioning properly. It will continue to run in thebackground and submit metrics to Cloudinsight.If you ever want to stop the Agent, run:    sudo /etc/init.d/cloudinsight-agent stopAnd to run it again run:    sudo /etc/init.d/cloudinsight-agent start\033[0m"

 

Cloudinsight Agent install script