UNIXHOT打造中国最专业的运维门户网站《Linux系统运维之监控》LinuxLinuxLinuxLinux系统运维之监控系统运维之监控系统运维之监控系统运维之监控UNIXHOTUNIXHOTUNIXHOTUNIXHOT运维运维运维运维社区社区社区社区《Linux系统运维之监控》版权信息:Copyright(c)2010ZhaoShundong.Permissionisgrantedtocopy,distributeand/ormodifythisdocumentunderthetermsoftheGNUFreeDocumentationLicense,Version1.2oranylaterversionpublishedbytheFreeSoftwareFoundation;withnoInvariantSections,noFront-CoverTexts,andnoBack-CoverTexts.AcopyofthelicenseisincludedinthesectionentitledGNUFreeDocumentationLicense.使用说明:1.为保证本文的完整性和可用性,本文遵循GFDL协议。2.可以在找到本文的最新版本。3.本文仅供参考使用,不承担任何因文档错误而造成的任何损失。4.有任何问题可以在UnixHot运维社区讨论交流。5.由于时间仓促,有些章节讲解的不够深入,敬请谅解,下个版本加强。6.有相关问题或业务合作。请邮件至admin@unixhot.com。修订历史记录修订历史记录修订历史记录修订历史记录日期版本说明2009-08-01V1.0创建本文原始版本以网页形式发布2010-07-26V1.1添加第八章自动化批量部署2010-07-27V1.2添加GFDL协议和使用说明2010-07-29V2.0进行详细的修改工作2010-07-30V2.1更名为Linux系统运维之监控,添加Cacti监控2010-08-01V2.2添加Smokeping监控2010-11-25V2.3添加网站流量统计分析2010-12-06V3.0正式网络发布UNIXHOT打造中国最专业的运维门户网站《Linux系统运维之监控》内容简介内容简介内容简介内容简介UNIXHOT运维社区致力于为想成为系统运维工程师、系统集成工程师、系统架构师、MySQLDBA和OracleDBA的互联网朋友们创造一个开源的、共享的、完整的、创新的、一站式的学习和交流平台。运维社区现在有运维导航、运维论坛、运维知道、运维Wiki四个频道。欢迎大家加入,让我们成为一个圈子。本文是系统运维工程师的实用手册,主要讲解基于Linux平台运维工作中需要掌握的监控知识。本文全部基于实际应用,部署步骤详细,可以直接复制用于生产环境的安装配置,帮助刚刚接触Linux运维的朋友们,迅速搭建企业级的监控平台。本文共分为五个部分:第一部分简单的介绍了监控的重要性,需要监控的对象,和部署监控平台前的规划,让大家可以在前期有个条理化的思路,并对整体架构有良好的认识。第二部分通过目前最流行的监控软件Nagios来介绍如何实现7x24小时的监控、预警、报警系统,并通过介绍如何编写Nagios插件,来让工程师们可以自定义监控对象和方法,拓展并满足工作需求。最后也讲解了我们实际中会用到的权限的设置和Nagios的优化工作。第三部分讲的是目前图形化监控比较优秀的Cacti软件,它通过SNMP协议获取监控数据,通过rrdtool工具完美的展现系统或者网络设备的流量和性能趋势图,便于工程师及时发现问题,并通过数据的叠加,分析系统负载的周期性,为调优工作获得最直接也最准确的性能报表。第四部分讲的Smokeping这个网络监控软件,它也是rrdtool作者的佳作,天生的分布式设计,可以更准确的展现目前的网络状况,出现网络故障时可以快速的分析出现故障的节点,是企业网络监控中一款很优秀的开源软件。第五部分简单介绍了网站流量的统计分析,由于目前Google和百度都提供了很优秀的流量分析统计工具,朋友们可以自己去了开源的日志分析工具AWStat的配置与使用。UNIXHOT打造中国最专业的运维门户网站《Linux系统运维之监控》目录(目录(目录(目录(ContentsContentsContentsContents))))第一部分监控概述第1章监控的重要性第2章监控的对象第3章监控的方法第二部分Nagios监控平台第1章Nagios简介第2章Nagios服务器端部署第3章Nagios配置文件简介第4章Nagios外部监控第5章Nagios监控远程Linux服务器第6章Nagios监控远程Windows服务器第7章Nagios插件开发第8章Nagios自动化批量部署第9章Nagios用户和权限管理第10章Nagios使用杂谈第三部分:Cacti监控平台第1章Cacti简介第2章SNMP协议第3章rrdtool工具第4章Cacti安装第5章Cacti配置管理第6章Spine(Cactid)第四部分:Smokeping网络监控平台第1章Smokeping简介UNIXHOT打造中国最专业的运维门户网站《Linux系统运维之监控》第2章Smokeping安装配置第3章Smokeping分布式第五部分:网站流量统计分析第1章名词解释第2章GoogleAnalytics第3章百度统计UNIXHOT打造中国最专业的运维门户网站《Linux系统运维之监控》前言(前言(前言(前言(PrefacePrefacePrefacePreface))))我无意去写一本书,我称本文为实用手册或者工作文档,只是按出刊物的编排格式来整理而已,主要是方便大家参考查阅,喜欢的朋友也可以直接打印出来,参考本文你可以快速的学习和掌握Linux系统运维中的监控工作,在运维社区有很多朋友参考本文构建自己企业的监控平台,也欢迎大家来运维社区一起讨论学习。UNIXHOT运维社区的同志们在钻研技术方面都有很好的积极性,并没有在工作若干年后成为一名“文档哥”。对于技术细节喜欢刨根问底,这让很多新加入的朋友们都感觉到浓厚的学习气氛,我也时刻被这种气氛感染着,从而去不停的探索,不停的测试、不停的学习。在这里希望更多的朋友们加入,请用Google搜索“运维社区”,我们始终站在搜索结果的第一位!在您开始阅读本文之前,我愿意把自己的学习方法和大家分享一下,仅供参考:我学习知识的方式是一般分为四步,总结起来就是从哪里开始,从哪里结束,起点同样是终点。我称自己的学习方法为“圆形学习法”:第一步、先了解该程序或者方案的工作原理和一些基础知识。第二步、搜索一篇文档自己来做测试,遇到问题要自己解决,自己确实解决不了时请教他人。第三步、超越基本,做一些高级应用的测试,如分布式部署、性能优化等。第四步、回到起点,深入研究其工作原理,并归纳总结,分享自己的成果。UNIXHOT打造中国最专业的运维门户网站《Linux系统运维之监控》第一部分第一部分第一部分第一部分监控概述监控概述监控概述监控概述在这一部分会简单介绍下监控的重要性,为什么要做监控,需要监控哪些对象,以及如何规划一个监控平台等。要知道我们需要做什么,怎么做,做完后的结果是什么。对于监控后报警信息的处理不在本文探讨范围呢,相关问题请在运维论坛或者运维知道讨论。第1章监控的重要性单单从“监控”两个字来谈,范围之广可以涵盖我们生活的方方面面,我们生活和工作中处处可见视频监控的摄像机;机房中的电压电流监控、干湿计、温度计;值班室的网络监控,网站流量监控等等都是监控的范畴。但本文仅仅讲解和计算机网络有关的监控,主要针对我们生产应用的服务器性能和应用服务的监控,以及服务器或者网络设备上的网络流量监控。监控的重要性?大家想想以下情况的发生:从应用层来角度来看:你公司业务的WEB服务器拒绝连接了?客户无法给你们的邮箱发邮件了?论坛的大量用户无法登陆?DNS无法正常解析?机房流量超过购买的带宽限制了?数据库服务器宕机了,用户无法写入数据了?我想上面的任何一个问题出现的话,对我们的业务造成的影响都是巨大的。从服务器、应用和网络设备的角度来看:目前服务器的CPU负载多少,一天中那个时刻负载高,一个月中哪一天服务器CPU的负载比较高?磁盘的使用率是多少?网卡的进口和出口流量?内存的使用率是多少,是否考虑加大SWAP分区的大小?目前的磁盘I/O,是否考虑更换转速更快的磁盘?Apache的连接数目前是多少,最大是多少?Squid的命中率是多少?MySQLReplication是否同步?即使同步了,主从库数据是否一致?Oracle的Redolog切换是否频繁,是否需要增加日志组?DBWR进程默认一个够用吗?数据库表空间的使用率?RMAN备份是否成功?路由器或者交换机有什么错误日志......?如果继续写下去,我想可以出一本书,专门来写监控对象,因为太多太多了,不同的公司,不同的应用,就会增加更多需要监控的对象。通过上面列举的比较常见的问题,我想,监控的重要性就不言而喻了。我们如何及时的获得这些应用的运行状态信息,在出现问题时能够及时知道,这就是监控要做的事情。UNIXHOT打造中国最专业的运维门户网站《Linux系统运维之监控》第2章监控的对象监控的对象?似乎没有确切的答案,在上一节讲解监控重要性所列举的内容,就是需要监控的对象。简单的说,监控的对象就是一切你想知道的状态的一个集合。通常情况下,我们可以将监控对象这么来分:1.服务器监控,主要监控服务器如:CPU负载、内存使用率、磁盘使用率、登陆用户数、进程状态、网卡状态等。2.应用程序监控,主要监控该应用程序的服务状态,吞吐量和响应时间,因为不同应用需要监控的对象不同,这里不一一列举。3.数据库监控,只所以把数据库监控单独列出来,足以说明它的重要性,一般监控数据库状态,数据库表或者表空间的使用情况,是否有死锁,错误日志,性能信息等等。4.网络监控,主要监控当前的网络状况,网络流量等。以上四条应该算是最基本的,也是保证网站正常运行必须要知道的几点内容,这样才能实现我们常说的“运筹帷幄之中,决胜千里之外”。第3章监控的方法前两个章节,介绍了监控的重要性,并了解了我们需要监控哪些内容,当然在开始之前,我们要知道有哪些方法可以进行监控工作。目前监控工具多如牛毛,针对不同的行业,针对不同的应用,针对不同的服务都有很多监控工具。有客户端的监控和浏览器的监控,本书只讲解基于Linux平台的开源监控工具。Linux平台下的监控方法基本上可以分为两种,第一种是通过外部检测命令或者代理程序获得被监控主机的相关状态,代表工具:Nagios、Munin、Ganglia。第二种是通过SNMP协议来实现对服务器和网络设备的监控工作,代表工具:Cacti。其中Nagios可以使用check_snmp命令,或者自己写脚本来使用SNMP协议获取数据。细心的朋友可以发现,从开始我们就用“平台”两个字,之所以把一个软件称之为“平台”足以说明其强大性,通过软件本身功能再加上自己的扩展,我们可以通过该软件监控我们日常工作中所有需要监控的对象。UNIXHOT打造中国最专业的运维门户网站《Linux系统运维之监控》第二部分:第二部分:第二部分:第二部分:NagiosNagiosNagiosNagios监控监控监控监控第1章Nagios简介1.11.11.