监控对象
       网络服务监控:主机存活检查,ftp,web等常见服务,数据库服务监控...
       主机资源监控:系统负载,当前ip链接数,磁盘空间使用情况,当前进程数..
  监控主要目的
       监控对象发生故障或资源紧张时及时通知相关人员,以便问题得到迅速处理
  监控效果的展现
        web方式:通过浏览器观看被监控对象;
           # 颜色代表严重级别如下所示
             绿色        OK         正常
             ×××        WARNING    警告
             红色       CRITICAL   严重
             深×××     UNKOWN     未知错误
       邮件通知:达到设定重试次数和探测间隔时间后发送邮件,说明问题的大致情况
       手机短信:较为及时重要的功能
       上班时间开着浏览器看页面,打开邮件程序查看,手机24小时开机.
 
详解配置文件
 
配置文件概括总结其作用
        nagios.cfg : 主配置文件,nagios进程和CGIs读取定义和控制nagios行为,需要修改
           cgi.cfg : cgi配置文件,浏览器执行诸如重启nagios服务等,需要修改
      resource.cfg : 宏定义文件,定义插件路径,不需要修改
      commands.cfg : 命令定义文件,定义怎么发送短信,邮件等,需要修改
      contactgroups.cfg,contacts.cfg,hostgroups.cfg,hosts.cfg,services.cfg
                   :监控对象配置文件,如主机配置文件,联系人配置文件等
                     主配置文件包含,并需手动创建
    
配置文件详细其参数作用
————nagios.cfg
    # 主配置文件,主要管理其他所有跟nagios有关的文件.
    # 它定义了nagios的日志文件,缓冲文件,状态信息存放文件...
 
——nagios主要参数及含义
log_file=/var/spool/nagios/nagios.log
                      # 日志文件
#cfg_file=/usr/local/etc/nagios/objects/localhost.cfg
                       # 此处常注释,为方便维护,配置目标单独放
cfg_file=/usr/local/etc/nagios/objects/cgi.cfg
cfg_file=/usr/local/etc/nagios/objects/resource.cfg
cfg_file=/usr/local/etc/nagios/objects/commands.cfg
cfg_file=/usr/local/etc/nagios/objects/hosts.cfg
cfg_file=/usr/local/etc/nagios/objects/hostgroups.cfg
cfg_file=/usr/local/etc/nagios/objects/services.cfg
cfg_file=/usr/local/etc/nagios/objects/servicegroups.cfg                 
cfg_file=/usr/local/etc/nagios/objects/contacts.cfg
cfg_file=/usr/local/etc/nagios/objects/contactgroups.cfg
cfg_file=/usr/local/etc/nagios/objects/timeperiods.cfg
cfg_file=/usr/local/etc/nagios/objects/templates.cfg
                      # 配置文件模板
cfg_file=/usr/local/etc/nagios/objects/windows.cfg
cfg_file=/usr/local/etc/nagios/objects/switch.cfg
cfg_file=/usr/local/etc/nagios/objects/printer.cfg
check_extermal_commands=1
                      # web界面下重启nagios,停止主机/服务检查等操作,默认值为0
command_check_interval=10s
                      # 命令检查时间间隔.默认值是1秒

 
 
————cgi.cfg
                      # 只修改管理用户
authorized_for_system_information=nagiosadmin
                      # 开始头为authorized_for_的都要改为nagiosadmin
 
 
————resource.cfg
 
————hosts.cfg
    define host {
          host_name   # 定义主机名字,在hostgroups.cfg和services.cfg里关联.
                      # 一个主机能定义多个服务
                      # 当使用时,宏$HOSTNAME$里存放这一项的值
          alias        # 定义一个方便理解的一个主机名字或描述
                      # 当使用时,宏$HOSTALIAS$里存放这一项的值
          address     # 定义主机地址,一般是IP
                      # 当使用时,宏$HOSTADDRESS$里存放这一值
          max_check_attempt(尝试)
                       # 定义了检测结果返回不是OK时,nagios重试检测的次数
                      # 设置值为1,不重试检测直接报警
          check_period(期)
                      # 用time_period项的名字,定义在哪段时间内对主机主动检测
                       # time_period是定义在别的文件里的配置项,在这里用名字引用它
          contact_groups(联系组)
                      # 定义联系组列表,用联系组的名字引用它们.多个组用","隔开
          notification_interval(通知_间隔)
                      # 定义当一个服务仍然down或unreachable
                      # 间隔多久重发一次通知给联系组
          notification_period(通知时间段)
                       # 定义什么时间段内给联系组发通知
                      # 可以用time_period定义的名字引用它
          notification_options(通知时机)
                      # 定义发送通知的选项.选项有:
                        d=当有down状态时发送通知
                        u=当有unreachable状态时发送通知
                        r=当有服务recoveries时发送通知
                        f=当主机启动或停机时发送通知
                        n=永远不发送通知
               }
 
