作为一名程序员,我们倾向于将sysadmins视为理所当然。几次我都没有好的系统管理员,确实让我欣赏你们所做的事情。当我们进入没有系统管理员的环境时,您能为我们提供什么智慧的话?

#1 楼

我将从以下内容开始:



总是有某种备份系统。如果有历史记录,那就更好了。跨计算机将使每个人的生活更轻松-不会有“在我的计算机上工作”,因为他们没有通常不会安装的此类程序。
记录所有内容,即使只是因为您会忘记如何设置即可。
及时了解安全更新。


评论


记录所有步骤是我见过的优秀sysadmin管理员要做的事情,而我已经开始自己做。确实非常有帮助。

–内森·德威特(Nathan DeWitt)
09年5月4日19:37

考虑自我记录系统。例如,当注释良好的区域文件是标准信息源时,为什么要在文本文件或Wiki中的某个主机名列表中保留主机名列表。

–戴夫·切尼
09年5月5日14:58

戴夫,所有人都可以访问该注释良好的区域文件吗?如果我是一个新手,那么被告知“所有答案都请访问此Wiki”,而不是“一切都记录在各处。DNS记录在DNS设置中。配置文件。数据库记录在数据库配置文件中。”这对我来说似乎非常不友好。

–内森·德威特(Nathan DeWitt)
09年5月5日在16:07

内森(Nathan),戴夫(Dave):诀窍当然是使用脚本从规范来源更新Wiki。这对我来说是个奇迹,非常抱歉我不能在现在的工作场所使用它。

–安德斯·欧仁纽斯(Anders Eurenius)
09年5月28日在14:24

我要补充一点:构建测试系统。您需要一个可以选择失败的环境。为此,我有运行VirtualBox的服务器,但是当服务器不可用时,我使用了个人工作站

–马克·波特(Mark Porter)
2009年5月29日15:15

#2 楼

<在此处插入大文章免责声明>

之前已经说过其中一些,但是值得重复。

文档:


记录一切。如果您没有,请安装一个未公开的Wiki,但请确保备份它。从收集事实开始,有一天,将形成一幅大图。
为每个逻辑块创建图并保持更新。我无法计算出准确的网络图或群集图为我节省的次数。
即使只是复制并粘贴有关如何构建它的命令,也请保留每个系统的构建日志。
何时构建您的系统,安装和配置您的应用,对其进行测试并执行基准测试。现在,擦拭磁盘。说真的从磁盘正面第一个兆字节“ dd”,否则将导致该框无法启动。时间在流逝:证明您的文档可以从头开始重建(或者,更好的是,证明您的同事可以仅凭文档进行重建)。这将构成灾难恢复计划的一半。
现在您有了灾难恢复计划的前一半,请记录其余部分;如何恢复应用程序的状态(从磁带还原文件,从转储重新加载数据库),供应商/支持详细信息,网络要求,如何以及在何处获得替换硬件-您可以想到的任何方法都将帮助您恢复系统。

自动化:


尽可能地自动化。如果您必须做三遍,请确保第二遍花在开发自动化上,因此第三遍是全自动的。如果无法自动化,请记录下来。那里有自动化套件-看看是否可以使它们适合您。

监控:


应用程序工具是纯金的。能够监视通过系统的事务使调试和故障排除变得更加容易。
创建端到端测试,不仅可以证明应用程序还处于运行状态,而且可以真正实现其应有的功能。如果可以将其插入监视系统以进行警报,则说明您的要点。这具有双重职责;除了证明该应用程序可以工作之外,它还使系统升级变得更加容易(监视系统报告绿色,升级工作,上班时间)。
基准,监视和收集所有理智的指标。基准告诉您什么时候可以期待某些东西会散发出魔力。监视告诉您什么时候出现。度量标准和统计数据使通过管理更容易获得新套件(带有新鲜的魔术烟雾)。
如果您没有监视系统,请实施一个。如果您确实将上面的端到端测试插入其中,则可以得到加分。

安全性:


