由于工作原因,平时需要suse的工程师做二线技术支持,除了经常会提交kdump分析的结果给suse 工程师定位根因。而在没有kdump生成时,经常会用的指令就是supportconfig收集系统信息。其收集内容基本涵盖了内核、模块、系统、服务等几乎所有我们能想到的信息,另外还会出一份简单的health check报告,其除了适用于suse企业版外,同样在opensuse上也可以使用。本篇就结合现网使用的场景对supportconfig命令做一个简单的概括。

一、supportconfig的安装

可以通过yast进行安装,也可以通过zypper命令进行安装,安装命令如下:

1直接使用源进行安装
2#zypper install supportutils
3也可以将rpm包下载下来使用yast进行安装或者在yast的管理界面里查找安装
4#yast install supportutils-xxx.rpm

注:根据系统的版本不同,包名也可能是supportconfig 。

安装完成后可以使用rpm -ql supportutils 查看包中具体包含的文件信息,如下:

1# rpm -ql supportutils
2/etc/schealth.conf
3/etc/supportconfig.conf
4/sbin/chkbin
5/sbin/supportconfig
6/usr/bin/schealth
7/usr/share/man/man5/supportconfig.conf.5.gz
8/usr/share/man/man8/chkbin.8.gz
9/usr/share/man/man8/supportconfig.8.gz

注:上面的结果是在 suse11 sp1企业版上的测试的结果,在opensuse 13上目录结构会略有不同,其上使用的是新版本的supportconfig。

二、supportconfig用法

以下是supportconfig的帮助输出

 1# supportconfig -h
 2=============================================================================
 3                     Support Utilities - Supportconfig
 4                          Script Version: 2.25-197
 5                          Script Date: 2010 04 02
 6=============================================================================
 7 Usage: supportconfig [OPTION [OPTION ...]]
 8  -h This screen
 9  -A Activates all supportconfig functions with additional logging and full
10     rpm verification.
11  -B <string> Custom tar ball file name element
12  -C Creates a new default /etc/supportconfig.conf
13  -D Use defaults; ignore  /etc/supportconfig.conf
14  -E <string> Contact email address
15  -F Display available supportconfig feature keywords (case-sensitive) used
16     with -i and -x
17  -G <gpg_uid> The GPG recipient's user ID used to encrypt the supportconfig tarball
18  -H <number> Limit number of included HA Policy engine files
19  -I <number> Default log file line count
20  -L Create a full file listing from '/'
21  -M <string> Contact terminal ID
22  -N <string> Contact name
23  -O <string> Contact company name
24  -P <string> Contact phone number
25  -Q Run in silent mode
26  -R <path> Log output directory
27  -S <number> Limit number of included SAR files
28  -T <seconds> Binary execution timeout
29  -U <URI string> Sets upload target URL and initiates an upload, supported
30                  services include: ftp, scp, http, https
31  -M <string> Contact store ID
32  -X <number> Max system logs line count
33  -a Upload the tar ball to the specified alternate target VAR_OPTION_UPLOAD_ALT
34  -b Screen buffer mode
35  -d Exclude detailed disk info and scans
36  -e Search root file system for eDirectory instances; -L implied. Be patient.
37  -f From directory. Don't collect report files, just use files in that
38     directory.
39  -g Use gzip instead of the default bzip2 compression.
40  -i <keyword list>
41     Include keywords. A comma separated list of feature keywords that specify
42     which features to include. Use -F to see a list of valid keywords.
43  -l Gathers additional rotated logs
44  -m Only gather a minimum amount of info: basic env, basic health, hardware,
45     rpm, messages, y2logs
46  -o Toggle listed features on or off
47  -p Disable all plugins
48  -q Add a uuid to the tar ball filename to ensure uniqueness
49  -r <srnum>
50     Includes the Novell 11 digit service request number when uploading
51     the tar ball to Novell
52  -s Include full SLP service lists
53  -t Target directory. Just save log files here, do not create tarball.
54  -u Upload the tar ball to the specified VAR_OPTION_UPLOAD_TARGET.
55  -v Performs an rpm -V for each installed rpm  NOTE: This takes a long time
56     to complete
57  -x <keyword list>
58     Exclude keywords. A comma separated list of feature keywords that specify
59     which features to exclude. Use -F to see a list of valid keywords.
60  -y Only gather the minimum y2log files.
61  Use Ctrl- to try and skip a function that is hanging.
62-----------------------------------------------------------------------------
63  NOTE:
64  This tool will create a tar ball in the /var/log directory. Please attach
65  the log file tar ball to your open Service.  Request at the following URL:
66  https://secure-support.novell.com/eService_enu
67  If you cannot attach the tar ball to the SR, then email it to the engineer.
68  Please submit bug fixes or comments via:
69  http://en.opensuse.org/Supportutils#Reporting_Bugs
70=============================================================================
71                     Support Utilities - Supportconfig
72                          Script Version: 2.25-197
73                          Script Date: 2010 04 02
74=============================================================================

