Jul 032013
 

经常看到各种介绍SSH的技巧文章,有些至少对我来说非常实用,我就整理一下。文章都是来自互联网,不过内容我肯定是基本看懂,也肯定会注明出处。后续会把看到的SSH相关内容整理在这里

原文:http://www.javaranger.com/archives/968  下面内容全部来自原文,我只是做了一下格式排版而已。

什么是SSH?

Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定;SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。
最初的SSH协议是由芬兰的一家公司的研究员Tatu Ylönen于1995年设计开发的,但是因为受版权和加密算法等等的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件包,而且是开放源代码和免费的。

基本用法

SSH主要用于远程登录。假如用户名为java,登录远程主机名为linux或者使用IP,如下命令即可。SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。

ssh -p 88 java@linux
ssh -p 88 java@ip

安全验证

SSH之所以能够保证安全,原因在于它采用了公钥加密。
过程如下:

  • 远程主机收到用户的登录请求,把自己的公钥发给用户。
  • 用户使用这个公钥,将登录密码加密后,发送回来。
  • 远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

口令登录

如果你是第一次登录对方主机,系统会出现下面的提示:你在windows用putty或者别的ssh客户端登陆,都基本可以看到类似的信息

ssh java@linux
#########
The authenticity of host ‘host (159.211.1.39)’ can’t be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?

这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?
所谓”公钥指纹”,是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再进行比较,就容易多了。
很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。
假定经过风险衡量以后,用户决定接受这个远程主机的公钥。

Are you sure you want to continue connecting (yes/no)? yes

系统会出现一句提示,表示host主机已经得到认可。

Warning: Permanently added ‘host,159.211.1.39′ (RSA) to the list of known hosts.

然后,会要求输入密码,如果密码正确,就可以登陆。

当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。

每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。

公钥登录

使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。

所谓”公钥登录”,原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个

ssh-keygen

运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。
运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。
这时再输入下面的命令,将公钥传送到远程主机host上面:

ssh-copy-id java@linux

从此你再登录,就不需要输入密码了。
如果还是不行,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面”#”注释是否取掉。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

需要重启SSH服务才能生效。

authorized_keys文件

远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

这里不使用上面的ssh-copy-id命令,改用下面的命令,解释公钥的保存过程:

ssh java@linux ‘mkdir -p .ssh && cat >> .ssh/authorized_keys’ < ~/.ssh/id_rsa.pub
  • 登陆远程主机
  • 如果用户主目录下.ssh 目录不存在,创建一个
  • 把本地的公钥文件重定向追加到远程文件authorized_keys的末尾

写入authorized_keys文件后,公钥登录的设置就完成了。

Mar 222013
 

这是我转载mirantis的文章,Mirantis对Openstack的贡献,其实真不比任何一家公司小。因为他的网站访问要拿梯子,所以我就转载过来方便大家。

我简单说一下我对文章的理解

在Nova network里,采用mutilhost的方式实现冗余,就是每个计算节点,都安装nova network,负责这个计算节点的vm访问互联网.在Folsom版本的quantum,其实没有实现网络节点的冗余,只能存在一个网络节。在Grizzly版本的Quantum里,你可以有多个网络节点,这几个网络节点实现同步,负责vm的访问,和以前的mutilhost是有区别的。你的网络节点不可能和计算节点的数量是一样的。

关于这个的中文解析,可以看 http://blog.csdn.net/lynn_kong/article/details/8709003

今天刚看到邮件列表关于如何在Quantum里实现mutilhost,估计是上游开发者认为还是有必要去实现这个功能,关键代码已经在Grizzly里,只是没宣布而已。http://l2.yunpan.cn/lk/QEy3TkutXnqZe

原文:http://www.mirantis.com/blog/a-new-agent-management-approach-in-quantum-for-openstack-grizzly/

Continue reading »

Oct 212012
 

外企,民营企业,互联网企业其实很多管理都是完全不同。他们间的差异,也是非常大。要适应这种差异,不是一件容易的事情。能把他们的差别说清楚就不容易,更别说自己去亲身经历和体会。

