系统管理员的 18 个基本准则

来源:伯乐在线 - Venn_宇

点击 → 了解如何加入专栏作者

 

靠规则而活

 

不是仅仅只要知道怎么建立维护服务器和理解系统命令是怎么工作的就可以让你成为一个好的系统管理员——甚至也也不是知道当系统宕掉时怎么去修复,怎么去监控系能,怎么去管理备份或者怎么可以写出漂亮的脚本。而是除此之外还要为自己制定一套能让系统良好运行以及让你用户高兴的规则。

 

可能其中很多你已经听过无数次,也可能有些是你遇到问题时吸取的经验教训。这些规则在过去几十年的系统管理中都已经证明了它们的价值并且能够帮助我们在脑子发热时冷静下来。

 

禁止做任何不能回滚的操作

 

 

除了一些最简单的修改,你应该备有回滚方案。当你进行改动时想好了回滚方案吗?有很多办法可以在修改的途径中留下技术上的“面包屑”,这能够让你随时回到你开始的原点。备份你需要编辑的文件,可能是你记不住的一些复杂的配置文件。记录下你遇到的问题。在进行生产环境之前先在测试环境下测试,在你继续之前确保所有的修改都是合理的。

 

提前计划好需要改动的地方,最好能够采取同行评审的方式。另外一双眼睛可能可以看到你没有考虑到的问题。

 

避免在周五做任何改动

 

 

不要在你将要不在的几天之前做任何修改。确保在不需要干预的情况下这些修改也可以在系统上正常运行。

 

弄清楚根本原因

 

 

去挖掘你所碰到问题的根本原因。当怀疑的时候,用“五个为什么”原则。我的服务器宕了,为什么?是因为内存不够。为什么不够?因为其中一个进程“疯了”。为什么“疯了”?因为它进入到循环中。为什么进入?因为配置文件中有错误。为什么有错误?因为我在周五晚上离开之前修改了文件,但是忘了测试确保所有一切都可以正常工作。

 

实践灾备方案

 

实践灾备方案在必要的时候能够顺手使用。如果你不实践,有两种可能会发生。第一,你没有信心你的方案是否有用,第二,你可能会不确定你所要采取的措施。比如说,你需要迁移数据库到一个远程站点。你是否知道你要运行的命令?准备好数据备份了吗?还是需要去创建备份?你是否知道迁移文件需要多久?你是否会准备好远程启动数据库?你是否有一套测试来检验其能够很好地运行?

 

不要去依赖没有完整测试过的脚本

 

这很容易犯错的。即使你已经写了几十年的脚本也要去测试,特别是可能别人在某天会运行这些脚本。带参数测试和不带参数测试。模拟其他人可能会犯的错误。总之,必须要测试脚本。

 

三次以上的重复和复杂的操作,必须自动化

 

 

在别名、函数和脚本中使用你最熟练的命令并且赋予它们有意义的命名。将那些复杂的过程写进到脚本中,你就无需每次都要去想那些必要的步骤和复杂的命令。这样你会在费时费力的工作中节省很多的时间和精力,并且在需要其他人为你工作时,让你有更多的轻松时间。

 

伯乐在线推荐阅读:《超过 90 秒的任务不自动化,你好意思说自己是黑客?

 

为你的工作建立文档

 

 

用文档记录下你的日常工作。你做的事里面有哪些对别人来说不好理解?可能你要跑个脚本在日志文件中查找磁盘吃紧或者数据中心湿度太高的警告。

 

往脚本中添加注释。你可能会觉得你用的那些命令很显而易见,但是当你隔了一两年没用再回去用的时候就不会那么显而易见了。不要为了简洁而牺牲了可读性。别人可能会要读你的代码。完整地写下你所做的一切,别人能够在你决定跳槽时候很好地接手你的工作。

 

重视你犯的错误

 

用你自己的方式去理解错误是避免再犯的唯一方法。重视你所做错的并且注意那些多次犯错的类型

 