默认supportconfig或supportconfig -A执行后会将收集后的结果打包为一个nts_主机名_日期.tbz 文件,同时会生成一个以该文件名加.md5后缀的文件。

三、supportconfig常用示例

1、supportconfig -A 收集所有日志

 1# supportconfig
 2=============================================================================
 3                     Support Utilities - Supportconfig
 4                          Script Version: 2.25-290
 5                          Script Date: 2011 07 14
 6=============================================================================
 7Gathering system information
 8  Data Directory:    /var/log/nts_361way.com_140825_1504
 9  Basic Server Health Check...                 Done
10  RPM Database...                              Done
11  Basic Environment...                         Done
12  Basic Health Report...                       Done
13  System Modules...                            Done
14  Memory Details...                            Done
15  Disk I/O...                                  Done
16  YaST Files...                                Done
17  Auditing...                                  Done
18  Crash Info...                                Done
19  NTP...                                       Done
20  PROC...                                      Done
21  Boot Files...                                Done
22  SLERT...                                     Skipped
23  Updates...                                   Done
24  SMT...                                       Skipped
25  Novell eDirectory...                         Please Wait... Skipped
26  Novell LUM...                                Skipped
27  Novell NCP...                                Skipped
28  Novell NSS...                                Skipped
29  Novell DFS...                                Skipped
30  Novell SMS...                                Skipped
31  Novell NCS...                                Skipped
32  Novell AFP...                                Skipped
33  Novell CIFS...                               Skipped
34  Novell iManager...                           Skipped
35  HA Cluster...                                Skipped
36  OCFS2...                                     Skipped
37  DRBD...                                      Skipped
38  PAM...                                       Done
39  LDAP...                                      Done
40  CIMOM...                                     Done
41  Open Files...                                Done
42  Environment...                               Done
43  ETC...                                       Done
44  SYSCONFIG...                                 Done
45  SYSFS...                                     Done
46  System Daemons...                            Done
47  CRON...                                      Done
48  AT...                                        Done
49  UDEV...                                      Done
50  LVM...                                       Please Wait... Base Detail Done
51  EVMS...                                      Skipped
52  Software Raid...                             Done
53  Multipathing...                              Done
54  Networking...                                Done
55  Web...                                       Done
56  InfiniBand...                                Done
57  DNS...                                       Done
58  DHCP...                                      Done
59  SLP...                                       Done
60  SSH...                                       Done
61  iSCSI...                                     Done
62  Samba...                                     Done
63  NFS...                                       Done
64  AUTOFS...                                    Done
65  SAR Files...                                 Done
66  AppArmor...                                  Done
67  Xen...                                       Done
68  KVM...                                       Done
69  X...                                         Done
70  Printing...                                  Done
71  SMART Disks...                               Excluded
72  Hardware...                                  Please Wait... Done
73  File System List...                          Skipped
74  Supportability Analysis...                   Please Wait... Done
75  System Logs...                               Done
76Creating Tar Ball
77==[ DONE ]===================================================================
78  Log file tar ball: /var/log/nts_361way.com_140825_1504.tbz
79  Log file size:     4.0M
80  Log file md5sum:   484b111cda54ca04419facd82a1da7d7
81  Please attach the log file tar ball to your open Service Request at the
82  following URL:
83  https://secure-support.novell.com/eService_enu
84  You can also upload the tar ball to ftp.novell.com/incoming, or just use
85  supportconfig -ur <srnum>, to upload the tar ball automatically.
86  If you cannot attach the tar ball to the SR, then email it to the engineer.
87=============================================================================

其他常用用法:

 1//以最小选项搜集所需的信息
 2# supportconfig -m
 3//在输出中包含附加的联系人信息
 4# supportconfig -E [email protected] -N "Tux Penguin" -O "Penguin Inc." ...
 5//要查看完整的功能列表
 6# supportconfig -F
 7//仅收集某个模块的用法,如LVM相的信息
 8# supportconfig -i LVM
 9//-x 的功能与-i刚好相反,是排除某个模块不收集
10# supportconfig -x LVM
11//使用-U url 可以将收集的结果上传到服务器上,直接的服务有ftp, scp, http, https,如:
12# supportconfig -A -U https://blog.361way.com/files/

具体可以参看官方的 常用的supportconfig选项 部分 。

supportconfig收集的系统健康报告:

 1# supportconfig -A
 2# cd /var/log
 3# tar jxvf nts_361way.com_140825_1504.tbz
 4# more basic-health-report.txt
 5#==[ Command ]======================================#
 6# /usr/bin/schealth -q
 7######################################################################
 8Supportconfig Health Check Report Tool v1.00-5
 9Date Checked: 09/12/14 04:40:37