这篇文章所谓的一线企业,其实基本都是指那些外资企业,世界500强。

其实我在想:我们的MBA的课程,案例,基本都是来自所谓的一线企业,只要这样,才能显得更加洋气,更加牛逼。但是你的学生,估计都是在二线企业干活,而且我们大部分企业都是二线,我们是不是要调整一下,或者告诉学生,其实里面有很多的区别。不过估计老师也没明白这个道理。

看到老师在课堂上兴奋的介绍杰克·韦尔奇在通用的成功案例的时候,老师有没有思考过下面这些内容呢?今天刚看到一个MBA的评论,某位老师发表说:国内的MBA学校排名很重要。有点想吐。

这位作者可以写出这样的文章,真的很佩服,至少比那些高校的MBA老师牛逼很多啊。

身边有一位同学,一直希望要离开他的一线公司,自己创业,他认为自己在一线公司,学会了如何做品牌,如何管理。我想下面这篇文章,应该是一个很好的忠告。

这篇文章估计写的比较早,至少应该是在唐骏的神话破灭前写的吧。记住一点就可以,中国人的自传是没法读的,无论是唐骏还是李开复,如果当成榜样,那你就基本完蛋。

下面是转载内容,作者: 刘新华

题记:行业领袖,知名者快消品有宝洁,IT行业有微软、IBM,代工制造有富士康,B2B网上交易有淘宝、阿里,信息通讯有华为、中移动,不一而足,“馨竹难书”。可能有的人在里面拿钱拿到手软,有的扶摇直上、位高权重,心无城府、涉世不深者便自以为就我这企业最牛,别人的狗屎不如,天天自我感觉良好的无以复加,岂不知——
离开一线企业,你算老几?

Continue reading »

Oct 142012
 

这篇文章其实我很早就看到。很多人估计也是看看热闹。对于搞云计算的人,这篇文章的意义是非同寻常,很多地方是值得思考。。

从别的渠道了解过这位牛人。现在阿里搞的绿色计算:http://www.greencompute.org/index.html 只能算是当年历建宇规划的很小的一部分,已经是大打折扣。据说他们以前的人马已经都跳槽到腾讯,按照他的牛叉思路去搞绿色数据中心。

我是2010年的时候看Rackspace开源的swift的资料,才知道外面做云存储的,其实都不用Raid,而且都是使用家用硬盘,而不是硬盘厂商推销的所谓商业硬盘。他们间到底有啥区别呢。看下面的文章应该就应该清楚。

其实Facebook的开源数据中心的思路和这位老大非常相似。可惜啊,当年马云没有按照这位老大的思路去做,现在开始搞,就大大折扣。现在据说他在负责美国苹果的数据中心。

个人观点:如果你打算运营IAAS,这篇文章也是必读。

下面是转载内容

下文就是他之前要离开阿里巴巴留下的离职信。回顾了他在蓝讯和阿里巴巴的路程。本文也展现了他的一些工作理念,应该说跟着这样的领导还是跟对人的。也许这就是google之所以伟大的原因中的一点:简单。 

中文不佳,全用英文写又无法让更多的同学了解我的心路旅程,所以请各位原谅我蹩脚的中文。

一个简单的道理:一块2TB桌面级硬盘今天的价格约为700元,相同大小的企业级硬盘一块今天的要价仍然超过1,500元,这两个硬盘最大的差别是RVI震动率的设置(因此,桌面级硬盘在震动率稍大的时候,依然能够正常工作,企业级硬盘为了提升可靠性,所以当震动略大的时候,会停止工作,保护磁盘),两者连螺丝的位置都相同(不是用于固定硬盘的螺丝,是用于固定磁盘内部机构的螺丝),我们假设硬盘仍然坚守摩尔定律(每18个月容量增加一倍),一年半后就算我们需要更换所有的桌面级硬盘(注),我们还可以做到用相同的成本,获取两倍的存储容量!四年半后,我们将以同样的价格拥有四倍的存储!加上半导体制程的进步,当固态硬盘开始取代机械硬盘(约计在2015年前后发生),我们服务器的性能和效率能将再上一个台阶(每块SSD可以提供250MB/s 吞吐量,而且只有2.5英寸(SFF),一台2RU的服务器可以配置24个SFF的服务器,也就是6GB的吞吐量,这也就不难解释为什么2012年开始销售的服务器会配置两个万兆以太网端口了)!

