ops 的 technical support

Technical support 是一项非常有挑战性的工程。做 ops 的多少要遇到一些这类的问题,对外你是客户,厂商给你提供技术支持;对内,你需要服务客户,给很多分不清 ip 是什么如何做 bind 的码农们提供技术支持敦促其改进。
每次客户的系统出问题,你屁颠屁颠的跑到现场去花了几天几夜帮他修复了一个非常棘手的问题,自然值得骄傲,但是如果有比这个更好的方式,为何不试试看,很高兴的看到,有很多的公司已经在这方面做的很完善。
首先说说我们的老合作伙伴,RedHat,一般系统出了问题,我们会先排查,不到万不得已不会去开 case,我觉得这是对大家的尊重。开 case,自然要讲清问题发生的背景,现象,可能的原因等等问题,尤其是前两者,这需要你话费很大的时间以比较精炼准确的语言去描述,这样对方的 technical support 才能尽快的领悟到问题所在,尤其是一个涉及多个层次的复杂的系统问题。人跟动物最重要的区别就是人类会使用工具,好的工程师能写出大大解放客户双手,同时提高自己获取背景信息的好工具,sosreport 就是一个明显的体现。
其实原理一点都不复杂,就是一个 python 脚本,把当前的系统做了一个 snapshot,将重要的基本配置信息全部打包到了 sosreport-HOSTNAME.CASENUM-DATE.tar.xz 这个文件里面了,解压开来无非就是一些系统的信息文件:
# ll /tmp/HOSTNAME-2014052115241400657060/
total 44
drwxr-xr-x  3 root root 4096 May 21 15:24 boot/
drwxr-xr-x 36 root root 4096 May 21 15:24 etc/
drwxr-xr-x  3 root root 4096 May 21 15:24 lib/
drwxr-xr-x  7 root root 4096 May 21 15:24 proc/
drwxr-xr-x  2 root root 4096 May 21 15:24 root/
drwxr-xr-x 30 root root 4096 May 21 15:24 sos_commands/
drwxr-xr-x  2 root root 4096 May 21 15:24 sos_logs/
drwxr-xr-x  2 root root 4096 May 21 15:24 sos_reports/
drwxr-xr-x  4 root root 4096 May 21 15:24 sys/
drwxr-xr-x  5 root root 4096 May 21 15:24 var/
lrwxrwxrwx  1 root root   37 May 21 22:51 chkconfig -> sos_commands/startup/chkconfig_–list
lrwxrwxrwx  1 root root   25 May 21 22:51 date -> sos_commands/general/date
lrwxrwxrwx  1 root root   27 May 21 22:51 df -> sos_commands/filesys/df_-al
lrwxrwxrwx  1 root root   31 May 21 22:51 dmidecode -> sos_commands/hardware/dmidecode
lrwxrwxrwx  1 root root   24 May 21 22:51 free -> sos_commands/memory/free
lrwxrwxrwx  1 root root   29 May 21 22:51 hostname -> sos_commands/general/hostname
lrwxrwxrwx  1 root root   35 May 21 22:51 ifconfig -> sos_commands/networking/ifconfig_-a
lrwxrwxrwx  1 root root   81 May 21 22:51 installed-rpms -> sos_commands/rpm/rpm_-qa_–qf_NAME_-_VERSION_-_RELEASE_._ARCH_INSTALLTIME_date_–
lrwxrwxrwx  1 root root   48 May 21 22:51 java -> sos_commands/general/alternatives_–display_java
lrwxrwxrwx  1 root root   35 May 21 22:51 lsb-release -> sos_commands/lsbrelease/lsb_release
lrwxrwxrwx  1 root root   25 May 21 22:51 lsmod -> sos_commands/kernel/lsmod
lrwxrwxrwx  1 root root   36 May 21 22:51 lsof -> sos_commands/process/lsof_-b_M_-n_-l
lrwxrwxrwx  1 root root   27 May 21 22:51 lspci -> sos_commands/hardware/lspci
lrwxrwxrwx  1 root root   29 May 21 22:51 mount -> sos_commands/filesys/mount_-l
lrwxrwxrwx  1 root root   38 May 21 22:51 netstat -> sos_commands/networking/netstat_-neopa
lrwxrwxrwx  1 root root   30 May 21 22:51 ps -> sos_commands/process/ps_auxwww
lrwxrwxrwx  1 root root   27 May 21 22:51 pstree -> sos_commands/process/pstree
lrwxrwxrwx  1 root root   32 May 21 22:51 route -> sos_commands/networking/route_-n
lrwxrwxrwx  1 root root   22 May 21 22:51 sar21 -> sos_commands/sar/sar21
lrwxrwxrwx  1 root root   29 May 21 22:51 sestatus -> sos_commands/selinux/sestatus
lrwxrwxrwx  1 root root   28 May 21 22:51 uname -> sos_commands/kernel/uname_-a
lrwxrwxrwx  1 root root   27 May 21 22:51 uptime -> sos_commands/general/uptime
lrwxrwxrwx  1 root root   39 May 21 22:51 vgdisplay -> sos_commands/devicemapper/vgdisplay_-vv

这些信息对问题的诊断是至关重要的,正所谓一图胜千言,很多时候,一条命令胜过几千个单词的描述。

在这方面做的很优秀的的还包括 github,这个跟 RedHat 比,基本就是以黑盒子,我也没必要花经历去 hack 他,出了问题,很简单,直进到管理后台,把 "Download diagnostics info" & "Download support bundle" 的信息发送给他们就好了。

上面提到的两家公司的做法非常值得我们学习,比如可以用在对内的 technical support 上,依葫芦画瓢,执行一下 sosreport 是不是能很快的知道当前系统的整体状况,这比一群码农围着你,尤其遇到那种遇到问题完全失控的,你一言我一语的解释不清要高效的多。
technical support 是项很有挑战,需要具备综合能力,能站在高处俯视系统的工作;除此之外,还能提高与码农们沟通的能力,要知道大部分的码农都是不善于表达自己,很多时候,是无法把自己遇到的问题给表述清楚的,能把他们「哄」开心了,也算是一项不大不小的成就了。总之,多接些这样的活儿,虽然很费时间,尤其遇到一些非常 tricky 的问题,但是对提高自己的综合能力非常有帮助。

  • http://terry.im Terry

    XenServer 的 Server Status Report 是迄今为止我见过的用于诊断的最全面的系统信息集合。Insight Services 服务的自动分析能力也很强,8成以上的问题靠一个 SSR 就能确认解决了。

    • jaseywang

      屌丝互联网公司用不起啊……

  • Ethinx

    这样高素质的客户还是少见(匿

    • jaseywang

      我们这不是正在朝这方向努力么……