10######################################################################
11Health Check Files                                         [  Green  ]
12Processes Waiting for Run Queue                            [  Green  ]
13Kernel Taint Status                                        [   Red   ]
14 Kernel Tainted: 64 > 0
15CPU Utilization                                            [  Green  ]
16Interrupts Per Second                                      [  Green  ]
17Context Switches Per Second                                [  Green  ]
18Free Memory and Disk Swapping                              [  Green  ]
19Used Disk Space                                            [  Green  ]
20Uninterruptible Processes                                  [  Green  ]
21Zombie Processes                                           [  Green  ]
22######################################################################
23Status:   Red Flag
24Checked:  /var/log/nts_361way.com_140825_1504/basic-health-check.txt
25Report:   /var/log/nts_361way.com_140825_1504/basic-health-report.txt
26######################################################################

上面的报告中,我们发现kernel Tainted 状态为red ,该处是通过cat /proc/sys/kernel/tainted 进行判断的,如果值不为0,则是内核受到污染 ,显的值不同,具体可以参看/usr/src/linux/Documentation/sysctl/kernel 文件(具体的值不一样,代表的意义也不一样)。64报红是由于加载了非系统官方或非开源的模块所致( Unsupported modules loaded)。

四、supportconfig配置文件

supportconfig的默认配置文件是 /etc/supportconfig.conf ,其默认内容如下:

 1# cat /etc/supportconfig.conf
 2####################################
 3# Default Options
 4####################################
 5OPTION_AFP=1
 6OPTION_APPARMOR=1
 7OPTION_AUDIT=1
 8OPTION_AUTOFS=1
 9OPTION_BOOT=1
10OPTION_CHKCONFIG=1
11OPTION_CIFS=1
12OPTION_CIMOM=1
13OPTION_CRASH=1
14OPTION_CRON=1
15OPTION_DFS=1
16OPTION_DHCP=1
17OPTION_DISK=1
18OPTION_DNS=1
19OPTION_EDIR=1
20OPTION_ENV=1
21OPTION_ETC=1
22OPTION_EVMS=1
23OPTION_HA=1
24OPTION_HCREPORT=1
25OPTION_IB=1
26OPTION_ISCSI=1
27OPTION_LDAP=1
28OPTION_LUM=1
29OPTION_LVM=1
30OPTION_MEM=1
31OPTION_MOD=1
32OPTION_MPIO=1
33OPTION_NCP=1
34OPTION_NCS=1
35OPTION_NET=1
36OPTION_NFS=1
37OPTION_NSS=1
38OPTION_NTP=1
39OPTION_OCFS2=1
40OPTION_OFILES=1
41OPTION_PAM=1
42OPTION_PRINT=1
43OPTION_PROC=1
44OPTION_SAM=1
45OPTION_SAR=1
46OPTION_SLERT=1
47OPTION_SLP=1
48OPTION_SMART=0
49OPTION_SMB=1
50OPTION_SMS=1
51OPTION_SMT=1
52OPTION_SRAID=1
53OPTION_SSH=1
54OPTION_SYSCONFIG=1
55OPTION_SYSFS=1
56OPTION_UDEV=1
57OPTION_UP=1
58OPTION_UPD=1
59OPTION_WEB=1
60OPTION_X=1
61OPTION_XEN=1
62ADD_OPTION_EDIR=0
63ADD_OPTION_FSLIST=0
64ADD_OPTION_LOGS=0
65ADD_OPTION_MINDISK=0
66ADD_OPTION_MINYAST=0
67ADD_OPTION_RPMV=0
68ADD_OPTION_SLP=0
69VAR_OPTION_BIN_TIMEOUT_SEC=300
70VAR_OPTION_CONTACT_COMPANY=""
71VAR_OPTION_CONTACT_EMAIL=""
72VAR_OPTION_CONTACT_NAME=""
73VAR_OPTION_CONTACT_PHONE=""
74VAR_OPTION_CONTACT_STOREID=""
75VAR_OPTION_CONTACT_TERMINALID=""
76VAR_OPTION_CUSTOM_ARCH=""
77VAR_OPTION_GPG_UID=""
78VAR_OPTION_LINE_COUNT=500
79VAR_OPTION_LOG_DIRS="/var/log /tmp"
80VAR_OPTION_MSG_MAXSIZE=500000
81VAR_OPTION_PENGINE_FILES_LIMIT=250
82VAR_OPTION_SAR_FILES_LIMIT=30
83VAR_OPTION_SBM=0
84VAR_OPTION_SILENT=0
85VAR_OPTION_UNIQUE_FILE=0
86VAR_OPTION_UPLOAD_ALT='https://secure-www.novell.com/upload?appname=supportconfig&file={tarball}'
87VAR_OPTION_UPLOAD_TARGET='ftp://ftp.novell.com/incoming'

配置文件中列出了默认收集的模块信息,公司信息、邮件、电话及上传的服务器目录等。

五、supportconfig总结

supportconfig是使用shell 编写的一个功能十分强大的工具,具体可以通过vim /sbin/supportconfig 查看 。同时,由于linux命令上的通用性,我们甚至可以很简单的进行修改后将其移植到其他linux 发行版上。不过显然这是没必要的,因为还有一个比较通的用的开源工具sosreport和其作用差不多,而其适用性更强,后面会单独列一篇做一个总结。