成本!成本!成本!:我为什么放弃在ChinaCache的股权,回到美国求职呢?那是因为作为CTO,我没有阻挡我的CEO快速扩张视频分享下载(FLV)这条业务线,结果,到2008年中,当土豆在投资者(VC)的降低成本的要求下,自建CDN设施的时候,Chinacache的业务一下子下降了60%,几个月前刚刚购买的交换机和服务器都必须折价出售,最糟糕的是还找不到买家,IT设备的价格是天天掉价的!倘若当初CEO拒绝10%股权赎回的诱惑(VC要求业绩必须连续两年出现100%增长),将发展FLV业务的经费投资在集群效率的优化,那么ChinaCache就可能可以用更低的成本提供FLV下载的业务,加上时段复卖及规模效应,就可以将FLV下载业务的销售价格低于土豆(自建CDN)的成本价,土豆,优酷等视频分享业者也就不会在 VC的压力下建设自己的FLV下载基础设施。两个月发不出薪水给普通员工啊!你们一定能够体会那种痛苦,我堂堂一个中国互联网骨干设施的先期建设者,居然要靠砸锅卖铁来等待VC的bridge loan来渡过那艰难的三个月,所以我把股权给了留下来的同事(不知道CEO有没有执行这个意愿),自己回到美国求职。相同的道理,阿里巴巴在过去十年,凭借优秀的商务模式,占据80%的电子商务市场,但是,业务模式创新的速度已不如前十年,同质竞争的压力又不断地增加………一种似曾相识的感觉涌上心头:2000年之后,思科分别在两个阶段受到来自Juniper和华为的追赶,ChinaCache只不过将类似的问题集中在一年之内爆发,所以,当这样的问题来临是,无论你请什么人来,都救不了这样的企业。

新商业文明 – 谈厂商和用户之间的关系 (扭曲化的结果就是贿赂,无意义的折扣),电子商务在解决供需的问题,我们也应该用相同的概念来解决我们基础设施的问题。讲实在话,阿里巴巴和国有电信运营商采购的腐败就只有一步之远!如果厂商在我们团建时提供一桌四千元的晚餐,我们这些月薪一万元的SA工程师,怎么能够不嘴软呢?如果团建经费再多一点,如果厂商招待费放开一点,我们的工程师需要厂商那一点点小恩小惠吗?

思科让我回去做主管EC3(企业级云计算),华为让我进入CTO办公室主管云计算业务,我都没同意,它们的薪水可都是高出阿里巴巴三倍的薪水!我想留下来,就是马总的一句“国有”企业 — 一个真正意义的公用事业!另外,是谁鼓励土豆,优酷建设自己的FLV基础设施呢?我怎么可能跟这些砸了我的事业的人再继续合作呢?这些设备厂商唯一想的事情就是让你多买一些,至于你能不能高效应用这些设备,它们才不关心呢!地球明天会不会因为Global warming而变得风雨无常,你的公司会不会因为低效而面临经营的困难都不是它们考虑的问题,因为他们只关系自己的荷包是不是够满,是不是够钱能够买一部Audi R8 Spyder,明天会不会因为业绩不佳而被裁员…………

我愿意和Intel合作,是因为它总是能告诉我产业发展的方向,我愿意和英业达,富士康,广达,锐捷合作,因为它们总是能够非常快速的反映我们的需求(直接帮助提升我们服务器的效率),我们甚至做到让这些厂商提供原材料的价格(BoM cost),让它们自己提它们认为合理的利润,借此建立一种可持续发展的合作关系。可是,每一次一到采购,我们这些策略就执行不下去(总是买 Dell,Huawei品牌的商用服务器),我也没脸再跟ODM厂商要求开发新的机种(一个原因是厂商没有因为前期研发的付出而获利,另一个原因是 2011年项目没有获得支持,所以研发经费为0)。

