#!/usr/bin/env bash
#指定结果文件
echo -ne "继续选择 y 放弃选择 n:"
#read result
result=`echo $result | tr -d " "`
#echo y|
if [[ $? -ne 0 ]]
then
print -u2 "failed."
exit 1
fi
echo "#############"
echo $result
echo "#############"
# send stderr to /dev/null gloabally
exec 2>/tmp/sa.err
# colors
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
reset=$(tput sgr0)
getHardwareData() {
cpuModel=$(awk -F: '/^model name/ {print $2; exit}' /proc/cpuinfo)
cpuCount=$(awk -F: '/^physical id/ { print $2 }' /proc/cpuinfo |sort -u |wc -l)
cpuCoreCount=$(lscpu |grep "^CPU(s):" |xargs |cut -d" " -f2)
cpuCoreList=$(lscpu |grep "^On-line CPU(s) list:" |xargs)
cpuData="$cpuCount x $cpuModel ($cpuCoreList)"
numaNodes=$(lscpu |grep -w "^NUMA node" |awk '{print $3}')
memTotal=$(awk '/^MemTotal/ {printf "%.2f GiB", $2 / 1024 / 1024}' /proc/meminfo |xargs echo)
swapTotal=$(awk '/^SwapTotal/ {printf "%.2f GiB", $2 / 1024 / 1024}' /proc/meminfo |xargs echo)
memData="physical memory: $memTotal; swap: $swapTotal"
for disk in $(grep -Ewo '(s|h|v|xv)d[a-z]|c[0-9]d[0-9]' /proc/partitions |sort -r |xargs echo); do
size=$(echo $(($(cat /sys/dev/block/$(grep -w $disk /proc/partitions |awk '{print $1":"$2}')/size) * 512 / 1024 / 1024 / 1024)))
diskData="$disk size ${size} GiB, $diskData"
done
diskData=$(echo $diskData |sed -e 's/,$//')
}
getOsData() {
hostname=$(hostname)
full_hostname=$(hostname -f)
arch=$(uname --machine)
os=$(find /etc -maxdepth 1 -name '*release' -type f | xargs cat |grep -E '^(PRETTY_NAME|DISTRIB_DESCRIPTION)'|head -n 1 |cut -d= -f2 |tr -d \")
kernel=$(uname -sr)
ip=$(ip address list |grep -oE "inet [0-9]{1,3}(\.[0-9]{1,3}){3}" |awk '{ print $2 }' |xargs echo)
[[ $(lsblk -n -o type |grep -c lvm) > 0 ]] && isLvmUsed=true || isLvmUsed=false
[[ $(lsblk -n -o type |grep -c raid) > 0 ]] && isMdraidUsed=true || isMdraidUsed=false
sKernSchedMigCost=$(sysctl -n -e kernel.sched_migration_cost_ns kernel.sched_migration_cost)
sKernSchedAG=$(sysctl -n -e kernel.sched_autogroup_enabled)
sVmDBytes=$(sysctl -n -e vm.dirty_bytes)
sVmDBgBytes=$(sysctl -n -e vm.dirty_background_bytes)
sVmDRatio=$(sysctl -n -e vm.dirty_ratio)
sVmDBgRatio=$(sysctl -n -e vm.dirty_background_ratio)
sVmDExpCSec=$(sysctl -n -e vm.dirty_expire_centisecs)
sVmOverMem=$(sysctl -n -e vm.overcommit_memory)
sVmOverRatio=$(sysctl -n -e vm.overcommit_ratio)
sVmSwap=$(sysctl -n -e vm.swappiness)
sVmMinFreeKb=$(sysctl -n -e vm.min_free_kbytes)
sVmZoneReclaim=$(sysctl -n -e vm.zone_reclaim_mode)
sKernNumaBal=$(sysctl -n -e kernel.numa_balancing)
sVmNrHP=$(sysctl -n -e vm.nr_hugepages)
sVmNrOverHP=$(sysctl -n -e vm.nr_overcommit_hugepages)
hpSizeMbCmd=$(awk '/^Hugepagesize:/ {print $2 / 1024}' /proc/meminfo)
hpSizeMb=${hpSizeMbCmd:-0}
hpTotalAllocCmd=$(awk '/^HugePages_Total:/ {print $2}' /proc/meminfo)
hpTotalAlloc=${hpTotalAllocCmd:-0}
hpTotalAllocGb=$(( $hpTotalAlloc * $hpSizeMb / 1024))
thpTotalAllocGb=$(awk '/^AnonHugePages:/ {printf "%.2f GiB", $2 / 1024 / 1024}' /proc/meminfo)
thpState=$(cat /sys/kernel/mm/transparent_hugepage/enabled |grep -oE '\[[a-z]+\]' |tr -d \[\])
thpDefrag=$(cat /sys/kernel/mm/transparent_hugepage/defrag |grep -oE '\[[a-z]+\]' |tr -d \[\])
sVmLaptop=$(sysctl -n -e vm.laptop_mode)
blkMqMod=$(find /sys/module -name use_blk_mq |cut -d/ -f4 |xargs echo)
hostList=$(ls -1 /sys/class/scsi_host/ |grep -owE 'host[0-9]+')
useBlkMq=$(cat /sys/class/scsi_host/host*/use_blk_mq |uniq -c)
}
echo -n "${yellow}Do an audit of the particular database? [y/n]: ${reset}"
main() {
getHardwareData
getOsData
getPkgInfo
getPostgresCommonData
[[ $pgcheck_success == 0 ]] && echo "WARNING: can't connect to postgres, skip postgres checks."
printSummary
doDbAudit
echo "${green}Finished.${reset}"
}
#main
check() {
getHardwareData
getOsData
getPkgInfo
getPostgresCommonData
[[ $pgcheck_success == 0 ]] && echo "WARNING: can't connect to postgres, skip postgres checks."
printSummary
doDbAudit
echo "${green}Finished.${reset}"
}
echo -n "${yellow}Do an audit of the particular database? [y/n]: ${reset}"
check
echo "
VERSION=$VERSION
${UPDATES}
GetConfig is specifically designed to be non-intrusive.
It will not impact system performance as even on slow systems it only take between 1 & 10 minutes to run.
It will only take longer if you have large HSSM, HTnM or HDvM logs.
##################################################################
GETCONFIG INSTRUCTIONS
##################################################################
# SILENT (NO OPTION) MODE
##################################################################
# ./getcfg <casenumber> -s <output destination>
*note:
<casenumber> is the HDS case number including prefix
-s is for silent mode
<output destination> is optional. If not specified /tmp is used.
In silent Mode, ALL defaults are accepted
##################################################################
# SILENT (NO OPTION) VERBOSE MODE
##################################################################
# ./getcfg <casenumber> -s -v <output destination> >/tmp/output.txt 2>&1 &
*note:
<casenumber> is the HDS case number including prefix
-s is for silent mode
-v is for verbose mode
<output destination> is the destination directory
You may use any combination (-sv) or (-vs)
It is strongly advised to add the >/tmp/output.txt 2>&1 & to capture
the output and run the script in the background when running it with the
verbose option.
You may also leave out the mode flags to specify only an output
destination
For example:
# ./getcfg <casenumber> <output destination>
This way you may run
# tail -f /tmp/output.txt
to view the results real-time while the getconfig completes.
##################################################################
# DEFAULT OPTION MODE
# *note: [] means accept the default option. Press <enter>
##################################################################
/tmp> #./getcfg
##################################################################
GSC GetConfig Data Collection Script version 7.15
##################################################################
Display README? [n]:
Enter your case number including HDS SD or EUC prefix : HDS00003640
Specify path to save getconfig data [/tmp]:
Display additional options? [n]:
##################################################################
Gathering standard system files .........
Gathering process information .....
Gathering additional system information ......
Gathering Platform Information and Control Library info ....
Gathering list of /usr/lib & /usr/local/lib files ...
Gathering error logs .......
Gathering dmesg log ...
...
##################################################################
# ADDITIONAL OPTIONS
# *note: [] means accept the default option. Press <enter>
##################################################################
/tmp> #./getcfg
##################################################################
GetConfig Data Collection Script version 7.15
##################################################################
Display README? [n]:
Enter your case number including HDS SD or EUC prefix : HDS00003640
Specify path to save getconfig data [/tmp]:
Display additional options? [n]: y
>Verbose mode? (*note: output is sent to screen) [n]: y
>Display Excludes? [n]: y
>>Exclude hdvm from getconfig? [n]:
>>Exclude htnm from getconfig? [n]:
>>Exclude hssm from getconfig? [n]:
>>Exclude hdlm from getconfig? [n]:
>>Exclude veritas from getconfig? [n]:
>>Exclude hitrack from getconfig? [n]:
>>Exclude horcm from getconfig? [n]:
>>Exclude rapidx from getconfig? [n]:
##################################################################
Gathering standard system files .........
Gathering process information .....
Gathering additional system information ......
Gathering Platform Information and Control Library info ....
Gathering list of /usr/lib & /usr/local/lib files ...
Gathering error logs .......
Gathering dmesg log ...
...
##################################################################
: LEGAL STUFF
This HDS Data Collection Tool ("GetConfig") is provided AS IS, with no warranty of any kind. Neither Hitachi Data Systems (HD
S) nor Hitachi, Ltd. warrants or represents the content of this tool. HDS and Hitachi, Ltd. disclaim all express and implied
warranties , including the implied warranties of merchantability, fitness for a particular purpose and non-infringement. You
are wholly responsible for your use of this tool and the results of such use. Neither HDS nor Hitachi, Ltd. shall be liable f
or any damages, direct, indirect, incidental, special, consequential or otherwise for the information, your use of the inform
ation or the result of such use.
##################################################################
"|more;
网友评论