可能是你忘了修改默认密码从而密码过期导致启动的服务宕了;可能你没有去验证备份是否可用;也可能是当其他人离开公司时你忘了封锁他们的账号。不管什么问题,需要注意记录你的疏忽并且找到一种可靠的方式来提醒自己容易忘记的事。

 

强迫自己轻微妄想症

 

经常问自己问题,比如“别人会不会误用这个呢?”,“别人会不会弄坏这个呢?”,以及“这个服务会怎么收到攻击?”给所有的脚本设置权限使除管理员以外其他人都无权查看。想一些防守措施能够让你减少很多痛苦。而且,对管理服务器来说,妄想症是优点。

 

未雨绸缪

 

并不是每一个问题都会找上你的门。利用空余时间去“招惹”问题并且确保系统还是能够完好运行。想想系统会出问题的各种可能性并且检查这些问题是否已经存在。

 

尽可能自动化去检查问题,但是要确保问题在你的掌控之中,你要注意本应该看到的报警是否如期到来。收到你最关键的服务器宕机警报不能让你得到任何奖励。

 

特别注意安全性

 

安全方面的投入是要与你所保护的数据成比例的。要知道你在保护什么,知道你所保护数据的“主人”。运用一些最佳的实践方案,比如最小特权、定期补丁、监控关键服务以及漏洞检测。仅仅只运行你所需要的服务。时刻警惕任何强行闯入或者系统受损的迹象。准备好上报渠道能够让你知道什么时候以及向谁汇报这些系统受损现象。

 

不要忽视日志文件

 

 

例行检查日志文件能够在正常的服务器和服务受威胁之前发出警告。检查错误和警告。使用一个监控日志的工具或者自己写脚本。没有人有时间去看你日志中所有的信息。

 

伯乐在线推荐阅读:《写给开发者:记录日志的10个建议》和《最佳日志实践》

 

备份一切

 

 

制定一个好的备份策略即使服务器已经做了同步。一个同步服务器上的错误同样也是错误。测试好备份系统。确保在你要使用它们之前是没有问题的。

 

在你能够承担的情况下多雇佣一位员工。尽可能零容忍单点故障,即使是你自己。

 

像自己的时间一样考虑其他人的时间

 

 

系统管理员有点像一个自大的小男孩。我们在自己的神奇领域是奇才。但是尽管如此,我们还是要准时参加会议并且别人向你寻求帮助的时候及时回复别人,即使只是说一句我正在解决他们的问题。礼貌地对待顾客,即使他们找不到怎么运行命令行。他们可能在他们自己领域是个专家级魔术师,如果他们不是的,那就正好说明我们是如此的重要。

 

保持时刻通知用户

 

确保用户能够预料将会发生什么,特别是计划会有重大更新时。这些可以让他们对你抱有信心,并且信任他们所依赖的服务。交流、透明化、使用票务系统还有就是要留意多长时间能够解决问题。

 

避免太过自我,让别人喜欢你

 

 

系统管理员没必要让人难以接近和自大。实际我这几年与我合作过真正厉害的系统管理员从没显示出任何的优越感。他们没必要这样。

 

不要停止学习新技能

 

 

就像逆水行舟,不进则退。经常找些新东西来学习。你将准备好承担新的责任甚至可能在裁员中幸存。如果你没有把握去学什么,那就去看心仪工作的职位介绍。怎么让自己符合标准?那些技术是高需求的吗?你是否可以每天腾出一点点时间来学习新东西呢?

 

伯乐在线推荐阅读:《学习新技术的 10 个建议》

 

寻求平衡生活

 

找一些自己喜欢的事来平衡生活甚至可以找点活动可以奖励你些东西,这些东西可以跟做一名天才般的并且极具洞察力的系统管理员完全无关。不要把自己的价值栓在一匹马上。即使是你非常热爱工作,也不要让它成为唯一使你感到愉快和重要的事。你甚至可以被扔到车底下,但是也不能让车胎印记印在你的生活中。工作不是全部。不要被办公室政治束缚。去看一场真实的比赛并且努力成为一个你所钦佩的那种人。

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