目录

1.          监控... 1

1.1    监控前调研... 1

1.1.1      首先:明确需求... 1

1.1.2      其次:开源等软件调研... 4

1.2    LAMP平台搭建 (Linux Apache MySql Php)... 14

1.2.1      Linux安装:... 14

1.2.2      MySql Server 安装... 14

1.2.3      Apache安装... 15

1.2.4      Php 安装... 15

1.3    安装RRDTool. 18

1.4    安装net-snmp. 20

1.5    Cacti. 20

1.5.1      概述... 20

1.5.2      Cacti的架构及工作流程... 20

1.5.3      安装... 21

1.5.4      数据库配置... 22

1.5.5      完成cacti的安装... 23

1.6    Nagios. 24

1.6.1      概述... 24

1.6.2      Nagios的架构及工作流程... 25

1.6.3      Nagios安装... 26

1.7    Cacti和Nagios整合... 36

1.7.1      安装ndoutils36

1.7.2      配置ndoutils37

1.7.3      安装npc. 38

1.7.4      其他插件安装... 38

1.8    参考资料... 39

2.          进度报告... 41

2.1    基本监控运行正常... 41

2.2    邮件报警可用... 41

2.3    短信报警正在测试(主要是短信猫,其他不建议使用)... 41

2.4    细粒度的监控需进一步研究... 41


 

服务器监控及虚拟化平台建设

 

1.  监控

1.1    监控前调研

1.1.1      首先:明确需求

1.1.1.1          硬件资源监控

l         CPU使用率

监控服务器CPU的使用率比例,还包括详细统计,包括用户态(User)、内核态(System)、I/O等待(IOWait)、空闲(Idle)等。

监控结果包括:

·      CPU使用率详细比例,包括用户态、内核态、I/O等待、空闲等

·      CPU使用率变化曲线。

·      每日CPU平均使用率、最小使用率、最大使用率。

·      每日CPU详细使用率统计,·      包括用户态、内核态、I/O等待、空闲等。

·      每日监控性能报告邮件(可选)。

·      告警通知。

l         CPU负载

监控Linux服务器的平均负载(load average),包括最近1分钟、5分钟、15分钟等。

监控结果包括:

·      平均负载变化曲线,·       包括最近1分钟、最近5分钟、最近15分钟。(loadaverage)

·      每日平均负载、最小负载、最大负载。

·      每日监控性能报告邮件(可选)。

·      告警通知。

l         内存使用率

监控服务器内存的使用率,包括Buffer Cache、Page Cache、应用程序内存等。

监控结果包括:

·      物理内存使用率详细比例,·    包括Buffer Cache、Page Cache、应用程序内存、空闲内存等。

·      物理内存使用率变化曲线。

·      Swap使用率变化曲线。

·      每日物理内存平均使用率、最小使用率、最大使用率。

·      每日物理内存详细使用率,·    包括用户态、内核态、I/O等待、空闲等。

·      每日Swap内存平均使用率、最小使用率、最大使用率。

·      每日监控性能报告邮件(可选)。

·      告警通知。

l         磁盘空间使用率

监控所有磁盘分区的空间使用率,包括总空间和已用空间。

监控结果包括:

·      各磁盘分区的总空间、已用空间,· 以及空间使用率。

·      每日磁盘各分区的空间使用率变化。

·      每日监控性能报告邮件(可选)。

·      告警通知。

l         磁盘I/O

监控所有磁盘分区的I/O流量,包括写入和读取。

监控结果包括:

·      各磁盘分区(如Linux中的/home、/usr/local,·     或者Windows中的C盘)的写入、读取字节速率(Kbytes/s)。

·      各磁盘分区的写入、读取平均每秒次数。

·      每日各磁盘分区的写入、读取平均字节速率,·         最大字节速率。

·      每日监控性能报告邮件(可选)。

·      告警通知。

l         服务器网络资源使用率

监控所有网络设备的字节流量和数据包传输速率,包括流入和流出。

监控结果包括:

·      各网络设备·    (如WAN网卡、LAN网卡)的流入、流出字节速率(Kbytes/s)或位速率(Mbps)。

·      各网络设备·    的流入、流出包速率。

·      每日各网络设备·     的流入、流出总流量。

·      每日各网络设备·     的流入、流出平均字节速率,·  最大字节速率。

·      每日各网络设备·     的流入、流出平均包速率,·      最大包速率。

·      每日监控性能报告邮件(可选)。

·      告警通知。

l         服务器进程监控

监控系统当前的进程数。     

1.1.1.2      业务服务监控:

  提供关键指标

  

可扩展的手段去定义业务服务监控

  

对错误的追踪、回溯、判断;

版本管理 支持,对同一输入 的 不同版本 输出 结果列表、性能指标、资源占用 进行比较分析

1.1.1.3      功能需求:

告警通知:

    当发生故障时,必须能以有效的报警方式通知管理员,使故障能得到及时解决;

多种报警方式(根据故障严重程度):

邮件,msn,QQ...(一般故障)

短信 ,电话 (比较严重故障)

电视墙报警:包括声音 (特别严重故障)

监控Web站点的状态和性能(Web站点的性能就是业务量)

负载(并行用户的数量)

 响应时间

输出(每秒钟的请求数量)

性能监控,实时了解被监控资源

 

自动化监控

 1. 定点监控

     创建任务(Job)

     创建计划(Scheduling)

绑定计划和任务

 2. 实时监控

     24X7

支持手机终端查看

     轻量级的手机终端查看(Android),能简单查看各服务器的运行状况

统一监控,集中展现

统一监控视图可以将IT资源的监控信息分别在不同样式的视图上集中统一体现出来,方便运维人员集中监控管理。

IT组件全方位监控提供对网络设备、主机操作系统、数据库、中间件、应用软件、安全、备份、存储以及机房环境等IT基础设施的专业监控。

业务服务视图通过业务拓扑图的形式展现业务的可用性、性能、处理及时率、用户数和业务量等精选KPI(Key Performance Indicator)和KQI(KeyQuality Indicators)指标以及业务数据,展现业务系统内部关系、业务与IT系统架构之间的关联关系,以及业务影响路径和影响度,并通过不同的颜色来展现运行状态。

集中事件处理可以将监控指标与配置信息、监控信息、告警信息、工单信息、变更信息等运维相关信息进行关联,为分析问题、处理问题提供方便。

监控指标相关性分析将业务系统性能指标同主机性能指标、网络设备性能指标、线路带宽利用率等IT基础设施性能指标进行关联,反映基础设施与业务系统的性能、容量及处理能力

深入的性能分析:对收集的数据进行自动汇聚、抽取、分析,从整体架构到微观性能指标,提供各种趋势、比较、TopN及相关性分析,为用户系统优化、决策分析和业务规划提供量化参考。

第三方工具集成:利用界面集成、数据集成、API调用技术及文件等方式整合网络、系统监控、流量管理等第三方专业工具提供的数据和界面。

 

1.1.2       其次:开源等软件调研

 监视系统运行状态和网络信息的监视系统

 

1监控软件框图

Monit

简介:

Monit不仅可以监视你的服务器,还能通过一些预定的方法来应付特定情况下的问题。比如说你的数据服务器宕掉了,Monit可以自动重启服务器,如果这是你所希望它做的话(提示:这往往是你希望的)。

当你需要监控多个服务器的时候,你可以使用M/Monit- Monit的一个扩展版本,它提供了一个简单的途径来管理多台服务器。

M/Monit同时提供了iPhone app(iPhone接口)来帮助你方便地管理你的网站,你再不需要拖着一台笔记本到处转了。

Monit部分功能或工具需要收费,此处不展开讨论

Ganglia

简介:

 Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要 是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

当你拥有一个服务器群组时,很难一下子看出你整个服务器组的工作概况。Ganglia却可以让你纵览整个组。在应付一大群服务器时,这是一个很好的工具。但从这个意义上来说,对付单服务器架构用这个工具就显得大材小用了。

特点:

l      Ganglia由两个独立的daemon、一个基于PHP的web前端和其它实用程序所组成

