BaronCn 2018-10-11
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 |
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
systemctl stop firewalld.service
setenforce 0
systemctl start httpd
systemctl start mariadb.service
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/ 查看权限
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
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
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 -c /usr/local/nagios/etc/htpasswd jack
cat /usr/local/nagios/etc/htpasswd
jack:$apr1$DR0SjMa5$trumMzpqj./BA15Iswx2g0
systemctl restart httpd.service
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 [email protected] } 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 验证配置文件