————hostgroups.cfg
   define hostgroup {
          hostgroup_name   
                      # 主机组名称,通常定义得较短
          alias        # 主机组别名,通常定义得较长,方便理解
          members      # 主机组成员
                    }
 
————services.cfg
   define service {
          host_name   # 主机名称
          service_description
                       # 服务描述
          check_command
                      # 执行命令
           max_check_attempts
                      # 失败时尝试检测最大次数,值为1时只报警不重新检测
          normal_check_interval
                      # 常规检测间隔时间,默认60分钟          
                       # 常规指无论服务状态是否正常,检测次数达到"最大次数"时
          retry_check_interval
                      # 失败尝试间隔时间,默认为60分钟
                      # 失败尝试指服务状态不正常,检查次数达到"最大次数"时
           check_period
                      # 检测时间段
          notification_interval
                      # 当服务状态不正常时通知,值为0时不通知联系人
          notification_period
                      # 通知联系人时间段
          notification_options
                      # 通知联系人选项:
                       # w警告,u未知,c危机,f启动和停止,n不发送通知
          nitification_groups
                      # 联系人组
                 }
 
————servicegroups.cfg
   define servicegroup {
          servicegroup_name
                      # 服务组名称,通常定义得较短
           alias        # 服务组别名,通常定义得较长
          members      # 服务组成员
                       }
 
————contacts.cfg
   define contact {
          contact_name
                      # 定义联系人的简称,他与contactgroup关联
                      # 使用时,宏定义$CONTACTNAME$存放这个值
          alias       # 联系人的具体描述
                      # 使用时,宏定义$CONTACTALIAS$存放这个值
           host_notification_period
                       # 定义通知简称联系人关于主机的问题或恢复正常状态的时间段
                      # 可以理解为主机的在线时间
          service_notification_period
                      # 通知简称联系人关于服务的问题或恢复正常的时间段
          host_notification_options
                       # 定义主机在什么状态下给联系人发通知.参数描述如下:
                        d=主机是down,发通知
                        f=主机stop时,发通知
                        r=主机恢复up时,发通知
                        n=啥状态都不发通知
           service_notification_options
                      # 定义服务在什么状态时给联系人发通知
                        w=警告状态时,发通知
                        u=unknown状态时,发通知
                        f=启动和停止时,发通知
                        c=critival(关键,紧要)状态时,发通知
                        n=什么状态下都不发通知
          host_notification_commands (短信,邮箱)
                      # 定义一个通知联系人主机问题或恢复正常的联系方式的列表
                      # 多个列表用","隔开
          service_notification_commands (短信,邮箱)
                      # 定义一个通知联系人服务问题或恢复正常的联系方式的列表
                      # 多个列表用","隔开
          email        # 定义联系人的email地址.
                      # 取决于你是如何定义notification commands,给联系人发紧急邮件
                       # 使用时,宏$CONTACTEMAIL$存放这个值
                         }
 
————contactgroup.cfg
    define contactgroup {
          contactgroup_name
                      # 联系组名称,通常定义得较短
           alias       # 联系人别名,通常定义得较长
          members     # 联系组成员
                        }
 
————timeperiods.cfg
    define timeperiod {
          timeperiod_name
                      # 时间名称,通常定义得较短
          alias        # 时间段别名,通常定义的较长
          sunday      # 星期日时间段
          monday      # 星期一时间段
           tuesday     # 星期二时间段
          wednesday   # 星期三时间段
          thursday    # 星期四时间段
          friday       # 星期五时间段
          saturday    # 星期六时间段
                      }
 
————commands.cfg
    define command {
           command_name
                      # 定义命令的简称
          command_line
                      # 定义当服务进行时nagios要执行的动作
                      # 在命令执行前,所有合法的宏都被他们的值代替
                   }
 
需要注意:
石头大哥([url]http://www.itnms.net/discuz/[/url])的翻译如下:
简单说一下,大概的内容,不是严格翻译。
    1. 确认check_nrpe 和 nrpe daemon的版本一定要一致。
    2. 确认 check_nrpe和nrpe deamon端同时启用或者禁用ssl支持。
    3. 确认nrep.cfg可以被nrpe(或者nagios,反正是执行nrep或者xinetd/inetd程序的)用户正常读取。
    4. 有关伪随机设备的问题。这个只会在solaris 8上出现,需要一个补丁Sun patch 112438。
    5. 确定nagios主机在xinetd的 only_from中,如果没有使用xinetd,则要确认nrpe.cfg中的配置。
   6. 检查一下你的Windows或者Linux自带的防火墙,是否把端口给filter掉了。
   7. 把nrpe的的log打开,可以发现更多有用的信息。
 
(Nagios飞信linux系统免费短信报警配置)

CACTI网络流量监控
1.什么是cacti和rrdtool
    Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。是通过 snmpget来获取数据,使用 RRDtool绘画图形它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。界面友好。
   Rrdtool是用来存储和处理通过SNMP收集到的数据的工具。