“ chmod 777”(aka授予所有访问权限/
订阅“最低位”原则;如果它没有安装,复制或以其他方式存在于磁盘上,则不会受到损害。安装“厨房水槽”操作系统和软件可能会使构建阶段的生活变得更轻松,但最终还是要为此付出代价。
了解服务器上每个开放端口的用途。经常对它们进行审核,以确保没有新的出现。
不要尝试清理受损的服务器;它需要从头开始重建。使用新下载的介质重建到备用服务器,仅从备份中还原数据(因为二进制文件可能会遭到破坏),或将受到破坏的主机克隆到隔离的某个地方进行分析,以便您可以在同一套件上进行重建。这是整个法律的噩梦,因此在保存方面犯错,以防万一您需要寻求法律途径。 (请注意:IANAL)。

硬件:


不要假设任何事情会像盒子上所说的那样做。证明它可以满足您的需求,以防万一。您会发现自己说“几乎有效”的频率比您预期的要高。
不要跳过远程硬件管理。串行控制台和灯光管理应视为强制性的。当您无法使用时,可以使用遥控电源板的奖励积分。通过睡衣中的VPN,另一项涉及一件厚外套和一个驱动数据中心/办公室的驱动器。我知道我更喜欢哪一种。) br />从项目生命周期的第一天起就让将要维护系统的人员参与其中。工具包的交货时间和大脑时间可能而且将会令人惊讶,毫无疑问,它们(应该吗?)将具有将成为项目依赖项的标准或要求。
文档是项目的一部分。在项目关闭并且系统已进入维护状态后,您将永远没有时间将整个事情写完,因此请确保在开始时就将其作为计划中的工作来进行。
将计划的过时实施到项目中从第一天开始,在项目文档中指定的关闭日期前六个月开始刷新周期。使用寿命的终止通常定义为每当供应商开始收取的年度维护费用超过更新套件所需的费用时,或三年左右,以较短者为准。在这段时间之后,它们非常适合开发/测试环境,但是您不应该依赖它们来经营业务。在2 1/2年的时间里重新审视环境,可以为您提供足够的时间来跳过必要的管理和财务工作,以订购新套件,并在将旧套件发送给空中大商之前实现平稳迁移。 br />
发展:


确保您的开发和登台系统与生产相似。虚拟机或其他虚拟化技术(区域,LDOM,虚拟服务器)使在现实中千篇一律但有性能的生产克隆变得容易。

备份



您不备份的数据就是您不需要的数据。这是一成不变的法则。确保您的现实情况与此相符。
备份比看上去要难。有些文件将被打开或锁定,而另一些文件则需要静默以恢复,希望所有这些问题都得到解决。某些备份软件包具有代理或其他方法来处理打开/锁定的文件,而其他软件包则没有。将数据库转储到磁盘并备份这些计数是一种“静默”形式,但这不是唯一的方法。
除非经过测试,否则备份毫无价值。每隔几个月,请从档案中随机取出一个磁带,确保其上确实有数据,并且数据是一致的。

最重要的是...

选择您的故障模式,否则Murphy将会...而Murphy则无法按计划进行。发生问题时,一切都会有所不同。

评论


+1就像有人看着我的脑海,那很美丽; p

–奥斯卡·杜韦伯恩(Oskar Duveborn)
09-10-4 13:41

“对所有明智的操作进行基准测试,监视和收集度量标准。基准测试告诉您何时应该期望某些东西会散发出魔幻的烟雾。监视告诉您什么时候可以散发出魔幻的烟雾。度量标准和统计信息使获得新工具包(使用新的魔术更容易)吸烟)。”纯金

– T.J.拥挤者
09年10月4日在16:59

#3 楼

不要以为它很容易。我认识许多程序员,他们认为这是因为他们可以在开发箱上安装IIS或Apache,从而可以运行Web场。了解工作内容并进行研究和计划,不要仅仅认为sysadmin工作是您在10分钟内就可以轻松完成的工作,以部署应用。

评论


为此+1。这并不是因为我们使事情看起来简单而已。

– Gert M
09年5月4日19:30

作为兼职管理和编程工作的通才,我完全理解您的困境。 +1

–艾琳·佩恩(Avery Payne)
09年5月19日在19:09

当然,这是另一回事,我发现了一些sysadmin类型,他们真的不了解脚本类型和我们都可以打开的小型实用程序和“真实”编程之间的区别。

–罗布·莫尔
09年7月7日在16:19

+1 Robert:或者系统管理员说“这是一个简单的if语句”,以解决设计不良的网络体系结构。相互尊重和理解是关键。

–史蒂文·埃弗斯(Steven Evers)
09-10-13在18:54

#4 楼


