由于工作原因,平时需要suse的工程师做二线技术支持,除了经常会提交kdump分析的结果给suse 工程师定位根因,而在没有kdump生成时,经常会用的指令就是supportconfig收集系统信息,其收集内容基本涵盖了内核、模块、系统、服务等几乎所有我们能想到的信息,另外还会出一份简单的health check报告,其除了适用于suse企业版外,同样在opensuse上也可以使用,本篇就结合现网使用的场景对supportconfig命令做一个简单的概括.
一、supportconfig的安装
可以通过yast进行安装,也可以通过zypper命令进行安装,安装命令如下.
直接使用源进行安装,代码如下:#zypper install supportutils
也可以将rpm包下载下来使用yast进行安装或者在yast的管理界面里查找安装:
#yast install supportutils-xxx.rpm
注:根据系统的版本不同,包名也可能是supportconfig.
安装完成后可以使用rpm -ql supportutils 查看包中具体包含的文件信息,如下:
- #rpm-qlsupportutils
- /etc/schealth.conf
- /etc/supportconfig.conf
- /sbin/chkbin
- /sbin/supportconfig
- /usr/bin/schealth
- /usr/share/man/man5/supportconfig.conf.5.gz
- /usr/share/man/man8/chkbin.8.gz
- /usr/share/man/man8/supportconfig.8.gz
注:上面的结果是在 suse11 sp1企业版上的测试的结果,在opensuse 13上目录结构会略有不同,其上使用的是新版本的supportconfig.
二、supportconfig用法
以下是supportconfig的帮助输出,代码如下:
- #supportconfig-h
- =============================================================================
- SupportUtilities-Supportconfig
- ScriptVersion:2.25-197
- ScriptDate:20100402
- =============================================================================
- Usage:supportconfig[OPTION[OPTION...]]
- -hThisscreen
- -AActivatesallsupportconfigfunctionswithadditionalloggingandfull
- rpmverification.
- -B<string>Customtarballfilenameelement
- -CCreatesanewdefault/etc/supportconfig.conf
- -DUsedefaults;ignore/etc/supportconfig.conf
- -E<string>Contactemailaddress
- -FDisplayavailablesupportconfigfeaturekeywords(case-sensitive)used
- with-iand-x
- -G<gpg_uid>TheGPGrecipient'suserIDusedtoencryptthesupportconfigtarball
- -H<number>LimitnumberofincludedHAPolicyenginefiles
- -I<number>Defaultlogfilelinecount
- -LCreateafullfilelistingfrom'/'
- -M<string>ContactterminalID
- -N<string>Contactname
- -O<string>Contactcompanyname
- -P<string>Contactphonenumber
- -QRuninsilentmode
- -R<path>Logoutputdirectory
- -S<number>LimitnumberofincludedSARfiles
- -T<seconds>Binaryexecutiontimeout
- -U<URIstring>SetsuploadtargetURLandinitiatesanupload,supported
- servicesinclude:ftp,scp,http,https
- -M<string>ContactstoreID
- -X<number>Maxsystemlogslinecount
- -aUploadthetarballtothespecifiedalternatetargetVAR_OPTION_UPLOAD_ALT
- -bScreenbuffermode
- -dExcludedetaileddiskinfoandscans
- -eSearchrootfilesystemforeDirectoryinstances;-Limplied.Bepatient.
- -fFromdirectory.Don'tcollectreportfiles,justusefilesinthat
- directory.
- -gUsegzipinsteadofthedefaultbzip2compression.
- -i<keywordlist>
- Includekeywords.Acommaseparatedlistoffeaturekeywordsthatspecify
- whichfeaturestoinclude.Use-Ftoseealistofvalidkeywords.
- -lGathersadditionalrotatedlogs
- -mOnlygatheraminimumamountofinfo:basicenv,basichealth,hardware,
- rpm,messages,y2logs
- -oTogglelistedfeaturesonoroff
- -pDisableallplugins
- -qAddauuidtothetarballfilenametoensureuniqueness
- -r<srnum>
- IncludestheNovell11digitservicerequestnumberwhenuploading
- thetarballtoNovell
- -sIncludefullSLPservicelists
- -tTargetdirectory.Justsavelogfileshere,donotcreatetarball.
- -uUploadthetarballtothespecifiedVAR_OPTION_UPLOAD_TARGET.
- -vPerformsanrpm-VforeachinstalledrpmNOTE:Thistakesalongtime
- tocomplete
- -x<keywordlist>
- Excludekeywords.Acommaseparatedlistoffeaturekeywordsthatspecify
- whichfeaturestoexclude.Use-Ftoseealistofvalidkeywords.
- -yOnlygathertheminimumy2logfiles.
- UseCtrl-totryandskipafunctionthatishanging.
- -----------------------------------------------------------------------------
- NOTE:
- Thistoolwillcreateatarballinthe/var/logdirectory.Pleaseattach
- thelogfiletarballtoyouropenService.RequestatthefollowingURL:
- https://secure-support.novell.com/eService_enu
- IfyoucannotattachthetarballtotheSR,thenemailittotheengineer.
- Pleasesubmitbugfixesorcommentsvia:
- http://en.opensuse.org/Supportutils#Reporting_Bugs
- =============================================================================
- SupportUtilities-Supportconfig
- ScriptVersion:2.25-197
- ScriptDate:20100402
- =============================================================================
默认supportconfig或supportconfig -A执行后会将收集后的结果打包为一个nts_主机名_日期.tbz 文件,同时会生成一个以该文件名加.md5后缀的文件.
三、supportconfig常用示例
1、supportconfig -A 收集所有日志,代码如下:
- #supportconfig
- =============================================================================
- SupportUtilities-Supportconfig
- ScriptVersion:2.25-290
- ScriptDate:20110714
- =============================================================================
- Gatheringsysteminformation
- DataDirectory:/var/log/nts_361way.com_140825_1504
- BasicServerHealthCheck...Done
- RPMDatabase...Done
- BasicEnvironment...Done
- BasicHealthReport...Done
- SystemModules...Done
- MemoryDetails...Done
- DiskI/O...Done
- YaSTFiles...Done
- Auditing...Done
- CrashInfo...Done
- NTP...Done
- PROC...Done
- BootFiles...Done
- SLERT...Skipped
- Updates...Done
- SMT...Skipped
- NovelleDirectory...PleaseWait...Skipped
- NovellLUM...Skipped
- NovellNCP...Skipped
- NovellNSS...Skipped
- NovellDFS...Skipped
- NovellSMS...Skipped
- NovellNCS...Skipped
- NovellAFP...Skipped
- NovellCIFS...Skipped
- NovelliManager...Skipped
- HACluster...Skipped
- OCFS2...Skipped
- DRBD...Skipped
- PAM...Done
- LDAP...Done
- CIMOM...Done
- OpenFiles...Done
- Environment...Done
- ETC...Done
- SYSCONFIG...Done
- SYSFS...Done
- SystemDaemons...Done
- CRON...Done
- AT...Done
- UDEV...Done
- LVM...PleaseWait...BaseDetailDone
- EVMS...Skipped
- SoftwareRaid...Done
- Multipathing...Done
- Networking...Done
- Web...Done
- InfiniBand...Done
- DNS...Done
- DHCP...Done
- SLP...Done
- SSH...Done
- iSCSI...Done
- Samba...Done
- NFS...Done
- AUTOFS...Done
- SARFiles...Done
- AppArmor...Done
- Xen...Done
- KVM...Done
- X...Done
- Printing...Done
- SMARTDisks...Excluded
- Hardware...PleaseWait...Done
- FileSystemList...Skipped
- SupportabilityAnalysis...PleaseWait...Done
- SystemLogs...Done
- CreatingTarBall
- ==[DONE]===================================================================
- Logfiletarball:/var/log/nts_361way.com_140825_1504.tbz
- Logfilesize:4.0M
- Logfilemd5sum:484b111cda54ca04419facd82a1da7d7
- PleaseattachthelogfiletarballtoyouropenServiceRequestatthe
- followingURL:
- https://secure-support.novell.com/eService_enu
- Youcanalsouploadthetarballtoftp.novell.com/incoming,orjustuse
- supportconfig-ur<srnum>,touploadthetarballautomatically.
- IfyoucannotattachthetarballtotheSR,thenemailittotheengineer.
- =============================================================================
其他常用用法:
- //以最小选项搜集所需的信息
- #supportconfig-m
- //在输出中包含附加的联系人信息
- #supportconfig-Etux@example.org-N"TuxPenguin"-O"PenguinInc."...
- //要查看完整的功能列表
- #supportconfig-F
- //仅收集某个模块的用法,如LVM相的信息
- #supportconfig-iLVM
- //-x的功能与-i刚好相反,是排除某个模块不收集
- #supportconfig-xLVM
- //使用-Uurl可以将收集的结果上传到服务器上,直接的服务有ftp,scp,http,https,如:
- #supportconfig-A-Uhttp://www.361way.com/files/
具体可以参看官方的常用的supportconfig选项部分,supportconfig收集的系统健康报告,代码如下:
- #supportconfig-A
- #cd/var/log
- #tarjxvfnts_361way.com_140825_1504.tbz
- #morebasic-health-report.txt
- #==[Command]======================================#
- #/usr/bin/schealth-q
- ######################################################################
- SupportconfigHealthCheckReportToolv1.00-5
- DateChecked:09/12/1404:40:37
- ######################################################################
- HealthCheckFiles[Green]
- ProcessesWaitingforRunQueue[Green]
- KernelTaintStatus[Red]
- KernelTainted:64>0
- CPUUtilization[Green]
- InterruptsPerSecond[Green]
- ContextSwitchesPerSecond[Green]
- FreeMemoryandDiskSwapping[Green]
- UsedDiskSpace[Green]
- UninterruptibleProcesses[Green]
- ZombieProcesses[Green]
- ######################################################################
- Status:RedFlag
- Checked:/var/log/nts_361way.com_140825_1504/basic-health-check.txt
- Report:/var/log/nts_361way.com_140825_1504/basic-health-report.txt
- ######################################################################
上面的报告中,我们发现kernel Tainted 状态为red,该处是通过cat /proc/sys/kernel/tainted 进行判断的,如果值不为0,则是内核受到污染,显的值不同,具体可以参看/usr/src/linux/Documentation/sysctl/kernel 文件,具体的值不一样,代表的意义也不一样,64报红是由于加载了非系统官方或非开源的模块所致,Unsupported modules loaded.
四、supportconfig配置文件
supportconfig的默认配置文件是 /etc/supportconfig.conf,其默认内容如下:
- #cat/etc/supportconfig.conf
- ####################################
- #DefaultOptions
- ####################################
- OPTION_AFP=1
- OPTION_APPARMOR=1
- OPTION_AUDIT=1
- OPTION_AUTOFS=1
- OPTION_BOOT=1
- OPTION_CHKCONFIG=1
- OPTION_CIFS=1
- OPTION_CIMOM=1
- OPTION_CRASH=1
- OPTION_CRON=1
- OPTION_DFS=1
- OPTION_DHCP=1
- OPTION_DISK=1
- OPTION_DNS=1
- OPTION_EDIR=1
- OPTION_ENV=1
- OPTION_ETC=1
- OPTION_EVMS=1
- OPTION_HA=1
- OPTION_HCREPORT=1
- OPTION_IB=1
- OPTION_ISCSI=1
- OPTION_LDAP=1
- OPTION_LUM=1
- OPTION_LVM=1
- OPTION_MEM=1
- OPTION_MOD=1
- OPTION_MPIO=1
- OPTION_NCP=1
- OPTION_NCS=1
- OPTION_NET=1
- OPTION_NFS=1
- OPTION_NSS=1
- OPTION_NTP=1
- OPTION_OCFS2=1
- OPTION_OFILES=1
- OPTION_PAM=1
- OPTION_PRINT=1
- OPTION_PROC=1
- OPTION_SAM=1
- OPTION_SAR=1
- OPTION_SLERT=1
- OPTION_SLP=1
- OPTION_SMART=0
- OPTION_SMB=1
- OPTION_SMS=1
- OPTION_SMT=1
- OPTION_SRAID=1
- OPTION_SSH=1
- OPTION_SYSCONFIG=1
- OPTION_SYSFS=1
- OPTION_UDEV=1
- OPTION_UP=1
- OPTION_UPD=1
- OPTION_WEB=1
- OPTION_X=1
- OPTION_XEN=1
- ADD_OPTION_EDIR=0
- ADD_OPTION_FSLIST=0
- ADD_OPTION_LOGS=0
- ADD_OPTION_MINDISK=0
- ADD_OPTION_MINYAST=0
- ADD_OPTION_RPMV=0
- ADD_OPTION_SLP=0
- VAR_OPTION_BIN_TIMEOUT_SEC=300
- VAR_OPTION_CONTACT_COMPANY=""
- VAR_OPTION_CONTACT_EMAIL=""
- VAR_OPTION_CONTACT_NAME=""
- VAR_OPTION_CONTACT_PHONE=""
- VAR_OPTION_CONTACT_STOREID=""
- VAR_OPTION_CONTACT_TERMINALID=""
- VAR_OPTION_CUSTOM_ARCH=""
- VAR_OPTION_GPG_UID=""
- VAR_OPTION_LINE_COUNT=500
- VAR_OPTION_LOG_DIRS="/var/log/tmp"
- VAR_OPTION_MSG_MAXSIZE=500000
- VAR_OPTION_PENGINE_FILES_LIMIT=250
- VAR_OPTION_SAR_FILES_LIMIT=30
- VAR_OPTION_SBM=0
- VAR_OPTION_SILENT=0 //phpfensi.com
- VAR_OPTION_UNIQUE_FILE=0
- VAR_OPTION_UPLOAD_ALT='https://secure-www.novell.com/upload?appname=supportconfig&file={tarball}'
- VAR_OPTION_UPLOAD_TARGET='ftp://ftp.novell.com/incoming'
配置文件中列出了默认收集的模块信息,公司信息、邮件、电话及上传的服务器目录等.
五、supportconfig总结
supportconfig是使用shell 编写的一个功能十分强大的工具,具体可以通过vim /sbin/supportconfig 查看,同时,由于linux命令上的通用性,我们甚至可以很简单的进行修改后将其移植到其他linux 发行版上,不过显然这是没必要的,因为还有一个比较通的用的开源工具sosreport和其作用差不多,而其适用性更强,后面会单独列一篇做一个总结.