就算在中国电信,也知道采购部门必须和需求部门分离,就这样还不能阻挡腐败的发生,我们阿里云却把运行维护,计划建设,采购放在同一个VP下,虽然这么做有助于解决(小)部门KPI被过份放大的问题,但是这三个部门合在一起,许多Check & Balance就消失了,结果当然不是以阿里巴巴的利益为优先,更不要提公用事业这个伟大的理想了!

我为什么不愿再继续写代码 – 这几个月为了提升服务器的性能,我每天工作到半夜,连续了三四个月,在代码的世界里,我很快地就找到了自己,很快地就能够有一些成就感,特别是捡起15年没有再读过的TCP内核代码,我很快乐我能够找出它在LFN(高性能,高延迟(缓存))的不足,但是,做这个工作我只能带动几位工程师,做绿色数据中心,我却能够带动整个中国的互联网基础设施工业,这就是我为什么不愿意再继续写写代码,而是希望能够去改变一个产业。

注:厂商提供的桌面级硬盘的质保也是三年,而根据Google提供的数据,硬盘的年损坏率略低于4%,生命周期内损坏率约为8.6%,也就是说 90%硬盘都能够工作三年,而不是一年半,那么一块硬盘差800元,12块硬盘就是10,000元,11,000台12盘的服务器三年的成本就节省一亿元人民币,这一亿元人民币难道不够让我们请10个高级系统工程师(三万元一个月也就是一亿元的10%),,将我们硬盘跟换的流程优化,所以他们就不必每次跟换硬盘的时候都必须工作到半夜12点?

########################################### 

Oct 132012
 

今天看到淘宝的技术写了一篇交流总结。感觉也印证了我的很多想法。

  1. 公司没有测试人员
  2. 直接上线进行压力测试
  3. 所有技术人员需要了解网站全部架构

 

下面转载内容http://blog.csdn.net/cenwenchu79/article/details/6196886

 

也算机缘巧合,一个不能称之为机会的机会让我再次和国外现在炙手可热的T公司(由于也不想过多的说这家公司的名字,因此就用T作为代号了)做了一次技术和公司文化的简单交流,这里做个简单的交流分享,希望能够让更多的朋友能够从中找到自己团队或者公司有帮助的内容。但这里还是丑话说在前头,中国有句成语:东施效颦。国外的月亮多圆我不知道,但是我们需要客观的看待不同环境的差异,看到目标,而不要过多模仿过程。下面的阐述将都分成场景和观点,如何做三部分,场景描述了具体的情况,观点仅仅代表我自己的一些感触和理解,如何做是对问题Action提出自己的想法。

场景1:

         T公司的任何一个小Team(业务上划分或者职能上划分)都需要熟悉整个系统从前到后从上到下的代码实现。例如相册团队,从前端脚本,到业务逻辑,再到底层的Memcached或者图片服务器代码在必要的时候都能自己修改和实现业务需求。UserGroup团队是负责对全球业务的用户做统计分析的,当希望做一些变革能够尝试着提升用户转化率的时候,首先是考虑自己如何动手去修改已有系统的功能,而不是去协调各个团队去做。

观点:

垂直化的开发模式其实挑战了国内很多企业的横向细分化流水线方式的开发模式。从技术的横向细分,到业务的模块化细分,好处是提高企业的生产效率,坏处是对人全方面的培养成为一种制约。最大的问题:对自己上游系统的需求了解不透彻,对自己依赖系统的实现完全不理解。

如何做:

横向切分的方式和纵向的方式都有适应的场景,因此可以考虑在互连网企业中部分部门中实施垂直化开发模式,这些部门人员素质较高,能够从产品层面全局的考虑整体的发展,通过实际的参与各个业务线和各个层次的技术中间件开发,为横向切分的部门工作做出改进和建议。这样在高素质人才发展和网站规模化整体化发展之间找到平衡点,相互促进。

场景2:

         T公司的任何一个技术框架都可以被挑战和替换,只要用数字和测试结果作为有效的证据,大家都抱着对公司负责的态度来对待技术选型。因此在T公司中,技术的发展完全是最原始的优胜劣汰机制。