意识到,无论好坏,它们所趋向的许多服务器和/或网络设备都非常像第二个家庭的孩子。这些是他们的孩子。他们照顾他们,生病时帮助他们,并警惕地监视他们的麻烦。这不应该是这样,但是经过很多年,通常是这样。当您与他们交流您对设备运行不正常或期望的问题时,请记住这一点。如果您收到的答复不明白,请尝试通过这种世界观对其进行过滤。
保持良好的工作条件。听起来俗气,但值得在黄金中重压。有一天,您需要一些特别的帮助。有时候,这一次,系统管理员会很乐意竭尽全力,让您的生活更轻松。
这种工作关系是双向的。如果系统管理员很忙,您可以编写一个小的脚本或程序来使生活更轻松一些,那就去做吧!他们会比您知道的更多。
非常清楚。 “糟透了”并不像“具有间歇性的网络连接有点烦人,您有机会看到它吗?”
如果您认为自己的应用程序可以扩展,请在询问管理员之前先询问管理员。他们可能会“看到”您不了解的东西,或者对您将要部署的设备的性能极限有所了解。
如果您的应用程序需要调优,但似乎不是代码问题,很好地询问服务器的性能。系统管理员会非常谨慎地照看他们的机器,当他们“生病”或“行为不当”时,他们会感到不满意。很好地询问即可将一台故障的机器转过来(或修理/更换)。
(如其他地方所述)记录您使用的设置以及使用原因。仅具有“设置复选框X”或“取消注释配置文件行Y”无济于事。您可能会设置一个选项,以便在您下次重启时擦除所有数据。
如果您没有时间在纸上记录设置,请尝试在系统中进行记录。对于配置文件,这几乎应该是标准做法-每个设置更改都应加上时间戳,带有缩写,该设置的预期效果以及更改原因(请参见前面的要点)。这个小习惯在紧缩时间内为我的腊肉节省了不止一次。 “我们为什么要这么做?” “因为我们强制执行策略X,而设置Y赋予了我们执行策略X所需的行为”。
啤酒。或可乐。甚至是水。饮料始终受到欢迎。成为系统管理员是一项口渴的工作。


评论


对于配置文件文档/更改问题,建议将所有配置文件放入版本控制系统中。对于程序员来说,这应该非常容易,因为希望他们的源代码已经使用了这样的系统。如果他们在每次进行更改时也添加评论,则很容易回顾历史并查看更改的时间和原因。

–安德斯·桑德维格(Anders Sandvig)
09年5月5日在7:37

+1,因为它在变更管理中“闭环”。很棒的建议。

–艾琳·佩恩(Avery Payne)
09年5月5日,12:40

提供清晰的错误报告的绝佳建议。在被告知存在问题之后,没有什么比让我感到沮丧的了,并且知道这可能会影响很多人之后,我不得不从一个无私的程序员那里了解细节。

–戴夫·切尼
09年5月5日15:00

#5 楼

安全不是事后的想法。虽然被黑的应用程序会使程序员看起来不称职,但(至少)这是一个浪费的周末,花费了很多时间来验证,清理和/或从sysadmin的备份中恢复。
备份作为版本控制。它们用于灾难恢复,并非真正用于还原代码,因为您忘记了更改。

不要盲目指责Windows Update破坏了代码。我不在乎它是否可以工作,请告诉我为什么它现在不工作-然后我们可以看到它是谁的错。

#6 楼

如何调试网络问题并使用sysadmin工具监视程序运行。作为一名刚开始进行系统管理的程序员,我惊讶于一旦网络“停止”,许多程序员变得无能为力。



Wireshark,观看代码运行以黑盒的方式逐个分组地
直接连接到网络服务的工具:



Telnet,netcat或socat用于通过TCP或UDP

OpenSSL用于具有加密功能的同一事物(提示:有时尝试openssl s_client -connect target-host:port),用于手动连接到网络服务。


在BIND 9软件包中)用于调试名称解析
能够根据连接失败的时间和其他特征来判断网络堆栈的哪个部分
可能是HTTPFox和/或Firebug



评论


+1。任何编写依赖于可靠网络性能的应用程序的开发人员,在开始编写代码之前,应阅读已故的W. Richard Stevens撰写的“ TCP / IP Illustrated v1”。

– Murali Suriar
09年5月4日在20:34

感谢所有支持者。多年来,当底层网络出现故障时,看到程序员陷入无助的停滞状态使我感到沮丧。如今,几乎所有编程都是网络编程。

– jhs
09年5月5日在1:06

#7 楼

知道如何解决问题。

推卸责任很容易(例如,您的网络正在与数据库进行通讯)。可能是网络故障,但您应该拥有带有错误的应用程序日志,使用Google或SO可能会揭示应用程序配置中的问题。 ,因此,如果您进行更多的尽职调查,您将使sysadmin成为一个快乐的人。因为,如果没有别的什么,您也许可以将它们指出可能出问题的特定方向(而不是说“您的网络很烂”或同样有用的东西)。

评论


绝对。我无法开始计算我在错误的地方搜索问题所花费的时间,因为人们将我指向错误的方向

– Gert M
09年5月5日在10:14

#8 楼

记录一切。无法告诉您上次sysadmin管理员认为不为“工作安全性”记录某些东西或某人只是想进出的感觉很可爱。就像程序员应该留下好的评论一样,系统管理员也应该记录文档。拓扑图也很好。

#9 楼

计划B。

