监控系统(nagios[报警]+cacti[监控]) | zabbix (zabbix-proxy)

1> 监控系统资源(私有资源 cpu|内存|磁盘)

(公共资源 服务 ssh|ftp|httpd)

(网络资源 交换机|路由器)

2> 报警(商业短信|邮件|微信API)

本章目录:

1、Nagios的概述

2、Nagios的部署

3、讲解Nagios配置文件之间的关系(重点)

4、配置Nagios监控本机的私有服务和公共服务

5、使用NRPE配置Nagios监控远程主机的私有服务和公共服务

6、为Nagios增加短信报警功能

1、Nagios的概述

Nagios是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息。

Nagios最初被设计为在Linux系统之上运行,然而它同样可以在类Unix的系统之上运行。

Nagios更进一步的特征包括:

监控网络服务(SMTP、POP3、HTTP、NNTP、PING等); --公共服务

监控主机资源(处理器负荷、磁盘利用率等); --私有服务

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

并行服务检查机制;

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

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

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

nagios的组成:

1、nagios的核心组件

2、nagios监控插件

3、nagios web页面(html/cgi/php)

4、nrpe远程主机私有服务的监控组件

---------------------------------------------------------------------

nagios部署

参看官方安装手册

ftp://192.168.0.254/notes/weekend/project/software/nagios/docs_INSTALL/toc.html

1) 下载软件

[root@nagios ~]# lftp 192.168.0.254

lftp 192.168.0.254:~> cd notes/weekend/project/software/

lftp 192.168.0.254:/notes/weekend/project/software> mirror nagios/

lftp 192.168.0.254:/notes/weekend/project/software> exit

2) 软件依赖包

Apache

PHP

GCC compiler

GD development libraries

[root@nagios ~]# yum install httpd php

[root@nagios ~]# yum install gcc glibc glibc-common

[root@nagios ~]# yum install gd

--iso 没有gd-devle包

[root@nagios ~]# yum -y localinstall /root/nagios/gd-devel-2.0.35-10.el6.x86_64.rpm

3) 新建用户与组

[root@nagios ~]# /usr/sbin/useradd -m nagios

[root@nagios ~]# echo 123 | passwd --stdin nagios

[root@nagios ~]# /usr/sbin/groupadd nagcmd

[root@nagios ~]# /usr/sbin/usermod -a -G nagcmd nagios

[root@nagios ~]# /usr/sbin/usermod -a -G nagcmd apache

4) 解压与编译nagios核心软件

(1) 解压

[root@nagios ~]# tar xf /root/nagios/nagios-cn-3.2.0.tar.bz2 -C/usr/local/src/

(2) 编译

[root@nagios ~]# cd /usr/local/src/nagios-cn-3.2.0/

[root@nagios nagios-cn-3.2.0]# ./configure --with-command-group=nagcmd

[root@nagios nagios-cn-3.2.0]# make all

make install --安装软件

make install-init --安装启动脚本

make install-config --安装配置文件

make install-commandmode --安装命令模式

(3)安装与配置

[root@nagios nagios-cn-3.2.0]# make install

[root@nagios nagios-cn-3.2.0]# make install-init

[root@nagios nagios-cn-3.2.0]# make install-config

[root@nagios nagios-cn-3.2.0]# make install-commandmode

(4) 定义web配置文件

[root@nagios nagios-cn-3.2.0]# make install-webconf

/usr/bin/install -c -m 644 sample-config/httpd.conf/etc/httpd/conf.d/nagios.conf

--设置登录密码 帐号nagiosadmin密码123

[root@nagios nagios-cn-3.2.0]# htpasswd -c/usr/local/nagios/etc/htpasswd.users nagiosadmin

New password:

Re-type new password:

Adding password for user nagiosadmin

[root@nagios nagios-cn-3.2.0]# service httpd restart

5) 安装nagios的插件

(1) 解压

[root@nagios ~]# tar xf /root/nagios/nagios-plugins-1.4.14.tar.gz -C/usr/local/src/

(2) 编译

[root@nagios ~]# cd /usr/local/src/nagios-plugins-1.4.14/

[root@nagios nagios-plugins-1.4.14]# ./configure --with-nagios-user=nagios--with-nagios-group=nagios

[root@nagios nagios-plugins-1.4.14]# make && make install

6) 启动nagios

--定义启动脚本

[root@nagios ~]# chkconfig --add nagios

[root@nagios ~]# chkconfig nagios on

--检测配置文件语法

[root@nagios ~]# /usr/local/nagios/bin/nagios -v/usr/local/nagios/etc/nagios.cfg |grepTotal

Total Warnings: 0

Total Errors: 0

--启动

[root@nagios ~]# service nagios start

--关闭selinux

[root@nagios ~]# getenforce

