Nagios
Linux监控
学习使用3款主流的软件搭建监控服务器
一 、监控概述
1 什么是监控? 监视并控制
2 监控目的? 问题没有出现或出现后第一时间处理(性能调整、系统瓶颈)
3 监控谁? 服务器(网站 数据库 邮件 文件 存储 缓存)
监控的资源 类别:吞吐量、反应时间、使用率
公开数据:web、FTP、ssh、tcp/udp端口
私有数据:cpu、内存、存储、网卡流量、用户、进程
4手动监控
4.1进程监控 ps aux | grep httpd 、 top
4.2存储监控 df -h \ free -m \ swapon -s
硬件使用率 (用了多少 还剩多少):cpu 内存 存储
4.3网络监控
网络流量 (进出数据流的百分比) ifconfig \ traceroute \ netstat
网络接口的状态 (up down) ping
4.4系统性能监控
uptime cpu 负载 ; mpstat 查看cpu状态; vmstat 查看内存或磁盘状态;
iostat 查看硬盘状态;netstat 查看网络状态 ;sar 查看以上4类信息
应用服务的运行状态(运行 停止):netstat -antpu ;systemctl status
nmap做扫描
操作系统运行情况(进程数(运行 休眠 僵尸) 登录的用户数 系统总用户数)
ps aux | wc -l
users
wc -l /etc/passwd
5 如何实现?
使用系统自带的命令 或安装第3方软件提供的命令
计划任务 + 自定义监控脚本
搭建监控服务器做监控(主流监控软件:Nagios Cacti Zabbix)
二、 Nagios 自动监控系统
1. Nagios简介
是一款用来监视系统和网络的开源应用软件
--利用其众多的插件实现对本机和远端服务的监控;当被监控对象异常时,会及时向管理员告警;提供一批预先设好的监控插件,用户可以直接调用;也可以自定义shell脚本来监控服务,适合各类企业的业务监控;可通过web页面显示对象状态、日志、告警信息
2. Cacti简介
一套基于LAMP展现的网络流量检测及分析工具
数据采集:基于SNMP技术或自定义脚本从目标设备/主机获取监控指标信息
数据存储:调用模版将数据存到数据库,通过RPDTool绘制结果图形
数据展现:通过web方式将监控结果呈现出来
3. Nagios与Cacti的区别
Cacti:在监控方面绘图比较不错,在流量与图形展现方面存在优势
Nagios:侧重于监控应用状态、故障分析、报警机制(邮箱、短信等)相对来说比Cacti灵活
4. 配置发送报警信息的方式:mail、短信、微信...
部署监控服务器的配置步骤:
1部署服务运行环境
2安装包
3修改配置文件
4启动服务
5监控配置
监控插件的使用
5.1 监控本机
5.2 监控远端主机
监控公有数据
监控私有数据
5.3 监控报警
6 访问监控服务器查看监控信息(登录监控页面查看监控信息)
+++++++++++++++++++++++++++++++
要求:在主机x.x.4.5部署Nagios监控服务
1部署服务运行环境
#yum -y install httpd php elinks gcc*
# systemctl start httpd ;systemctl enable httpd
#echo "hello world" > /var/www/html/index.html
#elinks --dump http://localhost
# vim /var/www/html/test.php
<?php
phpinfo();
?>
#firefox http://192.168.4.5/test.php
2安装包
2.1 安装提供服务的包
#groupadd nagcmd
#useradd -G nagcmd nagios
#tar xvf nagios-4.2.4.tar.gz
# ./configure --help
# ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd --with-command-user=nagios --with-command-group=nagcmd
#make all //编译主程序和cgi文件
#make install //装主程序和cgi文件
#make install-init //装启动脚本
#make install-commandmode //装改配置文件的访问权限
#make install-config //装例子文件
#make install-webconf //访问web接口程序的配置文件
#make install-exfoliation //web页面程序类型为exfoliation
# ls /usr/local/nagios/
bin 可执行命令、etc 配置文件、libexec 监控插件、sbin cgi文件(web页面上对应的超连接)、share 网页文件、var 日志文件状态信息文件
2.2 安装监控插件
#tar -xvf nagios-plugins-2.1.4.tar.gz
#cd nagios-plugins-2.1.4/
#./configure && make && make install
#ls /usr/local/nagios/libexec/check_*
3 根据配置文件设置登录监控页面的用户和密码
# tail /etc/httpd/conf.d/nagios.conf
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
#cat /usr/local/nagios/etc/htpasswd.users
# grep "nagiosadmin" /usr/local/nagios/etc/cgi.cfg
4 启动nagios监控服务( *默认监控本机 )
#systemctl restart httpd
# /etc/init.d/nagios start|stop
5 在客户端 访问监控页面查看监控信息
firefox http://192.168.4.5/nagios
默认就监控本机,监控对象?
cpu负载check_load 系统登录用户数量check_users
网站服务器运行状态check_http ping check_ping 根分区使用量check_disk
ssh服务运行状态check_ssh 交换分区使用量check_swap
系统总进程数量check_procs
6 nagios服务监控过程?
服务运行时,加载配置文件,在配置文件中自动调用监控插件,根据插件的阀值返回监控状态信息。调用插件时,可以定义警告值、阀值和错误值,把监控到的数据和设置的警告值与错误值比较,按照如下规律显示监控状态:
监控到的数据 < 警告值 OK
监控到的数据 > 警告值且 < 错误值 warning
找不到调用的监控插件,配置项错误 unkown
监控到的数据 > 错误值 critical
正在获取数据 pending
监控插件的使用 cd /usr/local/nagios/libexec/check_load
查看插件的帮助信息
# cd /usr/local/nagios/libexec
# ./check_users -h
# /usr/local/nagios/libexec/check_load -h
65 ./check_users -w 1 -c 3
66 ./check_users -w 5 -c 10
70 ./check_procs -w 100 -c 101
71 ./check_procs -w 10 -c 15 -s Z 僵尸进程
72 ./check_procs -w 10 -c 15 -s R 正在运行进程 S睡眠
78 df -h
76 ./check_disk -w 50% -c 25% -p /dev/vda1 //监控磁盘空闲
77 dd if=/dev/zero of=/boot/test.txt bs=1M count=230
79 ./check_disk -w 50% -c 25% -p /dev/vda1
80 ./check_disk -w 50% -c 25% -p /
96 ./check_http -H 192.168.4.56 -p 8080
97 ./check_http -H 192.168.4.56
91 ./check_ssh -H 192.168.4.56 -p 2212 //默认22端口
108 ./check_tcp -H 127.0.0.1 -p 21
109 ./check_tcp -H 192.168.4.56 -p 21
110 ./check_tcp -H 192.168.4.56 -p 22
./check_ping -H 192.168.4.254 -w 10.0,30% -c 20.0,40% -p 2 -t 5 //10毫秒内丢包率达到30%,拼2次,超时时间5秒,默认拼5次,超时时间20秒
7 配置文件/usr/local/nagios/etc/ :
nagios.cfg 主配置文件
resource.cfg 宏定义文件(设置nagios服务使用的变量)
cgi.cfg 设置cgi访问权限
etc/objects/:
commands.cfg 定义监控命令的文件
contacts.cfg 指定接收监控报警消息邮箱地址
timeperiods.cfg 定义监控时间模版配置文件
templates.cfg 定义监控模版配置文件
localhost.cfg 监控本机配置文件
windows.cfg windows操作系统
switch.cfg 交换机
printer.cfg 打印机
5.1 监控本机
步骤:定义监控命令-->在监控主机的配置里调用监控命令-->验证配置是否正确-->重起服务-->登录管理页面查看监控信息-->若有警告或错误状态的监控项时,查看是否收到报警邮件
cd /usr/local/nagios/etc/objects
# vim commands.cfg 语法格式:
define command{
command_name check_local_procs //命令名
command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$ 93 } //插件
/usr/local/nagios/libexec/check_procs -w 100 -c 110 -s Z
check_local_procs $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s ARG3$
check_local_procs!90!100!R //!间隔符
check_local_procs!10!11!Z
check_local_disk!20%!15%!/boot
check_local_disk!25%!10%!/
# vim localhost.cfg //监控主机配置文件的语法格式
define host { # 定义监控主机
use linux-server 监控模版
host_name localhost 主机名 //主机状态在不在线host status
address 127.0.0.1 ip地址
}
define service{ #定义监控资源/对象
use local-service 监控模版
host_name localhost 主机名
service_description Total Processes 描述信息
check_command check_local_procs!250!400!RSZDT 使用的监控命令
}
1 监控本机引导分区的使用情况,当空闲空间小于20%时是报警状态 当空闲空间小于10%时是报错状态
define command { command_name check_local_boot
command_line $USER1$/check_disk -w 20% -c 10% -p /boot
#check_local_boot
#commond_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
#check_local_boot!20%!10%!/ }
define service{ use local-service
host_name localhost
service_description boot
check_command check_local_boot }
2 监控本机ftp服务的运行状态
define command { command_name check_local_ftp
command_line /usr/local/nagios/libexec/check_ftp -H localhost }
define service{ use local-service
host_name localhost
service_description ftp
check_command check_local_ftp }
3监控本机正在运行进程的数量
define command { command_name check_local_rproce
command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s R }
define service{
use local-service
host_name localhost
service_description running_process
check_command check_local_rpoce!50!51!R }
4 监控登录本机系统用户数量时,登录用户数大于1时是报警状态 大于2时是报错状态
# vim localhost.cfg
define service{ use local-service
host_name localhost
service_description Current Users
check_command check_local_users!1!2 }
5 不监控本机交换分区 ( :124,129s/^/#/ )
# vim localhost.cfg
#define service{
# use local-service
# host_name localhost
# service_description Swap Usage
# check_command check_local_swap!20!10
# }
检查加载文件语法错误
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
#alias plj='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'
#plj
启用监控
#/etc/init.d/nagios stop
# /etc/init.d/nagios start
5.2 监控远端主机
5.2.1 监控公有数据 (监控时通过连接端口就可以获取到信息)
要求:监控远端主机192.168.4.56 httpd服务和FTP服务的运行状态
#cd /usr/local/nagios/etc/
#vim nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/host12.cfg
#cd objects/
# grep -v "#" localhost.cfg > host12.cfg
#vim host12.cfg
define host{ use linux-server
host_name host12
address 192.168.4.56 }
define service{ use local-service
host_name host12
service_description httpd
check_command check_12_httpd }
define service{ use local-service
host_name host12
service_description ftp
check_command check_12_ftp }
# vim commands.cfg
define command { command_name check_12_ftp
command_line $USER1$/check_tcp -H 192.168.4.56 -p 21 }
define command { command_name check_12_httpd
command_line $USER1$/check_tcp -H 192.168.4.56 -p 80 }
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
#/etc/init.d/nagios stop
#/etc/init.d/nagios start
5.2.2 监控私有数据(进程数量 用户数 磁盘 cpu 内存)
要求:监控远端主机192.168.4.101 引导分区的使用情况:空闲空间小于30% 报警 空闲空间小于15% 报错 。
5.2.2.1 被监控的配置4.56
a 安装监控插件
#rpm -q gcc gcc_c++
#tar -zxvf nagios-plugins-2.1.4.tar.gz
#cd nagios-plugins-2.1.4/
#./configure
#make
#make install
#ls /usr/local/nagios/libexec/check_*
#/usr/local/nagios/libexec/check_procs -w 100 -c 110 -s [R\S\Z\]
#/usr/local/nagios/libexec/check_users -w 1 -c 2
#/usr/local/nagios/libexec/check_disk -w 30% -c 15% -p /boot
b 运行nrpe服务
1 装包
#useradd nagios
#rpm -q openssl openssl-devel
#yum -y install openssl-devel
#tar -zxvf nrpe-3.0.1.tar.gz
#cd nrpe-3.0.1/
#./configure //端口号5666
#make all //配置说明文件(NRPE.pdf)
#make install && make install-daemon && make install-config && make install-init
#ls /usr/local/nagios/bin/nrpe
#ls /usr/local/nagios/etc/nrpe.cfg
#ls /usr/local/nagios/libexec/check_nrpe
#ls /usr/lib/systemd/system/nrpe.service
2 修改配置 nrpe.cfg
# vim /usr/local/nagios/etc/nrpe.cfg
98行 allowed_hosts=127.0.0.1, 192.168.4.5
288行 command[nrpe_10_users]=/usr/local/nagios/libexec/check_users -w 1 -c 3
command[nrpe_10_disk_boot]=
/usr/local/nagios/libexec/check_disk -w 40% -c 30% -p /boot
command[nrpe_10_disk_root]=
/usr/local/nagios/libexec/check_disk -w 30% -c 20% -p /root
command[nrpe_10_procs_r]=
/usr/local/nagios/libexec/check_procs -w 50 -c 51 -s R
command[nrpe_10_procs_s]=
/usr/local/nagios/libexec/check_procs -w 100 -c 110 -s S
command[nrpe_10_procs_z]=/usr/local/nagios/libexec/check_procs -w 2 -c 3 -s Z
3启动nrpe服务
#systemctl start nrpe ; systemctl enable nrpe
#netstat -utnalp | grep :5666
4连接本机的nrpe服务测试配置
# cd /usr/local/nagios/libexec/
#./check_nrpe -h
#./check_nrpe -H 127.0.0.1 -p 5666 -c nrpe_10_disk_boot
# ./check_nrpe -H 127.0.0.1 -p 5666 -c nrpe_10_disk_root
# ./check_nrpe -H 127.0.0.1 -p 5666 -c nrpe_10_procs_z
# ./check_nrpe -H 127.0.0.1 -p 5666 -c nrpe_10_procs_r
# ./check_nrpe -H 127.0.0.1 -p 5666 -c nrpe_10_procs_s
# ./check_nrpe -H 127.0.0.1 -p 5666 -c nrpe_10_users
5.2.2.2 监控服务器的配置4.5
a 安装提供check_nrpe插件的软件包
#rpm -q openssl openssl-devel
#yum -y install openssl-devel
#tar -zxvf nrpe-3.0.1.tar.gz
#cd nrpe-3.0.1/
#./configure
#make all && make install && make install-plugin
# ls /usr/local/nagios/libexec/check_nrpe
b 使用插件check_nrpe连接被监控主机
#/usr/local/nagios/libexec/check_nrpe -H 192.168.4.56 -p 5666 -c nrpe_check_users
c 定义监控命令
# vim commands.cfg
define command{ command_name check_10_users
command_line $USER1$/check_nrpe -H 192.168.4.56 -p 5666 -c nrpe_10_users }
define command{ command_name check_10_disk_boot
command_line $USER1$/check_nrpe -H 192.168.4.56 -p 5666 -c nrpe_10_disk_boot }
define command{ command_name check_10_disk_root
command_line $USER1$/check_nrpe -H 192.168.4.56 -p 5666 -c nrpe_10_disk_root }
define command{ command_name check_10_procs_z
command_line $USER1$/check_nrpe -H 192.168.4.56 -p 5666 -c nrpe_10_procs_z }
define command{ command_name check_10_procs_r
command_line $USER1$/check_nrpe -H 192.168.4.56 -p 5666 -c nrpe_10_procs_r }
define command{ command_name check_10_procs_s
command_line $USER1$/check_nrpe -H 192.168.4.56 -p 5666 -c nrpe_10_procs_s }
d 在监控远端主机12配置文件里调用定义的监控命令
#vim nagios.cfg cfg_file=/usr/local/nagios/etc/objects/host56.cfg
#vim host56.cfg
define host{ use linux-server
host_name remote-server
address 192.168.4.56 }
define service{ use local-service
host_name remote-server
service_description users
check_command check_10_users }
define service{ use local-service
host_name remote-server
service_description boot
check_command check_10_disk_boot }
define service{ use local-service
host_name remote-server
service_description root
check_command check_10_disk_root }
define service{ use local-service
host_name remote-server
service_description running-process
check_command check_10_procs_r }
define service{ use local-service
host_name remote-server
service_description sleeping-process
check_command check_10_procs_s }
define service{ use local-service
host_name remote-server
service_description js-process
check_command check_10_procs_z }
e 启动nagios服务
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
#/etc/init.d/nagios stop
#/etc/init.d/nagios start
192.168.4.56
# dd if=/dev/zero of=/boot/a.txt bs=1M count=240
5.3 监控报警
#grep nagios /etc/passwd
#rpm -q postfix
#systemctl status postfix
# mail -s "xxx" nagios < /etc/hosts
# su - nagios
6 访问监控服务器查看监控信息(登录监控页面查看监控信息)
http://192.168.4.5/nagios
++++++++++++++++++++++++++++++++++++++++
nagios扩展内容(百度)
1 nagios 服务运行时,调用自定义监控脚本
2 使用第三方邮件服务器或微信发送报警消息
3 主机依赖监控(主从同步)
4 服务依赖监控(LAMP)
5 配置nagios服务 把监控到的数据绘制成图片(显示快超却未超时的数据)
1 案例1:常用系统监控命令
1.1 问题
本案例要求练习常用的系统监控命令完成以下任务:
使用vmstat命令监控内存及磁盘I/O信息
使用iostat命令监控CPU处理器及磁盘的I/O信息
使用sar命令监控系统最近的CPU/内存等活动
1.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:使用vmstat命令监控内存及磁盘I/O信息
1)报告内存、交换分区、CPU等活动信息,每2秒更新一次数据
[root@svr7 ~]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 1447960 1204 331260 0 0 422 9 59 153 1 1 98 0 0
0 0 0 1447944 1204 331260 0 0 0 0 9 12 0 0 100 0 0
0 0 0 1447944 1204 331260 0 0 0 0 9 12 0
.. ..
2)报告一次磁盘的I/O信息
[root@svr7 ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
vda 7863 12 576137 2560 1427 25 12085 6142 0 3
sr0 11 0 88 3 0 0 0 0 0 0
dm-0 6529 0 562281 2503 356 0 7989 6480 0 3
dm-1 141 0 2536 7 0 0 0 0 0 0
3)报告一次指定分区的I/O信息
[root@svr7 ~]# vmstat -p /dev/vda1
vda1 reads read sectors writes requested writes
1010 8792 1025 4096
步骤二:使用iostat命令监控CPU处理器及磁盘的I/O信息
1)报告一次CPU和磁盘I/O信息
[root@svr7 ~]# iostat
Linux 3.10.0-327.el7.x86_64 (svr7.tedu.cn) 2017年05月03日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.77 0.00 0.71 0.05 0.00 98.47
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 9.85 304.60 6.45 288160 6103
scd0 0.01 0.05 0.00 44 0
dm-0 7.30 297.28 4.29 281232 4055
dm-1 0.15 1.34 0.00 1268 0
2)报告CPU和磁盘I/O信息,每2秒钟采样一次
[root@svr7 ~]# iostat 2
Linux 3.10.0-327.el7.x86_64 (svr7.tedu.cn) 2017年05月03日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.66 0.00 0.61 0.05 0.00 98.68
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 8.42 259.61 5.62 288168 6235
scd0 0.01 0.04 0.00 44 0
dm-0 6.25 253.37 3.77 281240 4187
dm-1 0.13 1.14 0.00 1268 0
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0
dm-0 0.00 0.00 0.00 0 0
dm-1 0.00 0.00 0.00 0 0
.. ..
步骤三:使用sar命令监控系统最近的CPU/内存等活动
1)查看一次最近的系统活动完整(-A)报告
[root@svr7 ~]# sar -A
Linux 3.10.0-327.el7.x86_64 (svr7.tedu.cn) 2017年05月03日 _x86_64_ (1 CPU)
11时20分01秒
CPU %usr %nice %sys %iowait %steal %irq %soft %guest %gnice %idle
11时30分01秒 all 0.17 0.00 0.11 0.01 0.00 0.00 0.00 0.00 0.00 99.71
11时30分01秒 0 0.17 0.00 0.11 0.01 0.00 0.00 0.00 0.00 0.00 99.71
平均时间: all 0.17 0.00 0.11 0.01 0.00 0.00 0.00 0.00 0.00 99.71
平均时间: 0 0.17 0.00 0.11 0.01 0.00 0.00 0.00 0.00 0.00 99.71
11时20分01秒 proc/s cswch/s
11时30分01秒 0.39 23.27
平均时间: 0.39 23.27
11时20分01秒 pswpin/s pswpout/s
11时30分01秒 0.00 0.00
平均时间: 0.00 0.00
11时20分01秒 pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
11时30分01秒 6.30 0.35 165.40 0.03 133.94 0.00 0.00 0.00 0.00
平均时间: 6.30 0.35 165.40 0.03 133.94 0.00 0.00 0.00 0.00
11时20分01秒 tps rtps wtps bread/s bwrtn/s
11时30分01秒 0.38 0.27 0.11 12.59 0.70
平均时间: 0.38 0.27 0.11 12.59 0.70
11时20分01秒 frmpg/s bufpg/s campg/s
11时30分01秒 -4.90 0.00 1.37
平均时间: -4.90 0.00 1.37
11时20分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
11时30分01秒 1444844 604264 29.49 1204 277020 1547884 37.33 249044 241260 0
平均时间: 1444844 604264 29.49 1204 277020 1547884 37.33 249044 241260 0
11时20分01秒 kbswpfree kbswpused %swpused kbswpcad %swpcad
11时30分01秒 2097148 0 0.00 0 0.00
平均时间: 2097148 0 0.00 0 0.00
.. ..
2)报告CPU活动信息,以5秒为间隔再采用3次
[root@svr7 ~]# sar -u 5 3
Linux 3.10.0-327.el7.x86_64 (svr7.tedu.cn) 2017年05月03日 _x86_64_ (1 CPU)
11时44分20秒 CPU %user %nice %system %iowait %steal %idle
11时44分25秒 all 0.00 0.00 0.00 0.00 0.00 100.00
11时44分30秒 all 0.00 0.00 0.00 0.00 0.00 100.00
11时44分35秒 all 0.00 0.00 0.00 0.00 0.00 100.00
平均时间: all 0.00 0.00 0.00 0.00 0.00 100.00
3)报告最近的磁盘I/O信息
[root@svr7 ~]# sar -b
Linux 3.10.0-327.el7.x86_64 (svr7.tedu.cn) 2017年05月03日 _x86_64_ (1 CPU)
.. ..
11时20分01秒 tps rtps wtps bread/s bwrtn/s
11时30分01秒 0.38 0.27 0.11 12.59 0.70
11时40分01秒 0.25 0.13 0.12 15.62 0.93
平均时间: 0.31 0.20 0.11 14.11 0.81
2 案例2:搭建nagios监控服务器
2.1 问题
本案例要求搭建一台nagios监控服务器,确认Web界面可用:
安装nagios、nagios-plugins软件包
配置及访问web界面,将管理用户/密码均设为 nagiosadmin
2.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:安装前的准备工作
1)安装网站平台环境、编译工具
[root@svr7 ~]# yum -y install httpd php gd
[root@svr7 ~]# yum -y install gcc glibc glibc-common
2)创建运行账号
[root@svr7 ~]# groupadd nagcmd
[root@svr7 ~]# useradd -G nagcmd nagios
[root@svr7 ~]# gpasswd -a apache nagcmd
步骤二:编译安装nagios及nagios-plugins
1)安装nagios
[root@svr7 ~]# tar xf ~/nagios-4.3.1.tar.gz -C /usr/src/
[root@svr7 ~]# cd /usr/src/nagios-4.3.1/
[root@svr7 nagios-4.3.1]# ./configure --with-command-group=nagcmd
[root@svr7 nagios-4.3.1]# make all //编译
[root@svr7 nagios-4.3.1]# make install //安装程序
[root@svr7 nagios-4.3.1]# make install-init //安装控制脚本
[root@svr7 nagios-4.3.1]# make install-config //安装配置
[root@svr7 nagios-4.3.1]# make install-commandmode //调权限
[root@svr7 nagios-4.3.1]# make install-webconf //部署网站配置
[root@svr7 nagios-4.3.1]# chkconfig --add nagios //加载服务配置
2)安装nagios-plugins
[root@svr7 ~]# tar xf ~/nagios-plugins-2.1.4.tar.gz -C /usr/src/
[root@svr7 ~]# cd /usr/src/nagios-plugins-2.1.4/
[root@svr7 nagios-plugins-2.1.4]# ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
[root@svr7 nagios-plugins-2.1.4]# make
[root@svr7 nagios-plugins-2.1.4]# make install
步骤三:启用及访问Nagios平台
1)为Nagios平台添加Web管理用户
[root@svr7 ~]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin //建Web管理用户
2)启用nagios、httpd服务
[root@svr7 ~]# systemctl restart nagios //启用nagios
[root@svr7 ~]# systemctl restart httpd //启用Web
3)访问nagios网页界面
firefox http://服务器地址/nagios/,如图-1所示。
图-1
3 案例3:配置文件及插件使用
3.1 问题
本案例要求熟悉nagios的常用插件程序,完成以下任务:
使用插件 check_http 检测本机的Web端口
使用插件 check_tcp 检测本机的FTP服务端口
使用插件 check_disk 检测本机根分区使用率:可用空间低于80%报 WARNING,可用空间低于60%报 CRITICAL
3.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:使用插件 check_http 检测本机的Web端口
1)关闭本机的httpd服务,执行check_http检查
[root@svr7 ~]# /usr/local/nagios/libexec/check_http -H localhost -p 80connect to address localhost and port 80: 拒绝连接
HTTP CRITICAL - Unable to open TCP socket
2)启动本机的httpd服务,并建立默认首页index.html
[root@svr7 ~]# vim /var/www/html/index.html
Default site.
[root@svr7 ~]# systemctl restart httpd
3)再次执行check_http检查
[root@svr7 ~]# /usr/local/nagios/libexec/check_http -H localhost -p 80
HTTP OK: HTTP/1.1 200 OK - 302 bytes in 0.006 second response time |time=0.006236s;;;0.000000 size=302B;;;0
步骤二:使用插件check_tcp检测本机的FTP服务端口
1)未启动FTP服务时,执行check_ftp检查
[root@svr7 ~]# /usr/local/nagios/libexec/check_ftp -H localhost -p 21
connect to address localhost and port 21: 拒绝连接
2)安装及启动vsftpd服务以后,再次执行check_ftp检查
[root@svr7 ~]# yum -y install vsftpd
[root@svr7 ~]# systemctl restart vsftpd
[root@svr7 ~]# /usr/local/nagios/libexec/check_ftp -H localhost -p 21
FTP OK - 0.002 second response time on localhost port 21 [220 (vsFTPd 3.0.2)]|time=0.002164s;;;0.000000;10.000000
步骤三:使用插件check_disk检测本机/boot分区使用率
1)查看/boot目录所在分区的使用率
[root@svr7 ~]# df -hT /boot
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/vda1 xfs 497M 140M 358M 29% /boot
2)使用check_disk检查
可用空间低于80%报 WARNING,可用空间低于60%报 CRITICAL
[root@svr7 ~]# /usr/local/nagios/libexec/check_disk -w 80% -c 60% -p /boot
DISK WARNING - free space: /boot 357 MB (71% inode=99%);| /boot=139MB;99;198;0;496
3)查看实际使用率情况,调低阈值再次check_disk测试
[root@svr7 ~]# /usr/local/nagios/libexec/check_disk -w 60% -c 40% -p /boot
DISK OK - free space: /boot 357 MB (71% inode=99%);| /boot=139MB;297;198;0;496
4 案例4:监控远程主机的公有数据
4.1 问题
本案例要求在Nagios平台上添加对远程主机pc207的监控,主要包括下列服务:
ping连通状态
Web服务
FTP服务
SSH服务
4.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:准备被监控主机pc207
1)正确配置IP地址,确保与主机svr7可相互ping通
[root@pc207 ~]# ping 192.168.4.7
PING 192.168.4.7 (192.168.4.7) 56(84) bytes of data.
64 bytes from 192.168.4.7: icmp_seq=1 ttl=64 time=0.621 ms
64 bytes from 192.168.4.7: icmp_seq=2 ttl=64 time=0.427 ms
.. ..
2)确保已启用httpd、vsftpd、sshd服务,并关闭防火墙服务firewalld
[root@pc207 ~]# yum -y install httpd vsftpd
.. ..
[root@pc207 ~]# systemctl restart httpd vsftpd sshd
[root@pc207 ~]# systemctl disable firewalld --now
步骤二:配置监控服务器svr7
1)新建监控配置pc207.cfg,定义监控目标(主机、服务)
[root@svr7 ~]# vim /usr/local/nagios/etc/objects/pc207.cfg
define host {
use linux-server
host_name pc207
address 172.25.0.10
}
define service {
use local-service
host_name pc207
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service {
use local-service
host_name pc207
service_description Web Server
check_command check_http
}
define service {
use local-service
host_name pc207
service_description FTP Server
check_command check_ftp
}
define service {
use local-service
host_name pc207
service_description SSH Server
check_command check_ssh
}
2)调整nagios.cfg,启用pc207.cfg监控配置
[root@svr7 ~]# vim /usr/local/nagios/etc/nagios.cfg
.. ..
cfg_file=/usr/local/nagios/etc/objects/pc207.cfg
3)重启nagios服务
[root@svr7 ~]# systemctl restart nagios
步骤三:刷新Nagios管理界面,确认新增主机pc207的监控结果
1)确认Hosts下新增的主机,如图-2所示
图-2
2)确认Services下新增的服务信息,如图-3所示
图-3
5 案例5:监控远程主机的私有数据
5.1 问题
本案例要求在Nagios服务器上添加对远程主机pc207上私有数据的监控,完成以下监控项目:
运行的进程数
登录的用户数
CPU负载
根分区使用量
5.2 方案
Linux主机的内存信息、磁盘I/O信息等私有数据默认不对外提供,若希望从Nagios监控平台获取远程主机的私有数据,需要在被监控主机上配置启用nrpe服务。
主要工作结构:Nagios监控端(check_nrpe插件) ==> 被监控端(nrpe服务),如图-4所示。
图-4
5.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:准备被监控主机pc207
1)安装nagios-plugins插件
[root@pc207 ~]# yum -y install gcc glibc glibc-common
[root@pc207 ~]# groupadd nagcmd
[root@pc207 ~]# useradd -G nagcmd nagios
[root@pc207 ~]# tar xf ~/nagios-plugins-2.1.4.tar.gz -C /usr/src/
[root@pc207 ~]# cd /usr/src/nagios-plugins-2.1.4/
[root@pc207 nagios-plugins-2.1.4]# ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
[root@pc207 nagios-plugins-2.1.4]# make
[root@pc207 nagios-plugins-2.1.4]# make install
2)安装nrpe
[root@pc207 ~]# yum -y install openssl-devel //安装SSL头文件
[root@pc207 ~]# tar xf nrpe-3.1.0.tar.gz -C /usr/src/
[root@pc207 ~]# cd /usr/src/nrpe-3.1.0/
[root@pc207 nrpe-3.1.0]# ./configure
[root@pc207 nrpe-3.1.0]# make all //编译所有
[root@pc207 nrpe-3.1.0]# make install //安装nrpe及插件
[root@pc207 nrpe-3.1.0]# make install-init //安装服务
[root@pc207 nrpe-3.1.0]# make install-config //安装配置文件
3)定义nrpe监控命令
[root@pc207 ~]# vim /usr/local/nagios/etc/nrpe.cfg
.. ..
allowed_hosts=172.25.0.0/24,127.0.0.1,::1 //允许哪些主机
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_rootdir]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
4)启用nrpe服务并测试
[root@pc207 ~]# systemctl restart nrpe
[root@pc207 ~]# systemctl enable nrpe
.. ..
[root@pc207 ~]# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v3.1.0-rc1 //测试连本机nrpe服务
步骤二:配置Nagios监控服务器
1)为Nagios安装check_nrpe插件
[root@svr7 ~]# yum -y install openssl-devel
[root@svr7 ~]# tar xf nrpe-3.1.0.tar.gz -C /usr/src/
[root@svr7 ~]# cd /usr/src/nrpe-3.1.0/
[root@svr7 nrpe-3.1.0]# ./configure
[root@svr7 nrpe-3.1.0]# make all //编译所有
[root@svr7 nrpe-3.1.0]# make install-plugin //安装check_nrpe插件
2)测试连远程的nrpe服务,并添加远程nrpe监控指令
[root@svr7 ~]# /usr/local/nagios/libexec/check_nrpe -H 172.25.0.10
NRPE v3.1.0-rc1 //测试连远程 的nrpe服务
[root@svr7 ~]# vim /usr/local/nagios/etc/objects/commands.cfg
.. ..
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
//-c 要求对方执行的命令
}
3)修改监控目标配置pc207.cfg,添加对远程主机pc207私有数据的获取
[root@svr7 ~]# vim /usr/local/nagios/etc/objects/pc207.cfg
.. ..
define service {
use local-service
host_name pc207
service_description NRPE-Total Procs
check_command check_nrpe!check_total_procs
}
define service {
use local-service
host_name pc207
service_description NRPE-Users
check_command check_nrpe!check_users
}
步骤三:刷新Nagios管理界面,确认主机pc207的私有数据监控结果
确认pc207主机及服务监控结果,如图-5所示。
图-5