在设计和开发解决方案时始终牢记灾难恢复计划。识别可能导致故障的单点故障。

#10 楼

文档:无需费劲,但可以了解应用程序的工作原理,该图显示了各个位的装配方式以及在所有组件出错时如何测试每个组件。样本数据和输出很好。

要求:它依赖哪些模块?版本?操作系统?

监视:理想情况下,开发人员应在应用程序中包含监视信息和测试。

说到包装,包装!没有什么比“部署”更糟糕的了,“部署”意味着从VCS中检出文件的新修订并将其复制到一堆服务器中。程序员常常不喜欢部署软件的复杂性:版本化,打包的软件构成了大多数操作系统的主因。这是有原因的。简洁,全面的文档以及一些Nagios测试,它们将成为我的新好朋友。

#11 楼

我很惊讶,到目前为止,这里给出的17个答案中没有一个包含有关确保以标准用户身份登录时运行应用程序的任何信息。并使用标准用户帐户。

#12 楼

备份备份备份....测试备份....随时准备回滚

#13 楼

这可能仅适用于刚开始的程序员,但是我在每个项目上都与一些程序员打交道。


“它在我的机器上有效”永远不是有效的声明。创建服务器上使用的安装程序是程序员的责任,或者至少记录服务器上将需要的每个连接以及dll和加载项。
(我已经多次听到,所以请不要笑)我从机器上的服务器上运行exe,并且可以正常工作。但是,当我在服务器(Citrix,终端服务器等)上运行它时,它不起作用。请了解dll和ocx以及程序需要的其他信息,以及在何处以及如何注册它们以及您的程序如何使用它们。

这些看似简单,但我一直在处理。

布莱恩

#14 楼


与您的管理员正式和非正式地讨论您的工作。他们通常会感兴趣,并且可以尽早表达对生产的可能影响。您不必同意,但是它可以帮助您找出问题所在。如果您想从事政治工作,请继续前进。
生产硬件的外观通常与您的开发服务器不同,甚至在农场中,机器的规格也不同。
了解如何设置生产,因为您可能无法将其复制到您的桌面上,这样做可以防止您做出错误的假设。
因为可以在内存中缓存内容并不意味着您应该先等待瓶颈(在单元测试或预生产性能中)测试)
如果要将数据粘贴到数据库中,请考虑如何将数据拆分为只读数据(可以水平缩放)和读写数据(通常仅垂直缩放)。 br />如果要将数据粘贴到数据库中,一定要真的是RDBMS吗?还有其他的键值对系统可以更好地扩展(netcache)。我不是说不要使用它,只是三思而后行。


#15 楼

好的,这有点令人讨厌,但是:

a)进行编码时,请假定基础基础结构可能会失败,并且并非来自永远幸福的土地。或谷歌。

b)我们可能没有足够的资源来实现类似您所了解的基础架构的功能,因此当出现问题时,请对我们轻松一点。我们很可能知道需要做什么,但由于某种原因,它尚未发生。我们是您的伙伴!挖掘等。即使不了解Wireshark也会获得大量积分。 ipconfig / all或ifconfig。您应该可以在最少的帮助下启动并运行Internet。

否则,我认为Avery几乎可以做到这一点。进行系统管理员一点的开发人员是值得的!但是同样地,在当今时代,了解开发人员如何处理事物(包括版本控制等)的系统管理员非常重要。注意到关于博客中的开发人员/运营人员关系的更多讨论-查看

保持Twitter Twittering

分区和战争


操作中的测试首先
/>

#16 楼

没有任何一个群体或职能比另一个组织“好”,也没有一个比彼此需要“更大的头脑”。我已经看到双方都在对方的公司中得到了全部原始的印象-你们都在努力实现相同的目标-专注于这些相似之处,而不是您使用不同工具的事实。

#17 楼

基础架构架构师转为程序员,但将来可能希望回滚该事务:)与将管理应用程序基础结构的人员一起评审设计(如果您知道将要部署在谁身上)。
可能会丢失零数据,但这是开发人员和系统管理员的责任。同样,在这里互相交谈可能会有所帮助。
您的基础结构人员应该参与确定非功能性需求。
安排啤酒(工作完成时)和比萨饼(我们工作时) )。不知何故,这种食物的存在会影响我们使精美的32个cpu小盒子做您想让他们做的任何事情的能力:)


#18 楼

作为开发人员的系统管理员和我自己的开发人员,这里给出的建议不仅是金,而且应该成为整个公司新开发人员的招聘文档的一部分。我还没有看到(尚未)解释的是,开发人员确实应该知道他们将用来创建付费程序的产品。我不得不解释和配置apache服务器,eclipse和Visual Studio安装以及开发人员机器上的数据库的时间有点令人担忧。