用户工具

站点工具


02-工程实践:kubernetes:tools:router_log

lsapp脚本

lsapp.sh
#!/bin/bash
 
function color()
{
	echo -e "\033[41m$1\033[0m"
}
 
NETNSPRE="/var/run/docker/netns/"
 
function lsapp() {
	echo "CONTAINER-ID   NETNS		 CPU	   MEM		APP		 NAMESPACE"
	for id in `docker ps |awk 'NR!=1{print $1}'`;do
		LOG="/tmp/docker_inspect_$id.log"
		docker inspect $id > $LOG
		dockerType=`cat $LOG |grep io.kubernetes.docker.type |awk -F'"' '{print $4}'`
		if [ "$dockerType"x == "container"x ];then
			ns=`cat $LOG |grep "io.kubernetes.pod.namespace" |awk -F'"' '{print $4}'`
			sandboxId=`cat $LOG |grep io.kubernetes.sandbox.id |awk -F'"' '{print $4}'`
			SANDLOG="/tmp/docker_inspect_$sandboxId.log"
			docker inspect $sandboxId > $SANDLOG
			app=`cat $SANDLOG |grep -w '"app"' |awk -F'"' '{print $4}'`
			if [ "$app"x == ""x ];then
				app=`cat $LOG |grep -w '"io.kubernetes.pod.name"' |awk -F'"' '{print $4}'`
			fi
			cpu=`cat $LOG |grep -w '"CpuShares"' |awk '{print $NF}' |tr -d ','`
			mem=`cat $LOG |grep -w '"Memory"' |awk '{print $NF}' |tr -d ',' |awk '{print int($0/1024/1024)"MB"}'`
			netns=`cat $SANDLOG |grep -w "SandboxKey" |awk -F'"' '{print $4}' |awk -F'/' '{print $NF}'`
			printf "%s  %-12s  %-15s	%-15s  %-15s	%-15s %s\n" "$id" "$netns" "`color $cpu`" "$mem" "$app" "$ns"
		else
			continue
		fi
	done
}
 
function taillog() {
	[ $# -lt 1 ] && helpinfo
	logpath=`docker inspect $1 2>/dev/null|grep "LogPath" |awk -F'"' '{print $4}'`
	if [ "$logpath"x == ""x ];then
		dockerid=`docker ps |grep "$1" |head -n1 |awk '{print $1}'`
		logpath=`docker inspect $dockerid 2>/dev/null|grep "LogPath" |awk -F'"' '{print $4}'`
	fi
	if [ "$logpath"x != ""x ];then
		tail -f $logpath
	fi
}
 
function helpinfo() {
	echo "$0 ls						list apps"
	echo "$0 log containerid or app	tail log of container"
	echo "$0 ss  app				run ss in container net namespace"
	echo "$0 cd  containerid		cd container mergedir"
	exit 1
}
 
function ssant() {
	[ $# -lt 1 ] && helpinfo
	sandboxid=`docker ps |grep $1 |grep "POD" |head -n1 |awk '{print $1}'`
	netns=`docker inspect $sandboxid | grep -w "SandboxKey" |awk -F'"' '{print $4}'`
	nsenter --net=$netns ss -ant
}
 
function mergedir() {
	[ $# -lt 1 ] && helpinfo
	merge=`docker inspect $1 | grep "MergedDir" |awk -F'"' '{print $4}'`
	cd $merge
}
 
case $1 in
	ls) lsapp;;
	log) taillog $2;;
	ss) ssant $2;;
	cd) mergedir $2;;
	*) helpinfo;;
esac
02-工程实践/kubernetes/tools/router_log.txt · 最后更改: 2020/04/07 06:34 由 annhe