观点:

这点其实很赞同,首先技术如果不是用数据来说话,采用自上而下的方式来决定选型,那么就是拍脑袋做事情。另一方面,如果技术不持续的按照用户需求来优化和演进,那么一定会烂掉,最好的触动不断发展的方式,就是竞争。有人会担心技术竞争会带来资源消耗,其实烂掉的东西在被使用的过程中一样在消耗。

如何做:

首先当然还是提倡积累,能够在已有的技术基础上不断积累发展是最好的,其次也应该鼓励创新,如果有足够理由证明成熟的技术能够替代现有技术,而现有技术又没有发展的动力时,变革并不是坏事(也许这种压力就会迫使原有技术实现者去更好服务客户),最后就是给每个人都有改变任何一部分代码的能力,因为依赖的不稳定也决定了上层系统的不稳定,作为一个产品来看,每个人是对产品负责,而不是对一个组件负责。

场景3:

没有任何文档。最多写一点wiki。

观点:

设计从简,代码需要更优雅,注释需要更全面。文档是代码的骨架。

如何做:

应该有产品需求文档,理解业务需求。技术文档多半是总体性设计和一些协议描述,多一些代码注释和Demo,更利于学习和阅读。

场景4:

应用都被编译在一个包里,一台机器就运行了诺大一个网站的所有功能,不存在服务器间的应用服务调用,都是本地服务方法调用(服务依赖较少)。

观点:

这和Java类型的应用还有些差别,Java的第三方依赖较多,版本凌乱复杂,导致应用部署在一台机器上很困难。但很多大型网站的系统设计慢慢地就将模块分的很细,结果导致服务调用和依赖特别复杂,自身的可用性和稳定性变得难以估量。

如何做:

需要审视服务粒度的合理性及垂直化设计在不同系统中的应用,需要在可扩展和可用性及效率中差别对待不同系统设计,同时降低服务差异性,减少应用服务器由于应用差异导致无法复用的问题。

场景5:

任何一个应用或者中间件开发完成后,都会有一个监控应用伴随诞生。(有些是直接通过已有工具实现,有些独立实现)

观点:

1:1的透明化开发比unit test来的还要重要,因为运行期的系统透明化是业务分析,系统优化,系统监控告警最基本的要求。

如何做:

最低代价就是将监控数据记录打点,应用或者外部系统对数据进行计算和分析,最终提供结果给外部系统展现和处理。

场景6:

没有测试团队,任何开发都是测试人员,通过工具完成页面,接口,集成测试。

观点:

强大的测试工具框架为开发人员提供了测试的规范性和便利性,同时开发人员自身的责任感增强,也让开发人员在测试过程中总结和思索开发设计的常规性错误,理解边界问题。

如何做:

需要有专人专职来负责测试框架的有效性,当然对于这个人或者这么一个小团队来说要求很高。可以借鉴的是,测试团队应该有更加高效的方式自动化测试,同时应该将测试框架开放给开发人员,增强开发人员对产品质量的责任感。

场景7:

没有线下的压力测试和极限测试,线上引流和部分区域发布来做测试。

观点:

一直认为线下的网络环境,用户数据的仿真度都难以模拟线上,因此很多压力测试和极限测试的数据基本就不能成为依据。在数据透明化体系完成后,线上的任何改变都可以获得数据的支持,这样单独或者对比的结果就是压力测试或者AB测试的结果。

如何做:

系统透明化工作为基础,结合Beta发布或者局部发布的模式来验证和测试不同压力下的新老系统。

场景8:

Hack Day,一个晚上通宵做出原型,第二天在全公司面前展现创意,用技术来说服有兴趣的同事一起去做一些有创意的工作。T公司最典型的视频项目就出自于Hack Day。

观点:

通过自己努力和时间的投入,在公司给的平台上展现,最后取得好的效果。

如何做:

公司给平台,个人挤时间。

场景9:

公司中所有的开发人员都是Engineer,每个人可能不同Level,但是每个人的工作都是自己来考虑,上级M只是替Engineer去协调资源。此时任何Team的人如果有想法和创意,如果要做,也需要资源,只能靠自己去说服同事一起做,而M没有权利否定或者强制Engineer去做任何工作。

观点:

由于考核都是同事之间点到点的评价,因此其实M没有任何实质性的技术管理职能在,任务分配和工作目标也是工程师自己需要去考虑的,主动权掌握在自己手中。工程师需要去考虑自己有限的工作时间中如何做有效的做出最有用的内容。能力越大责任越大,因此原本认为束缚工程师的方式,其实反而给工程师偷懒思考的机会。

如何做:

在工程师技术能力达到一定阶层时,国内的公司可以考虑采用这样的方式去管理他们,同时为他们提供更广阔的技术空间去创新和渗透到他们希望渗透的产品中。

场景10:

对于问题从效率角度去考虑如何解决,而不是简单的从资源角度去考虑。

观点:

公司发展壮大,业务战线不断变长,往往第一就考虑需要资源,往往忽略了如何用技术提升效率。增加资源有时候反而是增加内耗和降低工作效率的诱因。

如何做:

压力带来动力,决策者需要判断和观察。

场景11:

每个新人进来都会进入新兵训练营,每个人选择自己有兴趣加盟的两到三个团队,一个月内完成两到三个团队的一些线上问题修复,在熟悉业务的同时,也锻炼了自己的能力,同时更加明确自己感兴趣的团队究竟是哪一个。

观点:

这种方式可以最直接的让新人了解业务,熟悉将来的方向,同时也是检验一个人能力的最有效的手段。

场景12:

不同Level的错误有不同的通报,产生较大问题时,全公司邮件通报,但考核并不看问题发生次数和严重程度(因为每个人都可以修改各个层次内容,多做多错,少做少错这种事情不应该鼓励)。同时,任何过失需要描述四方面内容:现象,问题原因,解决方法,防范措施。范例:有一个同事修改了底层配置系统的部分代码,结果导致全站系统2小时不可用,全公司通报。遂这个同事花了几天时间全部重写了底层配置系统代码,为了防止别人和他犯一样的错误,后遇人都笑谈他重写代码的事,而不是那次问题。

观点:

首先,大家都抱着乐观的态度去看待犯错,看到别人的总结,也是审视自己的工作。其次,最重要的是问题的解决和预防,这点是透明化问题的关键所在,也是驱动犯错者改进自身不足的动力。

如何做:

倡导这种氛围,提升工程师的责任感。

场景13:

对于所有代码的更新时间有监控,很久没有更新的代码将会被提出来,作为烂掉的代码告警全团队。

观点:

很多时候不是做减法不易,而是没人知道什么时候该减什么。

时间有限,其实也没谈太多技术内部的东西,但是从周边的这些内容聊下来,两点让我感觉和去年自己做的一些工作很类似,也很重要。产品责任感,系统透明化。

不论是业务或者技术的垂直化,测试工作前移,产品设计后移(在另外文章中有提到),技术工作自我定义,其实都是在考验一个工程师对产品的责任感,不简单的约束自己在某一个技术领域,在某一个产品环节,在某一个岗位职责,也许听起来是一个较高Level的工程师(国内叫架构师)所需要考虑的,但其实也只有这样的工程师才会称得上是合格的工程师。

不论是1:1系统设计方式,线上仿真测试,丰富的监控系统,其实就是要求做每一个业务系统或者技术框架一定要做好透明化工作,系统透明化是对当前系统负责,对依赖这个系统的外部系统负责。当一个网站各个零部件都能被外部所观察到的时候,出现问题不为人知,缓慢出现量变病化,业务模式AB结果都将变得一目了然。

Sep 252012
 

今天看到一篇文章,很详细介绍了这两个的区别和特点。我下一步倒是希望可以好好研究一下监控。

http://www.cnyunwei.com/thread-852-1-1.html

