nagios监控平台

来源:互联网 发布:linux 监听端口 编辑:程序博客网 时间:2024/05/16 12:04

Nagios监控主机

主机环境:
nagios主机:172.25.64.1
mysql主机:172.25.64.2
远程主机:172.25.64.2

Nagios:

Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
  Nagios原名为NetSaint,由Ethan Galstad开发并维护至今。NAGIOS是一个缩写形式: “Nagios Ain’t Gonna Insist On Sainthood” Sainthood 翻译为圣徒,而”Agios”是”saint”的希腊表示方法。Nagios被开发在Linux下使用,但在Unix下也工作得非常好。

首先我们搭建nagios主机环境:

yum install gcc perl-ExtUtils-Embed httpd -y ##编译所需要的软件包
然后还要下载gd-devel软件包,并且安装

Useradd nagios ##创建运行nagios的用户
Vim /etc/httpd/conf/httpd.conf

242 User nagios ##apache对nagios可以进行操作,要不然web页面会请求失败
243 Group nagios

安装nagios软件

tar jxf nagios-cn-3.2.3.tar.bz2
cd nagios-cn-3.2.3
./configure –enable-embedded-perl
make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf
第一步执行make install安装主要的程序、CGI及HTML文件,第二步执行 make install-commandmode 给外部命令访问nagios配置文件的权限,第三步执行 make install-config 把配置文件的例子复制到nagios的安装目录。按照安装向导的提示,其实这里还有一个 make install-init的步骤,它的作用是把nagios做成一个运行脚本

如果只是安装nagios那么将什么作用也没有,我们需要安装nagios的插件。

安装nagios插件:

首先我们需要安装nagios插件所需要的软件包

yum install mysql-devel openssl-devel -y

tar zxf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure –with-nagios-user=nagios –with-nagios-group=nagios –enable-extra-opts –enable-libtap –
enable-perl-modules
make
make install

vi /usr/local/nagios/etc/nagios.cfg #nagios 配置文件
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg #新建 hosts.cfg 文件,存放主机与主机组定义
cfg_file=/usr/local/nagios/etc/objects/services.cfg #新建 services.cfg 文件,存放服务与服务组定义
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg #注释 localhost.cfg 文件

此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息,根据实验目标配置如下:

vim /usr/local/nagios/etc/objects/hosts.cfg
define host{
use linux-server #引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。
host_name 监控主机 #主机名
alias nagios 服务器 #主机别名
address 127.0.0.1 #被监控的主机地址
icon_image web.gif
statusmap_image web.gd2
2d_coords 100,300
3d_coords 100,300,100
}

define hostgroup{ #主机组并不是必须的,这是配合 nagios 的监控页面的显示

hostgroup_name linux-servers #主机组名称
alias Linux Servers #主机组别名
members * #主机组成员

}

此文件默认也不存在,需要手动创建,services.cfg文件主要用于定义监控的服务和主机资源
vi /usr/local/nagios/etc/objects/services.cfg
define service{
use local-service #引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义
host_name * #指定要监控哪个主机上的服务
service_description PING #对监控服务内容的描述,以供维护人员参考。
check_command check-host-alive #指定检查的命令
}
define service{
Use local-service
host_name 监控主机
service_groups 系统状况检查
service_description 登录用户数
check_command check_local_users!20!50
}
define service{
Use local-service
host_name 监控主机
service_groups 系统状况检查
service_description 根分区
check_command check_local_disk!20%!10%!/
}
define service{
Use local-service
host_name 监控主机
service_groups 系统状况检查
service_description 进程总数
check_command check_local_procs!250!400!RSZDT
}
define service{
Use local-service
host_name 监控主机
service_groups 系统状况检查
service_description 系统负载
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}
define service{
Use local-service
host_name 监控主机
service_groups 系统状况检查
service_description 交换空间利用率
check_command check_local_swap!20!10
}
define servicegroup{
servicegroup_name 系统状况检查
Alias 系统概况
}

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg #校验 nagios 配置文件的正确性

htpasswd -c /usr/local/nagios/etc/htpasswd.users yiyi #nagios 监控页面访问用户和密码
输入密码:

/etc/init.d/nagios start ##启动nagios和httpd服务
/etc/init.d/httpd start

测试:浏览器里面输入url为172.25.64.1:/nagios ##访问的时候需要输入上面添加的用户名和密码

监控mysql主机:

再server2上面安装mysql-server
Yum install mysql-server -y
/etc/init.d/mysqld start ##开启数据库
mysql> create database nagdb; ##创建数据库
Query OK, 1 row affected (0.00 sec)

mysql> grant select on nagdb.* to nagdb@’172.25.64.1’; ##授权
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

在 nagios 主机上检测是否可以连接 mysql 主机上的 mysql 服务
/usr/local/nagios/libexec/check_mysql -H 192.168.0.36 -u nagdb -d nagdb

