我有个朋友是个汽车修理工:那种汽车爱好者,喜欢在周六晚上重建引擎来消遣。他向我解释说,某些品牌的汽车在设计时就考虑到了让机械师的工作更轻松。然而,另一些品牌的设计,就好像公司与阿司匹林行业达成了协议,以确保有大量的机械师头痛不已。他说这些汽车公司讨厌机械师。我完全理解,因为作为一名系统管理员,我可以分辨出软件供应商是否讨厌我。这体现在他们的产品中。
在 CHIMIT(计算机-人机交互技术在信息技术管理中的应用)2009 年的专题讨论会上,讨论了软件供应商在开发易于安装、维护和升级的软件时应该做和不应该做的许多事项。本文重点介绍了其中一些问题。CHIMIT 会议专注于 IT 工作人员的计算机-人机交互——与大多数 CHI 研究相反,后者是关于 IT 工作人员维护的系统的用户。这次专题讨论会将显微镜转了个方向,让系统管理员有机会分享他们对分析他们的演讲者的感受。
以下是一些重点
1. 建议:提供“静默安装”选项。 一位小组成员讲述了在 2,000 台桌面电脑上自动化安装一个软件包的经历,但在安装过程中的某一点,弹出一个窗口,用户必须单击“确定”。所有其他交互都可以通过“默认文件”以编程方式消除。Linux/Unix 工具(如 Puppet 和 Cfengine)应该能够自动化不仅是安装,还有配置。卸载程序不应删除配置数据,但应该有一个“不留痕迹”的选项,可以删除除用户数据之外的所有内容。
2. 禁忌:将管理界面设为 GUI。 系统管理员需要一个命令行工具来构建可重复的流程。记录程序的最佳方式是提供我们可以从程序文档复制并粘贴到命令行的命令。当指令是:“选中第 3 和第 5 个选项,但不选中第 2 个选项,然后单击“确定””时,我们无法实现相同的可重复性。系统管理员不希望每个新用户都需要点击 25 次的 GUI。我们希望编写命令,在文本编辑器中执行,或通过 Perl、Python 或 PowerShell 生成它们。
3. 建议:创建 API,以便可以远程管理系统。 API 使我们能够用您的产品做您没有想到的事情。这是一件好事。系统管理员努力实现自动化,并通过自动化来蓬勃发展。正确的 API 让我可以在创建新员工帐户系统时自动配置服务。正确的 API 让我可以编写一个聊天机器人,它可以在聊天室中闲逛,每小时发布系统性能公告。正确的 API 让我可以将您的产品与 USB 控制的玩具导弹发射器集成。您的其他客户可能对“哔”一声来引起他们的注意感到满意;我更喜欢我的方式(http://www.kleargear.com/5004.html)。
4. 建议:配置文件应该是 ASCII 文件,而不是二进制 blob。 这样文件就可以签入源代码控制系统。当系统配置错误时,能够“diff”以前的版本变得非常重要。如果文件无法上传回系统以重新创建相同的配置,那么我们就无法相信您提供了所有数据。这阻止了我们为大规模部署或灾难恢复克隆配置。如果文件可以编辑并上传回系统,那么我们就可以自动化配置的创建。配置备份的存档可以进行有趣的 исторический 分析。1
5. 建议:包括明确定义的方法来恢复所有用户数据、单个用户的数据和单个项目(例如,一封电子邮件)。备份方法显然是先决条件,但我们主要关心的是恢复程序。
6. 建议:对系统进行检测,以便我们能够监控不仅仅是“它是否启动并运行?”。 我们需要能够确定延迟、容量和利用率,并且我们需要能够收集这些数据。不要自己绘制图表。让我们收集和分析原始数据,这样我们就可以制作出我们的非技术管理层能够理解的“漂亮图片”图表。如果您不确定要检测什么,请想象系统完全过载且速度缓慢:我们需要哪些参数才能找到并解决问题?
7. 建议:告诉我们安全问题。 公开宣布它们。将它们放在 RSS feed 中。即使您还没有修复程序也要告诉我们;我们需要管理风险。您的公关部门不理解这一点,这没关系。您的工作是让他们走开。
8. 建议:使用内置的系统日志记录机制(Unix syslog 或 Windows 事件日志)。这允许我们利用预先存在的工具来收集、集中和搜索日志。同样,使用操作系统的内置身份验证系统和标准 I/O 系统。
9. 禁忌:不要在磁盘上乱涂乱画。 将二进制文件放在一个地方,配置文件放在另一个地方,数据放在其他地方。就这样。不要将配置文件隐藏在/etc和另一个在/var中。不要将东西隐藏在\Windows中。如果可能,请允许我在安装时选择路径前缀。
10. 建议:在您的网站上以电子方式发布文档。 它应该是可用的、可链接的,并且可以在 Web 上找到。如果有人在博客上发布了解决问题的方案,他们应该能够直接链接到相关的文档。提供 PDF 文件会适得其反,令人痛苦。保留所有旧版本在线。一个 5 年前、不受支持、可悲的过时安装的灾难恢复程序可能取决于是否能够在 Web 上找到该版本的 手册。
对我们来说,软件不仅仅是比特。它有一个复杂的生命周期:采购、安装、使用、维护、升级、卸载。通常供应商只考虑使用(有些似乎只考虑采购)。使软件更易于安装、维护和升级的功能通常是事后才想到的。要做好这些事情,需要从一开始就成为设计的一部分,而不是后来才附加上的。
善待世界上的系统管理员。正如一位小组成员所说,“无法快速部署您的产品会影响我快速购买您的产品的能力。”
我应该指出,这个主题不是 CHIMIT 专题讨论会的主要重点。这是一个非常有成效的题外话。当我建议每位小组成员说出他们最大的“禁忌”时,我注意到全体听众都字面上前倾身体,充满期待。我惊喜地看到软件开发人员和产品经理都产生了兴趣。也许还是有希望的。
问
1. Plonka, D., Tack, A. J. 2009. 网络配置工件分析。载于第 23 届大型安装系统管理会议论文集(11 月):79-91。
我要感谢专题讨论会的成员:Daniel Boyd,谷歌;Æleen Frisch,Exponential Consulting 和作家;Joseph Kern,特拉华州教育部;以及 David Blank-Edelman,东北大学和作家。我是专题讨论会的组织者和主持人。我还要感谢我的博客 www.EverythingSysadmin.com 的读者,感谢他们贡献的建议。
喜欢它,讨厌它?请告诉我们
Thomas A. Limoncelli 是一位作家、演讲者和系统管理员。他的著作包括系统和网络管理实践(Addison-Wesley 出版社)和系统管理员的时间管理(O'Reilly 出版社)。他在纽约市的谷歌工作,并在 http://EverythingSysadmin.com 上写博客。
© 2010 1542-7730/10/1200 $10.00
最初发表于 Queue 第 8 卷,第 12 期——
在 数字图书馆 中评论这篇文章
Adam Oliner, Archana Ganapathi, Wei Xu - 日志分析的进展与挑战
计算机系统日志提供了运行系统状态的概览。检测工具偶尔会生成短消息,这些消息会收集在特定于系统的日志中。日志的内容和格式可能因系统而异,甚至在同一系统内的组件之间也可能不同。打印机驱动程序可能会生成指示其与打印机通信时遇到问题的消息,而 Web 服务器可能会记录请求了哪些页面以及何时请求。
Mark Burgess - 可测试的系统管理
系统管理的方法在过去 20 年中几乎没有变化。虽然核心 IT 技术在许多方面都有所改进,但对于许多(如果不是大多数)组织而言,系统管理仍然基于生产线构建物流(又名配置)和被动事件处理。随着我们进入信息时代,人类将需要减少像他们使用的机器一样工作,并拥抱基于知识的方法。这意味着利用简单的(免手动)自动化,让我们不受阻碍地发现模式并做出决策。
Christina Lear - 系统管理软技能
系统管理既可能充满压力,也可能带来回报。压力通常来自外部因素,例如系统管理员 (SA) 与同事之间的冲突、资源匮乏、高干扰环境、相互冲突的优先级以及系统管理员为他们无法控制的故障负责。系统管理员及其经理可以做些什么来缓解压力?有一些众所周知的人际交往和时间管理技巧可以提供帮助,但在危机时期或仅仅是由于习惯成自然,这些技巧可能会被遗忘。
Eben M. Haber, Eser Kandogan, Paul Maglio - 系统管理中的协作
乔治遇到麻烦了。一个看似简单的部署花费了整个上午,而且似乎没有结束的迹象。他的经理不断进来查看他的进度,因为客户急于完成部署。他本应该去参加一位即将离职的同事的告别午餐,这增加了压力。他求助了各种人,包括同事、应用程序架构师、技术支持,甚至还有一位系统开发人员。他使用了电子邮件、即时消息、面对面接触、他的电话,甚至他办公室同事的电话与每个人进行沟通。而且乔治绝不是新手。