l      用于测量数以千计的节点,用来监控系统性能(如:cpu、mem、硬盘利用率, I/O负载、网络流量情况等)

l      每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond的守护进程

l      通过曲线查看每个节点的工作状态

l      由RRDTool工具处理数据,并生成相应的的图形显示,以Web方式直观的提供给客户端

l      低单节点负载和高一致性,能够适应不同的操作系统和处理器体系结构

优点:

l      Ganglia更多地与收集度量数据并随时跟踪这些数据有关

l      gmond带来的系统负载非常少

缺点:

l      Ganglia没有内置通知系统

l      前端将消耗大量的资源

Munin

简介:

Munin 监测并将系统性能指标以图形形式表现出来。它能自动地生成日/周/月/年性能图表和许多重要指标的报告。它可以监测核心系统资源比如内存、硬盘空间、CPU使用率以及一些服务器程序如MySQL, Apache, Squid。

Munin最强大的一个地方是它的易扩展性。你仅仅只需要几行代码就可以给它写一个插件来监控任何东西。这种易扩展性意味着Munin也可以用来监控一些与服务器性能无关的指标,像是注册用户数量或是网站点击率。

特点:

l      Munin使用agent/master的模式,每个监控节点启动一个agent,处理master发出的采集数据的请求。Master负责采集数据并生成对应的结果展示页面

l      Munin使用tcp协议,可以通过telnet的方式直接访问对应监控节点的状态

l      Munin除了自身有丰富的插件之外,也提供良好的插件机扩展制,允许用户自定义监控插件来增加监控项目。

l      通过访问muin-master端所发布的http服务,系统管理员可以同时查看监控主机的详细信息。

优点:

l      和同类的mrtg,cacti,nagios相比,munin提供了一个安装简单、配置简单、功能全面、界面友好的主机监控解决方案

l      易扩展性

缺点:

l      不支持基于日志记录的分析

l      有限的报警机制

 

MRTG:流量监控

简介:

Multi RouterTraffic Grapher------MRTG是一个监控网络链路流量负载的工具软件,通过snmp协议得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载。

特点:

l      可移植性:目前可以运行在大多数 Unix系统和 Windows 之上;

l      源码开放:mrtg是用 perl 编写的,源代码完全开放;

l      高可移植性的SNMP支持:mrtg 采用了 Simon Leinen 编写的具有高可移植性的 SNMP 实现模块,从而不依赖于操作系统的SNMP模块支持;

l      支持SNMPv2c:MRTG 可以读取 SNMPv2c 的64位记数器,从而大大减少了记数器回转次数;

l      可靠的接口标识:被监控设备的接口可以以IP地址、设备描述、SNMP对接口的编号及 Mac 地址来标识;

l      常量大小的日志文件:MRTG的日志不会变大,因为这里使用了独特的数据合并算法;

l      自动配置功能:MRTG自身有配置工具套件,使得配置过程非常简单;

l      性能:时间敏感的部分使用 C代码编写,因此具有很好的性能;

l      PNG格式图形:图形采用 GD库直接产生 PNG 格式;

l      可定制性:MRTG产生的 web 页面是完全可以定制的。

优点:

l      简单、易上手,基本安装完了之后只要更改一下配置文件即可

缺点:

l      使用文本式的数据库,数据不能重复使用;

l      只能按日、周、月、年来查看数据;

l      只能画两个DS:Data source(一条线、一个块);

l      每取一次数据即需要绘图一次,浪费系统资源;

l      无管理功能;

 

  CACTI:流量预警,性能报告

 简介:

在广义上来说cacti是一套网络流量监测图形分析工具,但从狭义来说cacti只是由php语言实现的一个软件,它需要PHP,apache,Mysql,SNMP,RRDTool等工具的支持,它运用snmpget采集数据,使用rrdtool绘图,使用Cacti能统计网络设备的流量、CPU、系统负载等参数,也可以自定义监测的指标。

Cacti is 和Munin有很多相似的地方。不过它有一点和Munin相比表现突出的地方,那就是它允许你在一个较模糊的界限里调整你的数据显示的范围大小。 Munin只有固定的日、周、月、年性能图表(除非你自己写一个扩展),而Cacti却可以让你以你希望的方式查看你的数据:最近2小时,近四天,近六个 月,不定期。你甚至可以在可视界面上拉近拉远你的图表。

 

特点:

l          无限图的项目(unlimited graph items

l          对图表的auto-padding支持(auto-padding support forgraphs

l          图形数据处理(graph data manipulation

l          灵活的数据来源(flexibledata sources

l          数据收集在一个特殊的时间跨度(data gatheringon a non-standard timespan

l          自定义数据收集脚本(custom data-gatheringscripts

l          内置SNMP支持(built-in SNMP support)

l          图形模板(graph templates

l          数据源模板(data source templates

l          主机模板(host templates

l          树,清单,和预览视图图形数据(tree, list, andpreview views of graph data

l          基于用户的安全与管理(user-basedmanagement and security

优点:

l          强大的绘图功能

l          非常容易地被安装和使用

缺点:

l          一些对像的状态监控,对于一些说明性的监控,做为一个绘图工具来讲,可能就会有相应的困难 

l          如果在整体监控过程中,在上千的设备找到某一具体业务、某一具体位置、某一具体用途的服务器来讲,是比较困难的

l          监控有限, 若要添加自定义图表比较麻烦

补充:

Rrdtool:简单的说,rrdtool就是一个强大的绘图的引擎。

优点:

l       使用rrd存储格式,数据能重复使用,比如我可以将一个rrd文件中的数据与另一个rrd文件中的数据相加。

l       可以定义任意时间段画图,即你可以画出一张半年以来的数据的图,也可以画出一张半小时以来的图。

l      能画任意个DS(Data source)。

l      CDEF(一个虚拟的变数,其值为 DEF 的某些运算)让你能任意摆弄数据。

缺点:

l      rrdtool的作用只是存储数据和画图,它没有mrtg中集成的数据采集功能;

l      在命令行的使用非常复杂,参数极多。

l      无管理功能。

Nagios

简介:

  Nagios是“IT网站监控的工业标准”。不过这只是他们网站自己这么说的。Nagios的安装以及配置非常繁琐,但是它所拥有的丰富特性是市场上的任何工具都不可比拟的,适用于有经验的IT网络管理员。Nagios支持监控多台服务器并且可以通过email,或者以纸质(只要你还在用这种古老的技术)发送警告或 SMS/text消息。像Monit一样,Nagios也可以通过一定的配置来自动对故障作出反应。

nagios可以采集数据,但是不适合做历史数据展示,它仅仅是一个监控,监视某些状态值是否正确,而没有把数据值的历史记录下来,nagios并不使用rrdtool。其实,nagios并不是跟cacti/mrtg等同的工具,还需要一个采集画图的工具。

  当前,Nagios可能是应用比较广泛的监控工具了,例如,Facebook、Sina、Sohu、网易、阿里巴巴等大型企业都在采用这套监控平台,twitter就是用nagios+munin的

特点:

l      监控网络服务(SMTP、POP3、HTTP、NNTP、Ping等);

l      监控主机资源(处理器负载,磁盘利用率等);

l      简单的插件设计使用户可以方便地扩展自己服务的监测方法;

l      并行服务监测机制;

l      具备定义网络分层结构的能力,用“parent”主机定义来表达网络主机间的关系;这种关系被用来发现和明确主机宕机或不可达状态;

l      当服务或主机问题产生与解决时将警告发送给联系人(通过Email,短信,用户自定义);

l      具备定义事件句柄功能,它可以在主机或服务的事件发生时获取更多问题定位;

l      自动的日志回滚;

l      可以支持并实现对主机的冗余监控;

l      可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等。

优点:

l      强大的报警功能

l      支持灵活的插件功能,能自定义监测

缺点:

l      界面简单

l      绘图功能不佳

l      远程监控监控端和被监控端都需要安装NRPE代理

l      插件开发至少要精通Perl,shell,python等其中一门脚本语言

l      nagios可以采集数据,但是不适合做历史数据展示

 

Zabbix

 简介:

Zabbix是一个企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由免费下载使用,运作团队靠提供收费的计技术支持赢利

Zabbix通过C/S模式采集数据,通过B/S模式在Web端展示和配置

被监控端:主机通过安装agent方式采集数据,网络设备通过SNMP采集数据

Server端:通过收集SNMP和agent发送的数据写入MySql数据库,再通过php+apache的方式在Web前段展示

Zabbix 是一种功能丰富的监控工具。它有强大的可视支持:用户自定义界面、拉近拉远和绘制方式。它可以通过email、SMS或即时消息来发送警告。同时它还可以发出声音警告,当你人在监控机器旁边的时候会很有用。

特点:

l          具备常见商业监控软件所具备的功能(主机的性能监控,网络设备性能监控、数据库性能监控、FTP等通用议监控、多种告警方式、详细的报表图表绘制)

l          支持自动发现网络设备和服务器

l          支持分布式,能集中展示、管理分布式的监控点

l          扩展性强,server提供通用接口,可以自己开发完善各类监控

优点:

l          Server对设备性能要求较低

l          支持设备多

l          支持分布式集中管理

l          开放式接口,扩展性强

l          性能管理和容量规划

缺点:

l          无厂家支持,出现问题解决比较麻烦

l          需要在被监测主机上安装agent

Zenoss Core

简介:

 Zenoss Core是开源企业级IT管理软件-是智能监控软件,他允许IT管理员依靠单一的WEB控制台来监控网络架构的状态和健康度。Zenoss Core同时也是开源的网络与系统管理软件。

Zenoss是用Python写的,用MySQL存储数据

Zenoss 是商业服务器监控工具Zenoss Enterprise的一个开源版本,全部由Python语言编写。它支持Nagios plugin format(Nagios插件格式),所以许多Nagios的插件也可以用于Zenoss。Zenoss的一个突出的地方是它强大而又容易使用的用户接口。

特点:

l          警报控制

l          网络监控

l          性能监控

l          服务监控

优点:

l          以CMDB为核心,可以方便在系统中进行调整与管理

l          易于管理、易于阅读并且功能齐全(即支持Cacti可视化,同时又支持Nagios扩展)

l          仪表盘风格很容易理解,能基本满足所需要的任何监控

l          易于安装和维护

l          虚拟化和云计算监测能力

缺点:

l          显示权限策略不全

Collectd

简介:

Collectd 和Munin以及Cacti一样是注重图形式的系统指标显示方式。与众不同的是,它是专门为性能和可移植性而设计的。这意味着它适用于那些粗糙的、低端的和嵌入式的系统。高性能低资源占有率的设计使得Collectd可以在不干扰你的服务进程的条件下,每10秒钟收集一次数据,提供高清晰的结果。可以用 C、Perl或是Java给它写扩展程序。

特点:

l          完全是由C语言编写,故性能很高,可移植性好

l          允许运行在系统没有脚本语言支持或者cron daemon的系统上,比如嵌入式系统

l          包含优化以及处理成百上千种数据集

l          collectd包含有超过70多种插件,其中有标准的case到非常特殊和高级的专题

优点:

l          强大的网络联网特性,它能以多种方式来扩充

l          性能很高,可移植性好

l          文档支持非常好

缺点:

l          它本身不能生成图形

l          只能进行简单门阀检测
 

初步建议方案:

  方案一:Nagios+Cacti(灵活的监控机制+强大的绘图能力)

    虽然 MRTG是一套非常好用的软件但是它毕竟是一套很旧的软件了,其作者在多年前已经开发出RRDTool 代替该软件,现在已经发展的很成熟了,但由于 RRDTool 的指令非常复杂,对于使用者非常的麻烦,幸运的是有一套软件 Cacti 的发展就是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来作出各式各样的监控图,因此用Cacti取代MRTG,在方案中不考虑MRTG

  方案二:Zenoss

Zenoss fills both(Nagios,Cacti) roles, without the annoying shortcomingsprevalent in the alternative solutions. Zenoss uses the terms AvailabilityMonitoring and Performance Monitoring to describe these two fundamental roles.

 


Name

IP SLA Reports

Logical Grouping

Trending

Trend

Prediction

Auto

Discovery

Agent

SNMP

Syslog

Plugins

Triggers/

Alerts

WebApp

Distributed

Monitoring

Inventory

Data

Storage

Method

Maps

Access

Control

IPv6

Ganglia

 

N

Y

Y

N

Via gmond check in

Y

V

N

Y

N

Viewing

Y

U

RRDtool

Y

N

U

Munin

 

N

N

Y

Y

N

Y

Y

N

Y

Partial

Viewing

U

U

RRDtool

U

U

Y

CACTI

Y

Y

Y

Y

V

N

Y

Y

Y

Y

Full Control

Y

Y

RRDtool,MySQL

V

Y

Y

Nagios

 

V

Y

Y

N

V

S

V

V

Y

Y

Y

Y

V

Flat file,SQL

Y

Y

Y

Zabbix

 

Y

Y

Y

N

Y

S

Y

Y

Y

Y

Full Control

Y

Y

Oracle,MySQL,PostgreSQL,IBM DB2,SQLite

Y

Y

Y

Zenoss

 

Y

Y

Y

Y

Y

N

Y

Y

Y

Y

Full Control

Y

Y

ZODB,MySQL,RRDtool

Y

Y

Y

Collectd

 

N

N

N

N

Push model;
multicast
possible

S

Y

Y

Y

Y

Viewing

Y

N

RRDtool

N

Apache ACL

Y

表1 各监控软件功能点比较

Description:Y-Yes    N-NO    U-Unkown  V-Via Plugins   S- Supported

 

Legend

Product Name 

The name of thesoftware

IP SLAsReports 

Feature reports onIP SLAs

LogicalGrouping 

Support arrangingthe hosts or devices it monitors into user-defined groups

Trending 

Provide trendingof network data over time

TrendPrediction 

The softwarefeature algorithms designed to predict future network statistics

AutoDiscovery 

The softwareautomatically discover hosts or network devices it is connected to

Agent 

The product relyon a software agent that must run on hosts it is monitoring, so that data canbe pushed back to a central server. "Supported" means that an agentmay be used, but is not mandatory. AnSNMP daemon does not countas an agent.

SNMP 

Able to retrieveand report on SNMPstatistics

Syslog 

Able to receiveand report on Syslogs

Plugins 

Architecture ofthe software based on a number of 'plugins' that provide additionalfunctionality

Triggers/Alerts 

Capable ofdetecting threshold violations in network data, and alerting the administratorin some form.

WebApp 

Runs as aweb-based application

·  No: There is noweb-based frontend for this software.

·  Viewing: Networkdata can be viewed in a graphical web-based frontend

·  Acknowledging:Users can interact with the software through the web-based frontend toacknowledge alarms or manipulate other notifications.

·  Reporting:Specific reports on network data can be configured by the user and executedthrough the web-based frontend.

·  Full Control: ALLaspects of the product can be controlled through the web-based frontend,including low-level maintenance tasks such as software configuration andupgrades.

DistributedMonitoring 

Able to leveragemore than one server to distribute the load of network monitoring.

Inventory 

Keeps a record ofhardware and/or software inventory for the hosts and devices it monitors

Data StorageMethod 

Main method usedto store the network data it monitors.

Maps 

Features graphicalnetwork maps that represent the hosts and devices it monitors, and the linksbetween them.

AccessControl 

Featuresuser-level security, allowing an administrator to prevent access to certainparts of the product on a per-user or per-role basis

IPv6 

Supportsmonitoring IPv6hosts and/or devices, receiving IPv6 data, and running on an IPv6-enabledserver. Supports communication using IPv6 to the SNMP agent via an IPv6address.

 

 

 


1.2    LAMP平台搭建 (Linux Apache MySql Php)

1.2.1       Linux安装:

RHEL 6.2

1.2.2       MySql Server 安装

解压软件包,进入安装目录,我的编译过程如下:
# ./configure --prefix=/usr/local/mysql
# make;make install
# cp support-files/my-medium.cnf /etc/my.cnf (这一步是将配置文件拷贝到/etc下面)
编译选项当中指定安装路径就可以了
配置mysql过程:
#groupadd mysql
#useradd -g mysql mysql
#cd /usr/local/mysql
#./bin/mysql_install_db --user=mysql
#chown -R root .
#chown -R mysql var
#chgrp -R mysql .
启动mysql
#./bin/mysqld_safe --user=mysql &
如果看到下面的信息,就说明启动成功了
# Starting mysqld daemon with databases from /usr/local/mysql/var
可以测试一下,看看能不能登陆mysql数据库
# /usr/local/mysql/bin/mysqladmin -uroot password '你的密码'(给初始登陆mysql的用户

root设置密码,当
然不设置也能登陆,推荐设置密码)
# /usr/local/mysql/bin/mysql -uroot -p你的密码  (注意: -p后面不要带空格)
如果出现下面的欢迎字样,说明连接成功:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.20a-log
mysql> set password for root@localhost=password('cacti');
mysql> Query OK, 0 rows affected (0.00 sec)
mysql> create database cactidb;
mysql> grant all on cactidb.* to root;
mysql> grant all on cactidb.* to root@localhost;
mysql> grant all on cactidb.* to cactiuser;
mysql> grant all on cactidb.* to cactiuser@localhost;
mysql> set password for cactiuser@localhost=password('cacti');
mysql> flush privileges; (See cacti docs/INSTALL)
mysql> exit
//select * from user;
//查询帐号是否添加成功

 

1.2.3       Apache安装

Apache Http Server

下载地址:http://httpd.apache.org/

# tar –zxvf httpd-2.2.4.tar.gz

# cd httpd-2.2.4

# ./configure --prefix=/usr/local/apache--enable-so

//编译时加上加载模块参数--enable-so

# make

# make install

# vim /usr/local/apache/conf/httpd.conf

  //修改Apache配置文件,添加ServerNamewww.yourdomain.com             (或ServerName 本机ip)

# vim /etc/rc.d/rc.local

  //在rc.local上加入一行/usr/local/apache/bin/apachectl–k start,系统启动时启动Apache服务。

 

1.2.4       Php 安装

php-5.3.3-3.el6_2.8.x86_64

   先安装zlib,freetype,libpng,jpeg以便于让PHP支持GD库(Cacti的WeatherMap插件必须要较新GD库的支持)

库文件下载地址:http://oss.oetiker.ch/rrdtool/pub/libs/
1).安装zlib

  tar zlib-1.2.3.tar.gz
  cd zlib-1.2.3
  ./configure --prefix=/usr/local/zlib
  make
  make install


2).安装libpng

  tar zxvf libpng-1.2.16.tar.tar
  cd libpng-1.2.16
  cd scripts/
  mv makefile.linux ../makefile
  cd ..
  make
  make install
  注意,这里的makefile不是用./configure生成,而是直接从scripts/里拷一个


3).安装freetype

  tar zxvf freetype-2.3.4.tar.gz
  cd freetype-2.3.4  
  ./configure --prefix=/usr/local/freetype
  make
  make install


4).安装Jpeg

   tar -zxfjpegsrc-1.v6b.tar.gz
   cd jpeg-6b/
   mkdir /usr/local/libjpeg
   mkdir /usr/local/libjpeg/include
   mkdir /usr/local/libjpeg/bin
   mkdir /usr/local/libjpeg/lib
   mkdir /usr/local/libjpeg/man

   mkdir/usr/local/libjpeg/man/man1

  //可以用mkdir -p /usr/local/libjpeg/man/man1 一步创建多层目录

   ./configure--prefix=/usr/local/libjpeg --enable-shared --enable-static
   make && make install
注意,这里configure一定要带--enable-shared参数,不然,不会生成共享库

 

5).安装Fontconfig

tar -zxvf fontconfig-2.4.2.tar.gz
cd fontconfig-2.4.2

./configure--with-freetype-config=/usr/local/freetype

make
make install


6).安装GD

  tar -zxvf gd-2.0.34.tar.gz
  cd gd-2.0.34
  ./configure --prefix=/usr/local/libgd --with-png--with-freetype=/usr/local/freetype --with-jpeg=/usr/local/libjpeg

  make
  make install

编译时显示以下信息:

** Configuration summary for gd 2.0.34:

   Support for PNG library:         yes
   Support for JPEG library:        yes
   Support for Freetype 2.x library: yes
   Support for Fontconfig library:   yes
   Support for Xpm library:          no
   Support for pthreads:            yes

 

7).编辑/etc/ld.so.conf,添加以下几行到此文件中。

    /usr/local/zlib/lib

    /usr/local/freetype/lib

    /usr/local/libjpeg/lib

    /usr/local/libgd/lib

    并执行ldconfig命令,使用动态装入器装载找到共享库

 

8).安装libxml,默认安装libxml包,但版本可能太低,PHP5需要更高版本的libxml包。


      # tar –zxvf libxml2-2.6.25.tar.gz
      # cd libxml2-2.6.25
      # ./configure
      # make
      # make install

 

9).安装PHP

PHP下载地址:http://www.php.net/downloads.php#v5

tar -zxvf  php-5.2.3.tar.gz
cd php-5.2.3
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs--with-mysql=/usr/local/mysql --with-gd=/usr/local/libgd --enable-gd-native-ttf--with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype--with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr--with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets

# make

# make install

# cp php.ini-recommended/usr/local/php/lib/php.ini

# ln –s /usr/local/php/bin/*/usr/local/bin/

# vi /usr/local/apache/conf/httpd.conf

查找AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

在其下加入 AddType application/x-tar .tgz

AddType application/x-httpd-php .php

AddType image/x-icon .ico

修改DirectoryIndex 行,添加index.php

修改为DirectoryIndex index.php index.htmlindex.html.var

# vim /usr/local/apache/htdocs/test.php

添加以下行:  //按i进行编辑

//php标记(用<代替[)

[?php       

 Phpinfo();

?]

wq保存退出。 //先按 Esc键,然后按:(冒号),最后才按输入wq!退出

# /usr/local/apache/bin/apachectl –kstop

#/usr/local/apache/bin/apachectl –kstart

在浏览器中输入:http://www.yourdomain.com/test.php进行测试。

 

对php编译选项的解释:

--prefix=/usr/local/php   //指定PHP的安装目录

--with-apxs2=/usr/local/apache2/bin/apxs     //支持Apache模块

--with-mysql=/usr/local/mysql   //支持MySQl

--with-gd=/usr/local/libgd    //支持GD库

--enable-gd-native-ttf    //激活对本地TrueType 字符串函数的支持

--with-ttf     //激活对 FreeType 1.x 的支持

--with-freetype-dir=/usr/local/freetype   //激活对FreeType 2.x 的支持

--with-jpeg-dir=/usr/local/libjpeg //激活对 jpeg-6b 的支持

--with-png-dir=/usr   //激活对 png 的支持

--with-zlib-dir=/usr/local/zlib //激活对zlib 的支持

--enable-mbstring    //激活mbstring模块

--enable-gd-jis-conv //使JIS-mapped可用,支持日文字体

--with-mail   //支持Mail函数

--enable-xml     //支持XML

--enable-sockets     //支持套接字

 

也可以以yum 的方式一齐安装

参见 http://holy2010.blog.51cto.com/1086044/325434

 

1.3    安装RRDTool

  由于rrdtool-1.2.23需要一些库文件支持,故需先安装配置支持的环境,然后编译安装。直接运行以下bash脚本就可以完成安装:
注意:将cgilib-0.5.tar.gz、zlib-1.2.3.tar.gz、libpng-1.2.18.tar.gz、freetype- 2.3.5.tar.gz、libart_lgpl-2.3.17.tar.gz、rrdtool-1.2.23.tar.gz放到/root /rrdtool-1.2.23目录下,将脚本保存为/root/rrdtool-1.2.23/rrdtoolinstall.sh,并给执行权限 chmod u+x /root/rrdtool-1.2.23/rrdtoolinstall.sh。
以下链接是我重新打好的一个rrdtool-1.2.23的安装包,里面包括了所有用到的库文件和安装脚本,下载解压后执行脚本rrdinstall.sh即可以完成RRDTool的安装。
点击下载rrdtool-1.2.23.tar.gz

如果以上脚本安装失败,可以试试以下安装包:

http://61.156.20.41/autodownload/rrdtool-1.2.11.tar.gz

#!/bin/sh
BUILD_DIR=`pwd`
INSTALL_DIR=/usr/local/rrdtool
cd $BUILD_DIR
tar zxf cgilib-0.5.tar.gz
cd cgilib-0.5
make CC=gcc CFLAGS="-O3 -fPIC -I."
mkdir -p $BUILD_DIR/lb/include
cp *.h $BUILD_DIR/lb/include
mkdir -p $BUILD_DIR/lb/lib
cp libcgi* $BUILD_DIR/lb/lib
cd $BUILD_DIR
tar  zxf zlib-1.2.3.tar.gz
cd zlib-1.2.3
env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
make
make install
cd $BUILD_DIR
tar zxvf libpng-1.2.18.tar.gz
cd libpng-1.2.18
env CPPFLAGS="-I$BUILD_DIR/lb/include"LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
    ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
cd $BUILD_DIR
tar zxvf freetype-2.3.5.tar.gz
cd freetype-2.2.5
env CPPFLAGS="-I$BUILD_DIR/lb/include"LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
    ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install


cd $BUILD_DIR
tar zxvf libart_lgpl-2.3.17.tar.gz
cd libart_lgpl-2.3.17
env CFLAGS="-O3 -fPIC" ./configure --disable-shared--prefix=$BUILD_DIR/lb
make
make install

IR=-I$BUILD_DIR/lb/include
CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
LDFLAGS="-L$BUILD_DIR/lb/lib"
CFLAGS=-O3
export CPPFLAGS LDFLAGS CFLAGS

cd $BUILD_DIR
tar zxf rrdtool-1.2.23.tar.gz
cd rrdtool-1.2.23
./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl &&make && make install


//完成后建立符号连接 

ln –s /usr/local/rrdtool/bin/*/usr/local/bin/

//执行rrdtool看是否安装正确

 

1.4    安装net-snmp

  RedHat默认安装了SNMP服务,但好象没有snmpwalk,snmpget这两个命令,所以需要编译安装NET-SNMP。

NET-SNMP官方网站:http://www.net-snmp.org/

# tar zxvf net-snmp-5.2.4.tar.gz

# cd net-snmp-5.2.4
# ./configure --prefix=/usr/local/net-snmp  --enable-developer
# make
# make install

# ln –s /usr/local/net-snmp/bin/*/usr/local/bin/

# cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf

//修改snmpd.conf(修改COMMUNITY、允许抓取snmp数据的主机、抓取数据范围等)。

#/usr/local/net-snmp/sbin/snmpd     //启动SNMP服务

# vi /etc/rc.d/rc.local

   //在rc.local上加入一行/usr/local/net-snmp/sbin/snmpd,系统启动时启动SNMP服务。

 

1.5    Cacti

1.5.1       概述

l         cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。

l         Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。

l         snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。

1.5.2       Cacti的架构及工作流程

 

2 Cacti架构图

 3 Cacti工作原理图

1.5.3       安装

Cacti官方网站:www.cacti.net/

# tar –zxvf cacti-0.8.6j.tar.gz

# mv –r cacti-0.8.6j/usr/loca/apache/htdocs/cacti

# vi/usr/local/apache/htdocs/cacti/include/config.php

$database_type = "mysql";

$database_default = "cacti";

$database_hostname ="localhost";

$database_username = "cacti";

$database_password = "cacti";

 

//添加cacti用户

# useradd cacti

//将rra目录的所有权给cacti用户

# chown –R cacti/usr/loca/apache/htdocs/cacti/rra

//修改cacti目录所属组

# chgrp –R cacti/usr/loca/apache/htdocs/cacti

//为cacti用户添加cron任务

# su – cacti

# crontab –e

*/5 * * * * /usr/local/bin/php/usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1

注意:首次执行poller.php时请使用cacti用户,否则生成的rrd文件cacti将没有写入权限。

     

4.安装Cactid

CACTID 的安装需要以下支持:

o    net-snmp-devel (需要编译安装net-snmp时添加--enable-developer选项)

o    mysql              

o    mysql-devel    (mysql源文件编译安装后默认支持)

o    openssl-devel  (Redhat默认安装)

# tar -zxvf cacti-cactid-0.8.6i.tar.gz

# cd cacti-cactid-0.8.6i

# ./configure--with-mysql=/usr/local/mysql --with-snmp=/usr/local/net-snmp

# make

//这时你将在此目录下看到多出了cactid、cactid.conf两个文件

# mkdir /usr/local/cactid

# cp cactid cactid.conf /usr/local/cactid

# vi /usr/local/cactid/cactid.conf       //修改cactid配置文件

DB_Host        127.0.0.1

DB_Database    cacti

DB_User        cacti

DB_Pass        cacti

 

1.5.4       数据库配置

#mysql –uroot –p

Password:

mysql> create database cacti;

Query OK, 1 row affected (0.00 sec)

 

mysql> grant all on cacti.* tocacti@localhost identified by “cacti”;

Query OK, 1 row affected (0.00 sec)

 

mysql>exit

# cd /usr/local/apache/htdocs/cacti

# mysql –uroot –p cacti < cacti.sql

Password:

 

1.5.5       完成cacti的安装

1).在浏览器中输入:http://www.yourdomain.com/cacti/