在 nagios 主机上添加对 mysql 服务监控的定义
vi /usr/local/nagios/etc/objects/hosts.cfg 添加如下行
define host{
use linux-server
host_name mysql主机 #mysql监控主机名
alias mysql服务器 #别名
address 172.25.64.2 #被监控的mysql主机名
icon_image server.gif
statusmap_image server.gd2
2d_coords 500,200
3d_coords 500,200,100
}

vi /usr/local/nagios/etc/objects/services.cfg 添加如下行
define service{ #定义一个监控服务
use local-service
host_name mysql 主机
servce_groups mysql 服务组
service_description mysql 服务
check_command check_mysql #监控命令
}
define servicegroup{
servicegroup_name mysql服务组
alias msql服务器
}

vi /usr/local/nagios/etc/objects/commands.cfg 添加如下行

define command{ #因为没有监控mysql的命令,所以我们需要在命令文件里面定义一下mysql的命令名字和命令具体执行方式
command_name check_mysql
command_line USER1/check_mysql -H HOSTADDRESS -u nagdb -d nagdb
}

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
service nagios reload ##检测无误后重启服务

远程主机设定:172.25.64.2:

Nagios通过nrpe监控远程主机系统状况:

上面已经对远程Linux 主机是否存活做了监控,而判断远程机器是否存活,我们可以使用ping 工具对其监测。还有一些远程主机服务,例如ftp、ssh、http,都是对外开放的服务,即使不用Nagios,我们也可以试的出来,随便找一台机器看能不能访问这些服务就行了。但是对于像磁盘容量,cpu负载这样的“本地信息”,Nagios只能监测自己所在的主机,而对其他的机器则显得有点无能为力。毕竟没得到被控主机的适当权限是不可能得到这些信息的。为了解决这个问题,nagios有这样一个附加组件–“NRPE”,用它就可以完成对Linux 类型主机”本地信息”的监控。

这里写图片描述

nrpe需要安装nagios插件在远程主机上面,所以我们先安装ngios插件:

useradd nagios
tar xzf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure –with-nagios-user=nagios –with-nagios-group=nagios
make
make instal

nrpe作为xinetd下的一个服务运行的。在这样的情况下xinetd就必须要先安装好,
yum install xinetd -y

tar zxf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
make all
make install-plugin #安装check_nrpe插件
make install-daemon #安装daemon
make install-daemon-config #安装配置文件
make install-xinetd #安装xinted脚本

vim /etc/xinetd.d/nrpe 修改如下行
only_from = 172.25.64.1 #nagios 主机 ip 地址

vim /etc/services 添加如下行

nrpe 5666/tcp ##nrpe服务监听端口

vim /usr/local/nagios/etc/nrpe.cfg ##修改如下行

command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p / #根分区监测
/etc/init.d/xinetd start

监控主机设定:172.25.64.1

tar zxf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure –with-nagios-user=nagios –with-nagios-group=nagios
make all
make install-plugin
/usr/local/nagios/libexec/check_nrpe -H 192.168.0.36 #如看到如下输出说明连接正常

NRPE v2.12

因为安装了check_nrpe插件,所以我们需要定义命令:
vim /usr/local/nagios/etc/objects/commands.cfg 添加如下行

define command{
command_name check_nrpe #命令名字
command_line USER1/check_nrpe -H HOSTADDRESS -c ARG1 #具体执行方式
}
vim /usr/local/nagios/etc/objects/services.cfg 添加如下行
define service{ #定义对远程主机的各种监控服务
use generic-service
host_name mysql 主机
service_description CPU Load
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name mysql 主机
service_description Current Users
check_command check_nrpe!check_users

}
define service{
use generic-service
host_name mysql 主机
service_description / Free Space
check_command check_nrpe!check_disk
}
define service{
use generic-service
host_name mysql 主机
service_description Total Processes
check_command check_nrpe!check_total_procs

}
define service{
use gneric-service
host_name mysql 主机
service_description Zombie Processes
check_command check_nrpe!check_zombie_procs

}

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reload #检测无误后重载 nagios

测试:
浏览器里面url输入 172.25.64.1/nagios,然后输入用户和密码进行监控:
这里写图片描述

邮箱报警功能,因为没有网,所以把邮件发到本机:

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/mails"NOTIFICATIONTYPEHostAlert:HOSTNAMEisHOSTSTATE"CONTACTEMAIL$
}

define command{ #服务邮件告警设置
command_name notify-service-by-email
command_line /usr/bin/printf “%b” “ Nagios \n\nNotification Type: NOTIFICATIONTYPE\n\nService:SERVICEDESC\nHost:HOSTALIAS\nAddress:HOSTADDRESS\nState:SERVICESTATE\n\nDate/Time:LONGDATETIME\n\nAdditionalInfo:\n\nSERVICEOUTPUT\n"|/bin/mails"NOTIFICATIONTYPEServiceAlert:HOSTALIAS/SERVICEDESCisSERVICESTATE"CONTACTEMAIL$
}

设置接收邮件的地址:
define contact{
contact_name nagiosadmin ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Nagios Admin ; Full name of user

    email                           nagios@localhost        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******    }

/etc/init.d/postfix start

mail -u nagios

这里写图片描述