krkr
11/17/2016 - 9:11 PM

ee - checks

ee - checks

ee() {
  if [[ $NO_COLOR == "" ]]; then
    declare cyan="\e[36m"
    declare green="\e[32m"
    declare purple="\e[35m"
    declare red="\e[31m"
    declare reset="\e[39m"
  else
    declare cyan=
    declare green=
    declare purple=
    declare red=
    declare reset=
  fi

  __services() {
    echo -n "${purple}services${reset} "
    svs=$(ee_services)
    up=$(grep -c "Up " <<< $svs)
    total=$(wc -l <<< $svs)
    [[ $up -eq $total ]] && echo -n "${green}OK${reset}  " || echo -n "${red}KO${reset}  "
    echo "$up/$total"
  }

  __zk() {
    echo -n "      ${purple}zk${reset} "
    zk=$(ee_zk | egrep "(leader|follower)" | wc -l)
    nodes=$(docker-machine ls -q | grep ^n | wc -l)
    [[ $zk -eq $nodes ]] && echo -n "${green}OK${reset}  " || echo -n "${red}KO${reset}  "
    echo "$zk/$nodes"
  }

  __qaastor() {
    echo -n " ${purple}qaastor${reset} "
    lag=$(ee_qaastor | sed "s|lag=||")
    [[ $lag -lt 1000 ]] && echo -n "${green}OK${reset}  " || echo -n "${red}KO${reset}  "
    echo "$lag<1000"
  }

  __health() {
    echo -n "  ${purple}health${reset} "
    errors=$(ee_health_check | grep error | wc -l)
    [[ $errors -eq 0 ]] && echo -n "${green}OK${reset}  " || echo -n "${red}KO${reset}  "
    echo "errors=$errors"
  }

  (
  #  (__health > .ee_health) &
    (__services > .ee_services) &
    (__zk > .ee_zk) &
    (__qaastor > .ee_qaastor) &
     wait
  )
  cat .ee_services
  # cat .ee_health
  cat .ee_zk
  cat .ee_qaastor

  __health
}

ee_json() {
  while read l; do
    name=$(cut -d '|' -f1 <<< $l )
    statuz=$(cut -d '|' -f2 <<< $l )
    msg=$(cut -d '|' -f3 <<< $l )
    echo '{"name":"'$name'","status":"'$statuz'","msg":"'$msg'"}'
  done < <(NO_COLOR=yes ee | sed -e "s/[ ]* /|/g" -e "s/^|//")
}

ee_zk() {
  ansible node -a 'sh -c "echo srvr | nc localhost 2182"' \
    | egrep -v "(version|Zxid|Outstanding|Sent|Received|count|Latency)"
}

ee_services() {
  lsc | jq -c 'to_entries[] | {host:.key, service:.value[] | {n:.Names[0],state:.State,status:.Status} }'
}

ee_qaastor() {
  get() {
  docker-machine ssh $DOCKER_MACHINE_NAME sudo tail -1000 /var/log/syslog \
    | grep qaastor | egrep "(produced|consumed)" | tail -2 \
    | sed -r "s|.*Messages ([a-z]*).*count=([0-9]*).*rate1m=([0-9])*\..*|\1:\2:\3|"
  }
  rates="$(get)"
  consumed=$(grep consumed <<< $rates | cut -d ":" -f2)
  produced=$(grep produced <<< $rates | cut -d ":" -f2)
  echo -n "lag="
  expr $produced - $consumed
}

ee_health_check() {
  ansible node -a health
}