默认用户名:admin 密码:admin

2).更改密码

3).设置cacti用到的命令路径

snmpwalk BinaryPath        /usr/local/ bin/snmpwalk

snmpget Binary Path        /usr/local/ bin/snmpget

RRDTool BinaryPath         /usr/local/ bin/rrdtool

PHP BinaryPath             /usr/local/bin/php

Cacti Log FilePath         /usr/local/apache/htdocs/cacti/log/cacti.log

Cactid Poller FilePath     /usr/local/cactid/cactid

4).进入cacti后需确认更改以下位置:(如下图)

Console>Settings>General

 

Console>Settings>Poller

 

1.6    Nagios

1.6.1       概述

Nagios是一个用来监视系统和网络的开源应用软件,它通常运行于一个主服务器上,这个服务器运行 Liunx 或 Unix 操作系统。Nagios利用其众多的插件实现对本机和远端服务的监控,当被监控对象出现异常,Nagios 就会及时给管理人员告警。它是一个基于TCP/IP协议的软件包,包含有nagios主程序和它的各个插件,配置非常灵活,可以监视的项目很多,也可以通过自定义 shell 脚本进行监控服务,非常适合各类企业的网络应用。
   Nagios功能非常强大,它可以监控服务和主机,但是他自身并不包括这部分功能的代码,所有的监控、检测功能都是有插件来完成的。再说报警功能,如果监控系统发现问题不能报警那就没有意义了,所以报警也是nagios很重要的功能之一。但是,同样的,nagios自身也没有报警部分的代码,甚至没有插 件,而是交给用户或者其他相关开源项目组去完成。nagios安装,是指基本平台,也就是nagios软件包的安装。它是监控体系的框架,也是所有监控的基础。
   打开nagios官方的文档,会发现nagios基本上没有什么依赖包,只要求系统是linux或者其他nagios支持的系统。不过如果你没有安装 apache(http服务),那么你就没有那么直观的界面来查看监控信息了,所以apache姑且算是一个前提条件。
   
