共计 5025 个字符,预计需要花费 13 分钟才能阅读完成。
Nagios 的功能是监控服务和主机,但其自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成。启动 Nagios 后,它会周期性的调用插件去检测服务器状态,同时 Nagios 会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios 每次都从队首读取信息,进行处理后,再把状态通过 web 展现出来。
这就是所谓的 被动模式,经常用于监控主机的系统资源,比如系统负载、磁盘使用率、内存使用率、网络状态、系统进程数等等。
另一种是 主动模式,主要是 nagios 服务器主动去获取数据,常用于探测 URL 的监控和服务状态监控。
相比于主动模式中服务器去被监控主机上轮询获取监控数据的方式,这样的最大优势是避免除了数据处理工作以外的其他工作都放在了被监控主机上(包括数据传输),避免了被监控主机量大时,一次轮询时间过长而导致监控反应延迟,这也是被动模式能够承担更大监控量的关键。
Nagios 提供了许多插件,利用这些插件可以方便的监控很多服务状态,安装完成后,在 nagios 目录下的 /libexec 里放 nagios 自带的可以使用的所有插件,如 check_disk 是检查磁盘空间的插件,check_load 是检查 CPU 负载的插件。每一个插件都可通过运行./check_xxx - h 命令来查看其使用方法和功能。
一、部署环境
主机 | 操作系统 | IP 地址 | 主要软件 |
---|---|---|---|
Nagios | CentOS7.3 x86_64 | 192.168.144.112 | Nagios4.0.1、nagios-plugins-1.5、LAMP 环境 |
被监控主机 | centos7.3 x86_64 | 192.168.144.111 |
二、Nagios 服务主机部署
1、首先准备 LAMP 环境
- 由于被动模式数据进过处理后需要通过 web 界面呈现出来,因此在 nagios 服务主机上需要 LAMP 环境支持。
yum install -y \
httpd \
mariadb-server mariadb \
php \
php-MySQL \
php-gd \
libjpeg* \
php-ldap \
php-odbc \
php-pear \
php-xml \
php-xmlrpc \
php-mhash
vim /etc/httpd/conf/httpd.conf
ServerName www.yun.com
...
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
...
DirectoryIndex index.html index.php
- 关闭防火墙和 SELinux,启动服务
systemctl stop firewalld.service
setenforce 0
systemctl start httpd
systemctl start mariadb.service
2、准备 nagios 服务软件相关环境
yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
useradd -s /sbin/nologin nagios
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios
ll -d /usr/local/nagios/ 查看权限
3、解压软件包,执行安装
tar zxvf nagios-4.0.1.tar.gz -C /opt/
cd /opt/nagios-4.0.1/
./configure –prefix=/usr/local/nagios
执行安装程序后,编译各模块的五大步骤
make all // 首先执行全部编译
make install
make install-init // 初始化命令位置
make install-commandmode // 编译安装控制模块
make install-config // 编译生成相关配置文件
chkconfig –add /etc/rc.d/init.d/nagios
chkconfig –level 35 nagios on
chkconfig –list nagios
- 为验证编译是否完整成功,需要检查 /usr/local/nagios/ 下是否存在 etc、bin、sbin、share、var 这五个目录
4、编译安装插件模块
tar xvzf nagios-plugins-1.5.tar.gz -C /opt
cd /opt/nagios-plugins-1.5
./configure –prefix=/usr/local/nagios 安装插件模块,注意放入 nagios 安装目录中
make && make install
5、修改 Apache 配置文件,为 nagios 创建虚拟目录
vim /etc/httpd/conf/httpd.conf
找到:User apache
Group apache
修改为
User nagios
Group nagios
...
为了安全起见,一般情况下要让 nagios 的 web 监控页面必须经过授权才能访问,这需要增加验证配置,即在 httpd.conf 文件最后添加如下信息:#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>
- 设置完访问验证设置后,需要设置验证的账户密码
- 利用 htpasswd 在 /usr/local/nagios/etc/htpasswd 生成 jack 账户并设定密码
htpasswd -c /usr/local/nagios/etc/htpasswd jack
cat /usr/local/nagios/etc/htpasswd
jack:$apr1$DR0SjMa5$trumMzpqj./BA15Iswx2g0
systemctl restart httpd.service
三、配置 nagois 各功能模块配置文件
1.templates.cfi nagios
主要用于监控主机资源以及服务,在 nagios 配置中称为对象,为了不必重复定义一些监控对象,Nagios 引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。contact_groups 联系组属性改成 ts 将在后面的 contacts.cfg 文件中定义
2.resource.cfg 文件
resource.cfg 是 nagios 的变量定义文件 一般无需更改
$USER1$=/usr/local/nagios/libexec
3.commands.cfg 文件
此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可
4. hosts.cfg 文件, 如果创建位置不在 object 下,需要注意属主属组权限,并且主配置文件中告知为绝对路径
此文件默认不存在,需要手动创建,hosts.cfg 主要用来指定被监控的主机地址以及相关属性信息(不能有任何空格)define host{use linux-server# 引用主机 linux-server 的属性信息,linux-server 主机在 templates.cfg 文件中进行了定义。
host_name Nagios-Linux# 主机名
alias Nagios-Linux# 主机别名
address 192.168.144.111# 被监控的主机地址,这个地址可以是 ip,也可以是域名。
}
# 定义一个主机组
define hostgroup{hostgroup_name bsmart-servers# 主机组名称,可以随意指定。
alias bsmart servers# 主机组别名
members Nagios-Linux# 主机组成员,其中“Nagios-Linux”就是上面定义的主机。
}
5.localhost.cfg 文件 用来监控本机 一般无需更改
6.windows.cfg 用来监控 windows 这里无需使用
7.services.cfg 文件 此文件默认也不存在,需要手动创建
主要用于定义监控的服务和主机资源
define service{use local-service# 引用 local-service 服务的属性值,local-service 在 templates.cfg 文件中进行了定义。
host_name Nagios-Linux# 指定要监控哪个主机上的服务,“Nagios-Server”在 hosts.cfg 文件中进行了定义。
service_description check-host-alive# 对监控服务内容的描述,以供维护人员参考。
check_command check-host-alive# 指定检查的命令。
}
8.contacts.cfg 文件 contacts.cfg 是一个定义联系人和联系人组的配置文件(不能有空格)define contact{contact_name jack# 联系人的名称, 这个地方不要有空格
use generic-contact# 引用 generic-contact 的属性信息,其中“generic-contact”在 templates.cfg 文件中进行定义
alias Nagios Admin
email 13951868284@139.com
}
define contactgroup{contactgroup_name ts# 联系人组的名称, 同样不能空格
alias Technical Support# 联系人组描述
members jack# 联系人组成员,其中“jack”就是上面定义的联系人,如果有多个联系人则以逗号相隔
}
9.cgi.cfg 文件 此文件用来控制相关 cgi 脚本
由于 nagios 的 web 监控界面验证用户为 jack,所以只需在 cgi.cfg 文件中添加此用户的执行权限
在最后加入
default_user_name=jack
authorized_for_system_information=nagiosadmin,jack
authorized_for_configuration_information=nagiosadmin,jack
authorized_for_system_commands=jack
authorized_for_all_services=nagiosadmin,jack
authorized_for_all_hosts=nagiosadmin,jack
authorized_for_all_service_commands=nagiosadmin,jack
authorized_for_all_host_commands=nagiosadmin,jack
10. nagios.cfg 文件
将对象配置文件在 Nagios.cfg 文件中进行引用
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg
command_check_interval=10s 该变量用于设置 nagios 对外部命令检测的时间间隔
- 检测配置文件
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 验证配置文件
- web 界面显示
http://192.168.144.112/nagios
: