sosreport
sosreport是一個類型於supportconfig 的工具,sosreport是python編寫的一個工具,適用於centos(和redhat一樣,包名為sos)、ubuntu(其下包名為sosreport)等大多數版本的linux 。sosreport在github上的托管頁面為:https://github.com/sosreport/sos ,而且默認在很多系統的源裡都已經集成有。如果使用的是正版redhat,在出現系統問題,尋求官方支持時,官方一般也會通過sosreport將收集的信息進行分析查看。需要注意的是在一些老的redhat發行版中叫sysreport ------ 如redhat4.5之前的版本中。
一、sosreport的安裝
在默認使用linux發行版的源進行安裝時,由於在不同的系統上包名稱也會有差異,所以使用的命令也不同,如redhat和ubuntu平台的安裝如下:
代碼如下:
// redhat/centos下的安裝
# yum -y insatll sos
// ubuntu下的安裝
# sudo apt-get install sosreport
二、sosreport用法
可以使用sosreport --help或man sosreport 獲取使用幫助手冊,如下:
代碼如下:
[root@361way ~]# sosreport --help
Usage: sosreport [options]
Options:
-h, --help show this help message and exit
-l, --list-plugins list plugins and available plugin options
-n NOPLUGINS, --skip-plugins=NOPLUGINS
disable these plugins
-e ENABLEPLUGINS, --enable-plugins=ENABLEPLUGINS
enable these plugins
-o ONLYPLUGINS, --only-plugins=ONLYPLUGINS
enable these plugins only
-k PLUGOPTS, --plugin-option=PLUGOPTS
plugin options in plugname.option=value format (see
-l)
-a, --alloptions enable all options for loaded plugins
--batch batch mode - do not prompt interactively
--build keep sos tree available and dont package results
-v, --verbose increase verbosity
--quiet only print fatal errors
--debug enable interactive debugging using the python debugger
--ticket-number=TICKET_NUMBER
specify ticket number
--name=CUSTOMER_NAME specify report name
--config-file=CONFIG_FILE
specify alternate configuration file
--tmp-dir=TMP_DIR specify alternate temporary directory
--report Enable HTML/XML reporting
--profile turn on profiling
-z COMPRESSION_TYPE, --compression-type=COMPRESSION_TYPE
compression technology to use [auto, zip, gzip, bzip2,
xz] (default=auto)
Some examples:
enable cluster plugin only and collect dlm lockdumps:
# sosreport -o cluster -k cluster.lockdump
disable memory and samba plugins, turn off rpm -Va collection:
# sosreport -n memory,samba -k rpm.rpmva=off
上面也列出了具體操作的示例。其中-l 參數會列出當前enable和disable的所有服務插件及當前available的所有插件。
代碼如下:
[root@361way log]# sosreport -a --report
sosreport (version 3.0)
This command will collect diagnostic and configuration information from
this CentOS Linux system and installed applications.
An archive containing the collected information will be generated in
/var/tmp and may be provided to a CentOS support representative.
Any information provided to CentOS will be treated in accordance with
the published support policies at:
https://www.centos.org/
The generated archive may contain data considered sensitive and its
content should be reviewed by the originating organization before being
passed to any third party.
No changes will be made to system configuration.
Press ENTER to continue, or CTRL-C to quit.
Please enter your first initial and last name [361way.com]:
Please enter the case number that you are generating this report for:
Running plugins. Please wait ...
Running 68/68: yum...
Creating compressed archive...
Your sosreport has been generated and saved in:
/var/tmp/sosreport-361way.com-20140912204339.tar.xz
The checksum is: eaf5b2cbb1e9be68d41be5e5a60a61b6
Please send this file to your support representative.
如上所示,我使用-A 啟用所有的模塊,--report是開啟所有的結果以html /xml 的格式一個總的報告。生成的包需要通過下面的命令進行解包。
代碼如下:
# xz -d ***.tar.xz
# tar -xvf ***.tar
或直接使用下面的命令一步完成解壓
代碼如下:
tar xvJf ***.tar.xz
在解包後的sos_reports 目錄會有report的結果sos.html文件生成,同時會有sos.txt文件生成,該文件內列出了具體執行的命令及copy 文件的一些信息。
由於頁面較大,這裡只截出了最上面的部分,列出了所有的收集模塊,下面alerts 給出了報警模塊的信息。再往下就是具體到每一個模塊的信息。
三、sosreport配置文件
sosreport的配置文件是/etc/sos.conf ,默認內容如下:
代碼如下:
[root@361way ~]# cat /etc/sos.conf
[general]
#ftp_upload_url = ftp://example.com/incoming
#gpg_keyring = /usr/share/sos/rhsupport.pub
#gpg_recipient = [email protected]
smtp_server = None
[plugins] //此處可以設置默認enable和disable的模塊
#disable = rpm, selinux, dovecot
[tunables] //可調參數
#rpm.rpmva = off
#general.syslogsize = 15
從配置文件上可以看出,sosreport同樣將收集的結果上傳到server 上,可以通過man sos.conf 查看配置文件的幫助信息,不過man給出的並沒有太多信息,想在了解更多的信息可以查看 sosreport在github上的wiki頁 。
四、sosreport總結
相於supportconfig,由於sosreport是由python語言進行編寫的,所以其在功能擴展上更有優勢,但由於在不同的發行版本上的python版本不同,在進行功能擴展時,對不同版本間的異常處理相對麻煩。而supportconfig由於是shell 語言編寫的一個工具,對版本的依賴相對少些 ,但對一些工具的依賴相對多些 ,如在獲取進程相關的信息時,shell 需要將ps 工具或處理proc的結果,而sosreport則可以直接import psutil 模塊,兩者之間的區別,歸根到底就是shell 和python的區別。
supportconfig
一、supportconfig的安裝
可以通過yast進行安裝,也可以通過zypper命令進行安裝,安裝命令如下:
直接使用源進行安裝
代碼如下:
#zypper install supportutils
也可以將rpm包下載下來使用yast進行安裝或者在yast的管理界面裡查找安裝
代碼如下:
#yast install supportutils-xxx.rpm
注:根據系統的版本不同,包名也可能是supportconfig 。
安裝完成後可以使用rpm -ql supportutils 查看包中具體包含的文件信息,如下:
代碼如下:
# rpm -ql supportutils
/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
=============================================================================
Support Utilities - Supportconfig
Script Version: 2.25-197
Script Date: 2010 04 02
=============================================================================
Usage: supportconfig [OPTION [OPTION ...]]
-h This screen
-A Activates all supportconfig functions with additional logging and full
rpm verification.
-B
-C Creates a new default /etc/supportconfig.conf
-D Use defaults; ignore /etc/supportconfig.conf
-E
-F Display available supportconfig feature keywords (case-sensitive) used
with -i and -x
-G
-H
-I
-L Create a full file listing from '/'
-M
-N
-O
-P
-Q Run in silent mode
-R
-S
-T
-U
services include: ftp, scp, http, https
-M
-X
-a Upload the tar ball to the specified alternate target VAR_OPTION_UPLOAD_ALT
-b Screen buffer mode
-d Exclude detailed disk info and scans
-e Search root file system for eDirectory instances; -L implied. Be patient.
-f From directory. Don't collect report files, just use files in that
directory.
-g Use gzip instead of the default bzip2 compression.
-i
Include keywords. A comma separated list of feature keywords that specify
which features to include. Use -F to see a list of valid keywords.
-l Gathers additional rotated logs
-m Only gather a minimum amount of info: basic env, basic health, hardware,
rpm, messages, y2logs
-o Toggle listed features on or off
-p Disable all plugins
-q Add a uuid to the tar ball filename to ensure uniqueness
-r
Includes the Novell 11 digit service request number when uploading
the tar ball to Novell
-s Include full SLP service lists
-t Target directory. Just save log files here, do not create tarball.
-u Upload the tar ball to the specified VAR_OPTION_UPLOAD_TARGET.
-v Performs an rpm -V for each installed rpm NOTE: This takes a long time
to complete
-x
Exclude keywords. A comma separated list of feature keywords that specify
which features to exclude. Use -F to see a list of valid keywords.
-y Only gather the minimum y2log files.
Use Ctrl- to try and skip a function that is hanging.
-----------------------------------------------------------------------------
NOTE:
This tool will create a tar ball in the /var/log directory. Please attach
the log file tar ball to your open Service. Request at the following URL:
https://secure-support.novell.com/eService_enu
If you cannot attach the tar ball to the SR, then email it to the engineer.
Please submit bug fixes or comments via:
http://en.opensuse.org/Supportutils#Reporting_Bugs
=============================================================================
Support Utilities - Supportconfig
Script Version: 2.25-197
Script Date: 2010 04 02
=============================================================================
默認supportconfig或supportconfig -A執行後會將收集後的結果打包為一個nts_主機名_日期.tbz 文件,同時會生成一個以該文件名加.md5後綴的文件。
三、supportconfig常用示例
1、supportconfig -A 收集所有日志
復制代碼
代碼如下:
# supportconfig
=============================================================================
Support Utilities - Supportconfig
Script Version: 2.25-290
Script Date: 2011 07 14
=============================================================================
Gathering system information
Data Directory: /var/log/nts_361way.com_140825_1504
Basic Server Health Check... Done
RPM Database... Done
Basic Environment... Done
Basic Health Report... Done
System Modules... Done
Memory Details... Done
Disk I/O... Done
YaST Files... Done
Auditing... Done
Crash Info... Done
NTP... Done
PROC... Done
Boot Files... Done
SLERT... Skipped
Updates... Done
SMT... Skipped
Novell eDirectory... Please Wait... Skipped
Novell LUM... Skipped
Novell NCP... Skipped
Novell NSS... Skipped
Novell DFS... Skipped
Novell SMS... Skipped
Novell NCS... Skipped
Novell AFP... Skipped
Novell CIFS... Skipped
Novell iManager... Skipped
HA Cluster... Skipped
OCFS2... Skipped
DRBD... Skipped
PAM... Done
LDAP... Done
CIMOM... Done
Open Files... Done
Environment... Done
ETC... Done
SYSCONFIG... Done
SYSFS... Done
System Daemons... Done
CRON... Done
AT... Done
UDEV... Done
LVM... Please Wait... Base Detail Done
EVMS... Skipped
Software Raid... 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
SAR Files... Done
AppArmor... Done
Xen... Done
KVM... Done
X... Done
Printing... Done
SMART Disks... Excluded
Hardware... Please Wait... Done
File System List... Skipped
Supportability Analysis... Please Wait... Done
System Logs... Done
Creating Tar Ball
==[ DONE ]===================================================================
Log file tar ball: /var/log/nts_361way.com_140825_1504.tbz
Log file size: 4.0M
Log file md5sum: 484b111cda54ca04419facd82a1da7d7
Please attach the log file tar ball to your open Service Request at the
following URL:
https://secure-support.novell.com/eService_enu
You can also upload the tar ball to ftp.novell.com/incoming, or just use
supportconfig -ur
If you cannot attach the tar ball to the SR, then email it to the engineer.
=============================================================================
其他常用用法:
復制代碼
代碼如下:
//以最小選項搜集所需的信息
# supportconfig -m
//在輸出中包含附加的聯系人信息
# supportconfig -E [email protected] -N "Tux Penguin" -O "Penguin Inc." ...
//要查看完整的功能列表
# supportconfig -F
//僅收集某個模塊的用法,如LVM相的信息
# supportconfig -i LVM
//-x 的功能與-i剛好相反,是排除某個模塊不收集
# supportconfig -x LVM
//使用-U url 可以將收集的結果上傳到服務器上,直接的服務有ftp, scp, http, https,如:
# supportconfig -A -U http://www.361way.com/files/
具體可以參看官方的 常用的supportconfig選項 部分 。
supportconfig收集的系統健康報告:
代碼如下:
# supportconfig -A
# cd /var/log
# tar jxvf nts_361way.com_140825_1504.tbz
# more basic-health-report.txt
#==[ Command ]======================================#
# /usr/bin/schealth -q
######################################################################
Supportconfig Health Check Report Tool v1.00-5
Date Checked: 09/12/14 04:40:37
######################################################################
Health Check Files [ Green ]
Processes Waiting for Run Queue [ Green ]
Kernel Taint Status [ Red ]
Kernel Tainted: 64 > 0
CPU Utilization [ Green ]
Interrupts Per Second [ Green ]
Context Switches Per Second [ Green ]
Free Memory and Disk Swapping [ Green ]
Used Disk Space [ Green ]
Uninterruptible Processes [ Green ]
Zombie Processes [ Green ]
######################################################################
Status: Red Flag
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
####################################
# Default Options
####################################
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
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和其作用差不多,而其適用性更強,後面會單獨列一篇做一個總結。