Nagios 系统的特点主要有下面几点:

l         监控主机资源和网络服务

l         允许用户通过设计实现简单的插件来监控自己特定的服务

l         当被监控对象出现问题时,会及时通知管理人员

l         事先定义事件处理程序,当对象出现问题时自动调用对应的处理程序

l         通过 web 页面来监视对象状态,警告提示和日志文件。

 

1.6.2       Nagios的架构及工作流程

Nagios通常由一个主程序(Nagios) 、一个插件程序(Nagios-plugins) 和四个可选的ADDON(NRPE、NSCA、 NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。而四个ADDON中

l         NRPE:用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控

l         NSCA:用来让 被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到)

l         NSClient++:用来监控 Windows主机时安装在Windows主机上的组件

l         NDOUtils:则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现 这些数据的快速检索和处理

这四个ADDON(附件)中,NRPE和NSClient++工作于客户端 ,NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端

  

  Nagios 架构图

  nagios在企业级应用的位置

1.6.3       Nagios安装

1.6.3.1          nagios安装

这里我用的是root用户进行安装的,一般情况下最好用别的sudo用户,原因很简单,安全。

# groupadd nagios &&useradd nagios -g nagios -M –r //建立nagios的运行用户和组
# tar -zxf ./ nagios-2.10.tar.gz
# cd ./nagios-2.10
# ./configure –prefix=/usr/local/nagios
# make all && make install
# chown –R nagios:nagios /usr/local/nagios //把nagios文件夹给nagios用户
# make install-init && make install-commandmode && makeinstall-config //分别安装nagios启动脚本、cgi文件和config文件。
# ls /usr/local/nagios/ //如果安装目录下有etc、bin、 sbin、 share、 var则说明nagios安装成功。