Permissive

7) 访问nagios

http://localhost/nagios

+++++++++++++++++讲解Nagios配置文件之间的关系(重点)+++++++++++++

监控一台主机包括的内容:主机是否活着/公共服务/私有服务

配置文件的组成: --全局变量(变量的调用使用use命令)

/usr/local/nagios/etc/nagios.cfg--主配置文件,实现配置文件总调度

/usr/local/nagios/etc/resource.cfg--资源

/usr/local/nagios/etc/objects/commands.cfg--监控使用的命令(通知的命令|监控私有服务的命令|监控公共服务的命令)

/usr/local/nagios/etc/objects/contacts.cfg --联系人(nagiosadmin-->nagios@localhost)

/usr/local/nagios/etc/objects/timeperiods.cfg --监控周期(7x24 5x8(1-5))

/usr/local/nagios/etc/objects/templates.cfg --模板(通知|genric-host| linux-server| local-server)

**********监控命令 commands.cfg***************24个命令模板

# 'notify-host-by-email' command definition ---使用邮件通知主机(私有服务)

define command{

command_name notify-host-by-email

command_line /usr/bin/printf "%b" "*****Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState:$HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time:$LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert:$HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$

}

邮件内容(通知宏|主机宏|日期/时间宏|...)

***** Nagios *****

Notification Type: $NOTIFICATIONTYPE$ (PROBLEM)

Host: $HOSTNAME$ (nagios.uplooking.com)

State: $HOSTSTATE$ (宕机)

Address: $HOSTADDRESS$ (192.168.0.1)

Info: $HOSTOUTPUT$ (TTP WARNING: HTTP/1.1 403 Forbidden)

Date/Time: $LONGDATETIME$ (Tue Apr26 15:22:03 CST 2016)

邮件主题

/bin/mail -s "** PROBLEM Host Alert: nagios.uplooking.com is 宕机"

# 'notify-service-by-email' command definition ---使用邮件通知服务 (公共服务)

# 'check-host-alive' command definition--检测主机是否存活

# 'check_local_disk' command definition--磁盘使用率

# 'check_local_load' command definition--cpu负载

# 'check_local_users' command definition--用户登录数

# 'check_local_swap' command definition--swap分区

....

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

**********联系人 contacts.cfg*************** 1个联系人 1个联系组

define contact {

contact_name HugoBoss ---联系人的名称

usegeneric-contact --使用那个模板

alias 康康 --别名

email hugoboss@hugo.cc --邮件地址

}

define contactgroup{

contactgroup_name admins

alias Nagios Administrators

members nagiosadmin, HugoBoss --组的成员

}

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

****************监控周期 timeperiods.cfg********************************* 5个模板

[root@nagios ~]# grep timeperiod_name/usr/local/nagios/etc/objects/timeperiods.cfg

timeperiod_name 24x7 --全年

timeperiod_name workhours ---工作日

timeperiod_name none ---全年不通知

timeperiod_nameus-holidays ---美国节假日

timeperiod_name24x7_sans_holidays --除了美国节假日以外的全年

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

****************监控模板 templates.cfg********************************* 8个模板

# CONTACT TEMPLATES --联系人模板

define contact{

namegeneric-contact --模板名称

service_notification_period24x7 ---服务的通知周期

host_notification_period 24x7---主机的通知周期

service_notification_optionsw,u,c,r,f,s --通知服务的类型

host_notification_optionsd,u,r,f,s --通知主机的类型

service_notification_commandsnotify-service-by-email ---通知服务的邮件方式

host_notification_commands notify-host-by-email ---通知主机的邮件方式

register 0 ---只是一个模板 不能当成监控对象使用

}

# HOST TEMPLATES --主机模板

define host{

name generic-host

define host{

name linux-server 模板名称

use generic-host 调用那个模板

check_period 24x7 监控周期

check_interval 5 检测时间 5分钟

retry_interval 1 失败重试 1分钟

max_check_attempts 10 最大尝试次数 10次

check_command check-host-alive 检测主机命令

notification_period workhours 通知周期

notification_interval 120 通知间隔 120分钟

notification_options d,u,r 通知类型 d:宕机 u:主机不能到达 r:恢复

contact_groups admins 通知组

register 0

}

name windows-server

name generic-printer

name generic-switch

# SERVICE TEMPLATES

define service{

name generic-service

define service{

name local-service

use generic-service

[root@nagios ~]# grep name /usr/local/nagios/etc/objects/templates.cfg

namegeneric-contact ; The name of this contact template

name generic-host ; The name of this host template

name linux-server ;The name of this host template

name windows-server ;The name of this host template

name generic-printer ;The name of this host template

name generic-switch ;The name of this host template

name generic-service ; The 'name' of this service template

name local-service ;The name of this service template