Cacti介绍
    Cacti是一个用 rrdtool 来画图的网络监控系统,通常一说到网络管理,大家首先想到的经常是 mrtg,但是 mrtg 画的图简单且难看,rrdtool 虽然画图本领一流,画出来的图也漂亮, 但是他也就是一个画图工具,不像 mrtg 那样本身还集成了数据收集功能。cacti 则是集成了各种数据收集功能,然后用 rrdtool 画出监控图形。其本身界面比起同类系统要漂亮不少. 推荐所有有监控需求的人都去研究一下。Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过 snmpget来获取数据,使用RRDtool绘画图形
    Cacti三层架构:数据展现层、数据存储层、数据采集层,其具体如下:
        数据采集层:通过SNMP或自定义脚本进行数据采集
        数据存储层:通过cacti模板等数据存放至MYSQL中
        数据展现层:通过WEB方式呈现出来
Cacti应用场景
1)网络设备
(1)接口流量(进与出的带宽)
(2)监控CPU的负载、内存等等
(3)温度等等
2)主机系统
(1)网络接口流量(进与出的带宽)
(2)监控CPU的负载、内存等等
(3)监控磁盘的空间、进程数等等
3)cacti常见的监测对象
(1)服务器资源:CPU、内存、磁盘、进程、连接数等
(2)服务器类型:WEB、Mail、FTP、数据库、中间件
(3)网络接口:流量、转发速度、丢包率
(4)网络设备性能、配置文件(对比与备份)、路由数
(5)安全设备性能、连接数、攻击数
(6)设备运行状态:风扇、电源、温度
(7)机房运行环境:电流、电压、温湿度
nagios介绍
    cacti 和 nagios 是不同功用的系统, nagios 适合监视大量服务器上面的大批服务是否正常, 重点并不在图形化的监控, 其集成的很多功能例如报警,都是 cacti 没有或者很弱的. cacti 主要用途还是用来收集历史数据和画图, 所以界面比 nagios 漂亮很多.
    Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的附件(NRPE、NSCA、 NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。
    其它四个附件:
   (1)NRPE:用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控
   (2)NSCA:用来让 被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到)
   (3)NSClient++:用来监控 Windows主机时安装在Windows主机上的组件
   (4)NDOUtils:则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现 这些数据的快速检索和处理
    这四个ADDON(附件)中,NRPE和NSClient++工作于客户端,NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端
nagios主要功能
网络服务监控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
主机资源监控(CPU load、disk usage、system logs),也包括Windows主机(使用NSClient++ plugin)
可以指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告……)
可以通过配置Nagios远程执行插件远程执行脚本
远程监控支持SSH或SSL加通道方式进行监控
简单的plugin设计允许用户很容易的开发自己需要的检查服务,支持很多开发语言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)
包含很多图形化数据Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
可并行服务检查
能够定义网络主机的层次, 允许逐级检查, 就是从父主机开始向下检查
当服务或主机出现问题时发出通告,可通过email, pager, sms 或任意用户自定义的plugin进行通知
能够自定义事件处理机制重新激活出问题的服务或主机
自动日志循环
支持冗余监控
包括Web界面可以查看当前网络状态,通知,问题历史,日志文件等
3、结合实际应用选型软件
分析:
1)、 NRPE与SNMP协议
Cacti在LINUX下主要采用SNMP协议;snmp是简单网络管理协议,通过固定协议运行方式以OID格式提供系统运行状态的全面信息,然后通过snmp agent去获取这些信息并绘制流量。
NAGIOS在LINUX下主要采用NRPE插件,NRPE通过ssl方式在C/S结构下调用被监控主机的状态监测脚本,并将获得的信息实时提供到监控服务器。
2)、NAGIOS与CACTI区别
Cacti:在监控方面绘图比较不错,在流量与图型展现比较存在优势
Nagios:在故障分析比较不错,报警机制相对来说比较好,报警机制:邮箱、短信等,而且也比Cacti灵活;同时适用监控大量服务器以及服务器上面大批服务状态是否正常,重点不在图形化,而在状态故障的监控
综合所知:
cacti偏沉于收集流量画图,系统负载方面的。而nagios偏沉于系统状态正常与否方面的, nagios能够和短信发送机共同用来规模较大的网络,Cacti+Nagios 两者结合使用取长补短方为上上之策。