1.6.3.2           nagios插件(nagios-plugins)安装

Nagios是一个框架,真正的所有的监控工作全部是由nagios插件来完成的,而nagios只是做一个汇总,把监控结果整理的明了之后呈现到用户面前。(如果语言比较N的话,可以尝试自己写nagios插件)
# tar -zxf ./nagios-plugins-1.4.10.tar.gz
# cd ./nagios-plugins-1.4.10
# ./configure –prefix=/usr/local/nagios //注意这里要把安装目录与nagios安装目录相同
# make && make install //安装完毕之后回在/usr/local/nagios/下产生一个libexec的目录
# ls /usr/local/nagios/libexec //里面有很多插件,安装完成

1.6.3.3           配置

l         配置apache

因为我们最终是通过apache访问nagios的,直接访问nagios目录的是apache的执行用户,很多朋友安装好之后抱怨说不能够通过web执行cgi程序,其实最主要的原因就是这一环节,网上有很多的文档都没有说明这个问题。
Apache的安装省略。
# useradd apache -g daemon -M -r //为apache添加执行用户
# vi /usr/local/apache/conf/httpd.conf //编辑apache配置文件
找到 User xxx
Group xxx
改为 User apache
Group daemon
在文件的最后添加:
####################
#setting for nagios#
####################
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share">
AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>

保存退出
# usermod –G nagios apache //把apache的执行用户添加到nagios组里
//这一步非常重要,是能在web页面执行cgi的关键
# /usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test
//为访问nagios用户设置权限,这里我们建立了一个用户test,之后提示输入两次密码(我设置的是123456)。

l         nagios配置文件

“大家看到了,nagios安装起来非常简单,但是很多人都觉得nagios很复杂,原因就是nagios的配置文件太多,太复杂。”网上的文档都这么说,但是我却不怎么复杂,建立过一次文件之后估计就能轻车熟路了。
如 果你想监控一台主机,首先要配置nagios的主体配置文件,譬如执行用户,web刷新频率,cgi的执行权限等等,然后1、你必须在 nagios里把主机定义好;2、要对这个主机监控什么服务,针对每一台主机定义服务;3、如果服务出错了要及时通知,定义联系人;4、我们的监控的时间 段,以及通讯我们的时间段,定义时间;5、如果监控的机器多了,为了容易管理,我们可以把主机分组,定义主机组;6、监控一个服务,需要用到哪个插件,注 册插件。比较重要的就这么些了,下面让我们一个一个来看。

i. 主体配置文件nagios.cfg
这个文件是nagios的主体配置文件,我们需要修改以下几个地方:

注释行:
#cfg_file=/usr/local/nagios/etc/localhost.cfg
去掉以下几行的注释:
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文件路径
cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //服务组配置文件路径
cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径
cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径

改check_external_commands=0为check_external_commands=1
//允许在web界面下执行重启nagios、停止主机/服务检查等操作

把command_check_interval的值从默认的1改成command_check_interval=10s(或更高,根据自己需求而定)

ii. CGI脚本控制文件cgi.cfg
首先确保use_authentication=1。
修改
default_user_name=test //这里只能写一个用户

authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=test //多个用户之间用逗号隔开
authorized_for_all_services=nagiosadmin,test
authorized_for_all_hosts=nagiosadmin,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin,test
这里的test用户,就是
/usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test
这个用户。如果要添加新管理员,执行:
# /usr/local/apache/bin/htpasswd /usr/local/nagios/etc/htpasswd test1
之后把test1用户添加到上面的cgi.cfg里的授权用户后,多个用户用逗号隔开。

