#!/bin/bash
#------------------------------------------------
#scvserverdata - show server information
#------------------------------------------------
PROGNAME="scvserverdata"
VERSION="4.1"
usage() {
  echo "$PROGNAME $VERSION"
  echo "scvserverdata -s ; show server information"
  echo "scvserverdata -j ; returns server information as json"
  exit 1
}

if [ "$#" != "1" ];then
  usage
fi

#サーバの情報を取得
cpuname=`cat /proc/cpuinfo | grep model\ name | cut -d : -f 2 | sed -E 's/ +/ /g' | sed -e 's/^ //g' | uniq`
cpu=`cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l`
core=`cat /proc/cpuinfo | grep 'cpu cores' | uniq | cut -d : -f 2 | sed -e 's/^ //g'`
thread=`cat /proc/cpuinfo | grep processor | wc -l`
memtotal_h=`free -h | grep Mem: | sed -E 's/\s+/ /g' | cut -d ' ' -f 2`
memtotal=`free | grep Mem: | sed -E 's/\s+/ /g' | cut -d ' ' -f 2`
memused_h=`free -h | grep Mem: | sed -E 's/\s+/ /g' | cut -d ' ' -f 3`
memused=`free | grep Mem: | sed -E 's/\s+/ /g' | cut -d ' ' -f 3`
df=`timeout 5 df -l --total | grep total | sed -E 's/\s+/ /g' | cut -d ' ' -f 5`
loadavg=`cat /proc/loadavg`
uname=`uname -a`
os_version=`lsb_release -d | cut -d : -f 2 | sed -E 's/^\s+//'`
scv_version=`scvver -all | grep SCV_VERSION | cut -d = -f 2`
scvdirect_version=`scvdirect -v`
scvclustd_version=`scvclustd -v`
scvsync_version=`scvsync -v`
scvsqle_version=`scvsqle -v`
scvlicense_version=`scvlicense -v`
scvmakeconf_version=`scvmakeconf -v`
scvmond_version=`scvmond -v`
docker_version=`docker -v | cut -d " " -f 3 | sed -e 's/,//'`
cpustat=`cpustat`
docker_status=`ps aux | grep dockerd | grep -v grep| wc -l`
mysql_status=`ps aux | grep mysql | grep -v grep | wc -l`
apache_status=` ps aux |grep apache2 | grep -v grep | wc -l`
scvclustd_ps=`scvclustd -ps | wc -l`
scvmond_ps=`scvmond -ps | wc -l`
role=`scvclustd -role`

#引数が-jの時はjsonとして整形して表示
if [ "$1" = "-j" ];then
  json="{\
    \"version_info\": { \
      \"scv\":\"$scv_version\", \
      \"scvdirect\":\"$scvdirect_version\", \
      \"scvclustd\":\"$scvclustd_version\", \
      \"scvsync\":\"$scvsync_version\", \
      \"scvremove\":\"$scvremove_version\", \
      \"scvsqle\":\"$scvsqle_version\", \
      \"scvlicense\":\"$scvlicense_version\", \
      \"scvmakeconf\":\"$scvmakeconf_version\", \
      \"scvmond\":\"$scvmond_version\", \
      \"docker\":\"$docker_version\"
    }, \
    \"cpuname\":\"$cpuname (${cpu}P/${core}C/${thread}PR)\", \
    \"memtotal_h\":\"$memtotal_h\", \
    \"memtotal\":\"$memtotal\", \
    \"memused\":\"$memused\", \
    \"df\":\"$df\", \
    \"loadavg\":\"$loadavg\", \
    \"os_version\":\"$os_version\", \
    \"uname\":\"$uname\", \
    \"cpustat\":\"$cpustat\", \
    \"process\": { \
      \"docker_status\":\"$docker_status\", \
      \"mysql_status\":\"$mysql_status\", \
      \"apache_status\":\"$apache_status\", \
      \"scvclustd_ps\":\"$scvclustd_ps\", \
      \"scvmond_ps\":\"$scvmond_ps\" \
    }, \
    \"role\":\"$role\" \
  }"
  echo $json

#引数が-sのときは1行ずつ表示
elif [ "$1" = "-s" ];then
  echo -e "scv version\t : scv $scv_version"
  echo -e "cpuname\t\t : $cpuname (${cpu}P/${core}C/${thread}PR)"
  echo -e "os version\t : $os_version"
  echo -e "total memory\t : $memtotal ($memtotal_h)"
  echo -e "used memory\t : $memused ($memused_h)"
  echo -e "disk usage\t : $df"
  echo -e "load average\t : $loadavg"
  echo -e "cpu used\t : $cpustat"
  echo -e "docker process\t : $docker_status"
  echo -e "mysql process\t : $mysql_status"
  echo -e "apache process\t : $apache_status"

#引数が-s,-jでは無いときはusageを表示
else
  usage
fi