iii. 时间段定义timeperiods.cfg
# vi /usr/local/nagios/etc/timeperiods.cfg
define timeperiod{
timeperiod_name 24x7 //时间段的名称,这个地方不要有空格
alias 24 Hours A Day,7Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
这 里我们定义了一个时间段,每天都是00:00-24:00,这个时间段我们给它取个名字叫24x7。在之后的host和service配置文件里都会用到这里定义的时间短,当然我们还可以定义其他的时间短,譬如说再定义一个24x5的时间段。那么这个文件里就定义了两个时间短,我们可以监控用 24x7的,而警报通知用24x5的,当然这只是打个比方。

iv. 联系人定义contacts.cfg
# vi /usr/local/nagios/etc/contacts.cfg
define contact {
contact_name lele //联系人的名称,这个地方不要有空格
alias System Administrator
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email wangl@asiacom-online.com
}

创建了一个名为test的联系人,下面列出其中重要的几个选项做说明
service_notification_period 24x7
服务出了状况通知的时间段,这个时间段就是上面在timeperiods.cfg中定义的.
host_notification_period 24x7
主机出了状况通知的时间段, 这个时间段就是上面在timeperiods.cfg中定义的
service_notification_options w,u,c,r
当服务出现w—报警(warning),u—未知(unkown),c—严重(critical),或者r—从异常情况恢复正常,在这四种情况下通知联系人.
host_notification_options d,u,r
当主机出现d¬¬¬¬—当机(down),u—返回不可达(unreachable),r—从异常情况恢复正常,在这3种情况下通知联系人
service_notification_commands notify-by-email
服务出问题通知采用的命令notify-by-email,这个命令是在commands.cfg中定义的,作用是给联系人发邮件.至于commands.cfg之后将专门介绍
host_notification_commands host-notify-by-email
同上,主机出问题时采用的也是发邮件的方式通知联系人
email wangl@asiacom-online.com
很明显,联系的人email地址
pager 1338757xxxx
联系人的手机,如果支持短信的通知的话,这个就很有用了.
alias是联系人别名,address是地址 意义不大.
按照上面的方式简单的复制修改就可以创建多个联系人了.

v. 联系人组contactgroups.cfg
# vi /usr/local/nagios/etc/contactgroups.cfg
define contactgroup{
contactgroup_name sagroup //联系人组的名称,同样不能空格
alias System Administrator Group //别名
members test //组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔
}

vi. 定义被监控主机hosts.cfg
# vi /usr/local/nagios/etc/hosts.cfg
define host {
host_name Nagios-Server //被监控主机的名称,别带空格
alias Nagios Server //别名
address 192.168.1.201 //被监控主机的IP地址
contact_groups sagroup //联系人组,上面在contactgroups.cfg中定义的sagroup
check_command check-host-alive //监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活
max_check_attempts 3 //检查失败后重试的次数
check_period 24x7 //检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的
notification_interval 50 //提醒的间隔,每隔50分钟提醒一次
notification_period 24x7 //提醒的周期, 24x7,同样来自于我们之前在timeperiods.cfg中定义的
notification_options d,u,r //指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍
}
通过简单的复制修改就可以定义多个主机了.

vii. 主机组定义hostgroups.cfg
# vi /usr/local/nagios/etc/hostgroups.cfg
define hostgroup{
hostgroup_name sa-servers //主机组名称
alias sa Servers //别名
members nagios-server //组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的
}

viii. 监控服务定义services.cfg
这 部分是整个监控系统的核心部分. 用nagios主要是监控一台主机的各种信息,包括本机资源,对外的服务等等.这些在nagios里面都是被定义为一个个的项目(nagios称之为服 务,为了与主机提供的服务相区别,我这里用项目这个词),而实现每个监控项目,则需要通过services.cfg文件中定义的命令.
# vi /usr/local/nagios/etc/services.cfg
define service{
host_name nagios-server //被监控的主机,hosts.cfg中定义的
service_description Check Disk //这个监控项目的描述(也可以说是这个项目的名称),可以空格,我们这里定义的是监控这个主机是不是存活
check_command check_local_disk!10%!5%!/ //所用的命令,是commands.cfg中定义的,其中!后面跟的是命令后面需要跟的参数,多个参数可以用多个!来追加,这里 check_local_disk的第一个参数是10%第二个参数是5%
max_check_attempts 3
normal_check_interval 3
retry_check_interval 2
check_period 24x7 //监控的时间段,是timeperiods.cfg中定义的
notification_interval 50
notification_period 24x7 //通知的时间段, ,是timeperiods.cfg中定义的
notification_options w,u,c,r //在监控的结果是wucr时通知联系人,具体含义看前文.
contact_groups sagroup //联系人组,是contactgroups.cfg中定义的
}
可以看到基本上所有的成员都是已经定义的.同样的将上面的内容复制修改,就可以定义多个服务。

ix. 插件注册commands.cfg
# vi /usr/local/nagios/etc/commands.cfg
define command{
command_name check-host-alive
//在hosts.cfg和services.cfg中,check_command所对应的命令名
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100%-p 1
//其中$USER1$是在resource.cfg文件中定义的,代表插件的安装路径.就如我们上面看到的那样$USER1$=/usr/local/nagios/libexec,至于$HOSTADDRESS$,则默认被定义为监控主机的地址.
}
我 们在services.cfg中定义了对Nagios-Server执行check-host-alive命令,实际上就是执行了 /usr/local/nagios/libexec/check_ping -H 192.168.1.201(Nagios-Server的ip地址)-w 3000.0,80% -c 5000.0,100% -p 1
commands.cfg 默认已经定义了很多这样的命令,如check_http,check_ftp等,这些命令,我们都可以直接用,但是如果我们要用的命令这里没有定义,那么我们就需要把/usr/local/nagios/libexec下我们需要用得插件,像上面的格式写到 commands.cfg中,完成插件注册,之后我们就可以在services.cfg和hosts.cfg里调用了。
当我们的services.cfg需要调用命令的时候,就在check_command后面对应写上需要的调用的命令,当命令带参数时,例如:
define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}
其中$ARG1$是参数一,$ARG2$是参数二,当我们在services.cfg里调用的时候,check_command应该对应的写上 check_local_disk!10%!5%!/,这里的3个参数用!追加.例如:
define service{
host_name nagios-server
//被监控的主机,hosts.cfg中定义的
service_description Check Disk
//这个监控项目的描述
check_command check_local_disk!10%!5%!/
max_check_attempts 3
normal_check_interval 3



}

参数的意义可以运行/usr/local/nagios/libexec check_disk –h得知.

1.6.3.4          启动

# /usr/local/apache2/bin/apachectl -kstart
//启动apache。
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
//检查配置是否有误。
# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
//用守护进程在后台运行nagios或者使用/etc/init.d/nagiosstart(这条命令的前提是,编译安装nagios的时候必须执行了make install-init。)

在任意一台机器上打开网页192.168.1.201/nagios
输入用户名test 密码123456
登入,就可以看到nagios的真正界面了。

 

1.6.3.5          监控其它机器的本地信息

监控其它机器的本地信息的时候,必须要借助另外一个插件nrpe,这个插件需要安装到被监控的机器上。
    工作原理是:插件nrpe在被监控机上开启一个daemon,通过这个daemon来和监控主机建立一条ssl加密通道,通过这条通道来传送被监控机的本地信息,达到监控的目的。
装在被监控机上的daemon就相当于一个nagios的传递员,命令行从nagios监控主机发出,然后daemon接受到信息,就会执行这条命令行,执行的方式,其实是和nagios主机是一样的,所以被监控机上也需要装一套nagios-plugins插件。
例 如:nagios主机需要监控被监控机的硬盘信息,就会对被监控机发出一条命令说:“我要看你的硬盘信息。”被监控机nrpe的daemon接到这个命 令之后,就会运行一个插件,来检查被监控机本地硬盘的信息,然后插件把信息反馈到nrpe,nrpe通过ssl通道再把这些信息反馈到nagios主机。
下面让我们来看看具体来怎么样安装。

1.    需要两个包:nrpe,nagios-plugins,这两个包都可以从www.nagios.org上得到。

2.    需要openssl,openssl的安装过程略

3.    安装:

  a)首先在被监控机上建立nagios工作的用户和组
# groupadd nagios && useradd nagios -g nagios -M –r
b) 安装nagios-plugins插件
# tar zxvf nagios-plugins-1.4.10.tar.gz
# cd ./nagios-plugins-1.4.10
# ./configure --prefix=/usr/local/nagios
# make && make install
c) 更改nagios文件夹所属用户和组
# chown nagios:nagios /usr/local/nagios/
# chown -R nagios:nagios /usr/local/nagios/libexec/
d) 安装nrpe
# tar zxvf nrpe-2.10.tar.gz
# cd ./nrpe-2.10
# ./configure
# make all
# make install-plugin
//安装check_nrpe插件,在被监控机上安装这个插仅仅是为了测试,而这个插件是nagios监控主机需要安装的,这个插件就是向nrpe的daemon发命令的工具。
# make install-daemon
//安装daemon到被测试机,等待接受命令。
# make install-daemon-config
//安装配置文件,所有的daemon所接受到得命令都必须通过这个配置文件才能和插件建立联系。
# make install-xinetd
//把nrpe安装到xinetd脚本内,开机自启动。

4.    更改配置文件

a)      更改xinetd启动脚本配置文件。
# vi /etc/xinetd.d/nrpe


# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666 //服务端口
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 192.168.1.201
//在后面增加监控主机的地址,以空格间隔
}

b)      编辑/etc/services文件,增加NRPE服务
# vi /etc/services
添加:
nrpe 5666/tcp # NRPE

c)       编辑nrpe主配置文件
# vi /usr/local/nagios/etc/nrpe.cfg
把文件里类似的几行改成:
command[check_users]=/usr/local/nagios/libexec/check_users -w 4 -c 6
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 25,20,15
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 10% -c 5% -p / -uGB
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 2 -c 5 -sZ
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 120 -c 150

这样就完成了被监控机上的插件注册。

 

5.    测试

a) 重启xinetd服务
# /etc/init.d/xinetd restart
b) 把xinetd服务改为开机自启动
# chkconfig --level 3 xinetd on
c) 测试nrpe安装是否成功
# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
//如果显示:NRPE v2.10 则代表安装成功。

6.    在nagios监控主机上安装check_nrpe插件

# tar zxvf nrpe-2.10.tar.gz
# cd ./nrpe-2.10
# ./configure
# make all
# make install-plugin


安装结束后,测试
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.111
//如果显示:NRPE v2.10 则代表安装成功。

 

7.    在nagios监控主机注册check_nrpe插件

 #vi /usr/local/nagios/etc/commands.cfg
找个合适的地方添入:
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

8.    在services.cfg里添加服务

 defineservice {
host_name www.asiacom-online.com
//前提是我必须在hosts.cfg里定义过此主机!!!
service_description Check Disk
check_period 24x7
max_check_attempts 3
normal_check_interval 3
retry_check_interval 2
check_period 24x7
contact_groups sagroup
notification_interval 50
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_disk
//!后面跟的参数就是在被监控机器上的nrpe.cfg里command[check_disk]方括号内的内容.
}

要监控别的服务只需要复制粘贴.

9.    重新启动nagios服务

  a)检查
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
b) 重启
# /etc/init.d/nagios restart

1.6.3.6          根据自己的需要添加主机,服务,注册插件

 最艰难的部分完成了,剩下的工作就只是复制粘贴了.我们根据自己的需要,为了管理的方面,还可以把服务分组,编辑/usr/local/nagios/etc/servicegroup.cfg,具体请参考官方说明文档.

注:
一个服务一定属于一台被监控机,一台被监控机一定属于一个机器组.
一个服务或被监控机的check_command

一定要在commands.cfg里注册.

另外可参见 :http://kerry.blog.51cto.com/172631/107831

 

1.7    Cacti和Nagios整合

说整合其实是假的,表面上的,cacti和nagios还是以他们原来的方式工作,ndo负责将nagios收集的数据存放在数据库中,cacti的NPC插件会从数据库中区数据,并且在cacti的npc标签中展现

在整合cacti和nagios之前先要安装一些软件

1.7.1      安装ndoutils

tar –xvf ndoutils-1.4b9.tar.gz

./configure      //没有报错就说明没有什么问题。然后不要make && make install

cd ndoutils-1.4b9/src

cp file2sock log2ndo ndo2db-3xndomod-3x.o /usr/local/nagios/bin/

注意:ndo2db和ndomod后面的数字是表示nagios的板本,考的时候要对应好了。

cd ndoutils-1.4b9/config

cp ndo2db.cfg-sample ndomod.cfg-sample/usr/local/nagios/etc/ndoutils/

注意:nagios下的ndoutils这个目录是我自己建的,便于管理。

配置文件考完后,把它改名为ndo2db.cfg,ndomod.cfg

到此ndoutils安装完成。

 

1.7.2       配置ndoutils

修改一下ndo2db.cfg这个文件。只要修改四个地方。

 

只要修改一下数据库名,数据库用户,数据库存密码,生成的表。

注意:db_name写的是cacti的数据库,也可以写其它的,可是到后面装npc的时候,在cacti里面看到的nagios是Off的。

然后在nagios.cfg里面配置一下ndomod。

 

event_broker_options=-1 //nagios-3.2.3默认是开启的。

broker_module=/usr/local/nagios/bin/ndomod-3x.oconfig_file=/usr/local/nagios/etc/ndoutils/ndomod.cfg

到此ndoutils就安装好了。现在来启动。

/usr/local/nagios/bin/ndo2db-3x -c/usr/local/nagios/etc/ndoutils/ndo2db.cfg

这里注意一下,启动后看一下tail –f /var/log/message看到没有报错,说明配置都是正确的。如果看到报错修改后重启ndo2db-3x,一定

要把/usr/local/nagios/var/下的ndo.sock删除掉然后运行上面的命令,才能重启成功,不然会报它已经启动过了。

1.7.3        安装npc

tar –xvf npc-2.0.4.tar.gz  //解压后把npc目录考到cacti/plugins目录下并给相应的拥有者和权限。

cp –R npc /var/www/html/cacti/plugins

然后就来设置了

首先看一下cacti里面的插件管理有没有开,没有开的开启一下

UserManagement-&gt;admin-&gt;Plugin Management  勾上保存一下就行了。

然后在Plugin Management-&gt;Npc安装一下后,激活就可以用了。

在然后在Settings-&gt;Npc

这样npc就安装和设置好了。到npc下看一下有没有数据。

1.7.4       其他插件安装

其他插件的安装和NPC类似。

请参见:

cacti monitor、settings、thold插件的安装  :

http://lihuipeng007.blog.163.com/blog/static/1210843882011415447882/

配置cacti-plugins-arch以及settings插件、thold报警插件:

http://skyou.blog.51cto.com/2915693/548557

 

1.8    参考资料

l        cacti安装

http://lihuipeng007.blog.163.com/blog/static/1210843882011317115251671/

 

l        Nagios全攻略

http://yahoon.blog.51cto.com/13184/41893

http://viong.blog.51cto.com/844766/288278

http://holy2010.blog.51cto.com/1086044/325434

 

Nagios监控与原理

http://blog.sina.com.cn/s/blog_72e339cd01011s6b.html

http://erdp.iteye.com/blog/1184484

 

明确了在nagios安装过程中监控机和被监控机应该安装的软件或插件

http://hi.baidu.com/fengqixuan/blog/item/d27a23f3d55e1243342acc0c.html

 

Nagios通过ssh监控linux客户端

http://510621028.blog.51cto.com/714732/831640

 

Nagios短信报警

hi.baidu.com/novv/blog/item/72fc983d76282809bba1675d.html

 

Nagios中文文档

http://nagios-cn.sourceforge.net/nagios-cn/profession.html

 

Cacti+Nagios完全攻略(三)spine及最新补丁的安装:

http://viong.blog.51cto.com/844766/477235/

原文有这么一段话:

本来不打算安装spine的,就使用cmd.php来完成数据采集,可是后来发现cmd.php采集存在很大的延迟,执行效率太低了。两厢比较了一下,从添加device好到设备up,spine只需要不到一分钟,而cmd等的时间较长,超过10分钟。
当设备down后 2分钟之内spine可以发出alert,而cmd可能需要10分钟以上。
所以还是要使用spine

 

http://hi.baidu.com/hanyan_007/blog/item/770472f5df00b9c9f2d38594.html

spine是一个基于C语言的,非常快速的轮询引擎。它是默认的cmd.php的可选替代。
如果决定使用它的话,需要自己来显式的安装和配置。cacti本身并不包含该引擎。
安装Spine的最简单的方法就是使用rpm或者使用ports。如果使用yum来进行安装,需要添加rpmforge的软件仓库。

 

被监控机需要安装 nrpe-plugin和nrpe-deamon,nagios-plugin

监控机和被监控机都需安装nagios-plugins

被监控机和监控机

http://kerry.blog.51cto.com/172631/107831

 

l        Cacti 和 Nagios 整合

http://hi.baidu.com/zhang_yunxiao/blog/item/c9d0dbf15d8f5542242df2cc.html

http://blog.sina.com.cn/s/blog_4e424e2101000b5y.html

http://blog.chinaunix.net/uid-20384269-id-3043290.html

 

在整合前需要安装的一些软件

http://huangyu.blog.51cto.com/1021686/699819

 

整合一定要用Cacti创建的数据库

注意最后要修改nagios.cfg

需增加 broker-moduler=/usr/local/nagios/bin… 

参考http://huangyu.blog.51cto.com/1021686/699819

 

        另外安装 Cacti+Nagios+NPC过程可以参考

http://jianfei.dushitao.com/?p=255

这个很重要,可以做重要指导,以便理解yum安装与./configure安装结合时的软件安装方法

 

NPC (nagios forcacti)

            NPC中的nagios总是 off的解决方法

必须保证/usr/local/nagios/bin/ndo2db-3x   -c   /usr/local/nagios/etc/ndo2db.cfg

 

Cannot find mysql header file 的解决方法:

安装mysql-devel

同时保证在 /usr/local/nagios/etc/ndo2db.cfg文件中 broker-moduler=/usr/local/nagios/bin…

参见http://huangyu.blog.51cto.com/1021686/699819

 

NPC页面空白:http://luozhaoyu.iteye.com/blog/1383455

很多都建议安装php-json,但RHEL6.2中的php-common就已经包括了php-json

 

cacti plugins下载地址

http://docs.cacti.net/templates

 

2.  进度报告

2.1    基本监控运行正常

包括

    CPU使用率

    CPU负载

    内存使用率

    磁盘空间使用率

    磁盘I/O

    服务器网络资源使用率

    服务器进程监控

2.2    邮件报警可用

2.3    短信报警正在测试(主要是短信猫,其他不建议使用)

2.4    细粒度的监控需进一步研究   

5分钟以下监控/实时监控报警


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