标签:一周 windows 增加 pac 防火墙 相同 touch 注意 包括
Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。
Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。
1、监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);
2、监控主机资源(处理器负荷、磁盘、内存利用率等);
3、简单地插件设计使得用户可以方便地扩展自己服务的检测方法;
4、并行服务检查机制;
5、当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
6、自动的日志滚动功能;
8、可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;
Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。而四个ADDON中,NRPE用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控;NSCA用来让被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到);NSClient++是用来监控Windows主机时安装在Windows主机上的组件;而NDOUtils则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的快速检索和处理。这四个ADDON(附件)中,NRPE和NSClient++工作于客户端,NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端。
目前,Nagios只能安装在Linux系统主机上,其编译需要用到gcc。同时,如果打算使用web界面的管理工具的话,还需要有apache服务器和GD图形库的支持。
其次,我们再来看nagios监控的表现形式。监控的主要目的是当监控的对象发生故障或资源紧张时及时通知相关人员,以便问题得到迅速的处理。追求的效果就是"在老板和客户发现问题之前得到及时、有效的通知",假定故障通知来自老板,我想大家都不会很愉快的。Nagios为了方便我们的管理工作,提供了至少3种表现手段:
1、web方式,即通过浏览器观看被监控的对象;如正常状态下,其状态(status)是以蓝色填充并显示一个OK。
2、邮件通知,发生故障时,到达设定重试次数和探测间隔时间后发送邮件给管理员或相关人员,报告问题的大致情况。
3、手机短信,这是非常有用和及时的功能了;晚上熟睡中,再也没可能看web页面或查阅邮件,可以一旦发生故障,手机短信却能把你随时唤醒。
可以查看主机状态、系统资源、服务状态等的历史记录(24小时/一周/一年)
以cpu使用情况为例,以下分别为24小时/一周/一年 的服务器的cpu使用情况(包括使用情况的当前大小、最大值和平均值)
依赖包以yum方式安装。Yum的配置方法在这里就不多介绍了(建议通过公网的yum源进行安装)。
yum install -y httpd httpd-manual httpd-devel php php-mysql mysql-devel php-pear \
php-gd php-pdo php-ldap php-xml perl-DBI perl-CPAN perl-Digest-SHA1 \
perl-Digest-HMAC perl-Socket6 perl-IO-Socket-INET6 net-snmp-devel dmidecode \
net-snmp net-snmp-perl net-snmp-utils gcc-c++ glib2-devel graphviz pango \
cairo-devel libxml2-devel pango-devel perl-Time-HiRes \
gd gd-devel libjpeg-turbo libjpeg-turbo-devel libXpm libXpm-devel
注: gd、zlib、jpeg为图形所需的包,若未安装上,将没有nagios map
针对操作系统默认安装的软件包不同,安装的依赖包也有所差异。以上安装的依赖包是针对系统为精简安装所需要安装的依赖包。
Nagios的监控方式有很多,snmp的方式主要是针对以后要监控服务器网卡流量信息。
vim /etc/snmp/snmpd.conf
41 com2sec notConfigUser 127.0.0.1 public
62 access notConfigGroup "" any noauth exact all none none
85 view all included .1 80
service snmpd restart
chkconfig snmpd on
目前可使用以下最新版的安装包
useradd -s /sbin/nologin nagios
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios/
tar zxf nagios-4.4.4.tar.gz
cd nagios-4.4.4
./configure --with-command-group=nagcmd --prefix=/usr/local/nagios/
make all && make install && make install-daemoninit && make install-commandmode && make install-config && make install-webconf
#注: make install-webconf将自动生成nagios web配置 文件,也就无需手动去httpd.conf中添加相应的配置。
make install-exfoliation
#注: make install-exfoliation为naigios新的界面,想要换成以前老的见面需要执行make install-classicui老的界面
tar zxf nagios-plugins-2.2.1.tar.gz
cd nagios-plugins-2.2.1
./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/usr/local/nagios/
make ;make install
#注: Nagios默认的apache认证文件位于“/usr/local/nagios/etc/htpasswd”
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
#注: nagiosadmin为登陆nagios的用户名,下面是需要输入的密码。
New password:
Re-type new password:
Adding password for user nagiosadmin
service httpd restart
chkconfig httpd on
Nrpe插件是Nagios监控的主要方式。详细监控方式如下:
#注: 建议从http://www.nagios.org官网下载最新的Nrpe插件。安装方式如下:
tar zxf nrpe-3.2.1.tar.gz
cd nrpe-3.2.1
./configure –prefix=/usr/local/nagios --enable-command-args
make all && make install && make install-config && make install-init
将nrpe添加为系统服务
vi /etc/services
…
nrpe 5666/tcp # NRPE
#注: 需要为nagios添加nrpe命令
vi /usr/local/nagios/etc/objects/commands.cfg
...
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
tar zxf rrdtool-1.7.0.tar.gz
cd rrdtool-1.7.0
./configure --prefix=/usr/local/rrdtool
make;make install
tar zxvf pnp4nagios-0.6.26.tar.gz
cd pnp4nagios-0.6.26
./configure --prefix=/usr/local/pnp4nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool \
--with-perl_lib_path=/usr/local/rrdtool/lib/perl/5.10.1/x86_64-linux-thread-multi/
make all && make fullinstall
#注:make install-webconf将在/etc/httpd/conf.d/产生其配置文件pnp4nagios.conf
A)创建默认配置文件
cd /usr/local/pnp4nagios/etc
cp misccommands.cfg-sample misccommands.cfg
cp nagios.cfg-sample nagios.cfg
cp rra.cfg-sample rra.cfg-sample
cd /usr/local/pnp4nagios/etc/pages
cp web_traffic.cfg-sample web_traffic.cfg
/usr/local/pnp4nagios/etc/check_commands
cp check_all_local_disks.cfg-sample check_all_local_disks.cfg
cp check_nrpe.cfg-sample check_nrpe.cfg
cp check_nwstat.cfg-sample check_nwstat.cfg
chown -R nagios:nagios /usr/local/pnp4nagios
B)修改process_perfdata.cfg
#修改Nagios主配置文件,增加曲线图
vi /usr/local/nagios/etc/nagios.cfg
833 process_performance_data=1
845 host_perfdata_command=process-host-perfdata
846 service_perfdata_command=process-service-perfdata
# templates.cfg在末行添加如下信息
#此配置为自定web界面的图形位置
vi /usr/local/nagios/etc/objects/templates.cfg
…
define host{
name host-pnp
register 0
action_url /pnp4nagios/graph?host=$HOSTNAME$
}
define service{
name srv-pnp
register 0
action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
}
C)修改nagios commands.cfg,让PNP在后台自动生成性能曲线图
vi /usr/local/nagios/etc/objects/commands.cfg
# ‘process-host-perfdata‘ command definition
define command{
command_name process-host-perfdata
command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}
# ‘process-service-perfdata‘ command definition
define command{
command_name process-service-perfdata
command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl
}
#修改PNP日志级别(若pnp配置有问题,可以通过该日志排错)
vi /usr/local/pnp4nagios/etc/process_perfdata.cfg
#Loglevel 0=silent 1=normal 2=debug
LOG_LEVEL = 2
LOG_FILE = /usr/local/pnp4nagios/var/perfdata.log
#注意:配置完成后,需要等几分钟后才会有曲线图。
(曲线图的数据默认存放位置为:“ /usr/local/pnp4nagios/var/perfdata” 过个几分钟后该目录会生成相应的监控数据文件)
#删除pnp的默认web页面
cd /usr/local/pnp4nagios/share/
mv install.php install.php.bak
#默认nagios仅允许nagiosadmin用户登陆。若在步骤“2.3.4 创建Naigios登陆认证”添加的为别的用户(如:user),则需要修改cgi.cfg文件。多个用户之间用逗号隔开(如:nagiosadmin,user)。
vi /usr/local/nagios/etc/cgi.cfg
authorized_for_system_information=nagiosadmin,user
authorized_for_configuration_information=nagiosadmin,user
authorized_for_system_commands= nagiosadmin,user
authorized_for_all_services= nagiosadmin,user
authorized_for_all_hosts= nagiosadmin,user
authorized_for_all_service_commands= nagiosadmin,user
authorized_for_all_host_commands= nagiosadmin,user
vi /usr/local/nagios/etc/nagios.cfg
# directive as shown below:
cfg_dir=/usr/local/nagios/etc/objects/文件夹
#文件夹可根据项目名自定义,存放以.cfg结尾的配置文件。
# Definitions for monitoring the local (Linux) host
#cfg_file=/usr/local/nagios//etc/objects/localhost.cfg
#默认监控localhost,可根据需求是否注释
进入“/usr/local/nagios/etc/objects/文件夹”目录。创建一个以.cfg结尾的配置文件。例:
cd /usr/local/nagios/etc/objects/文件夹
touch linux.cfg
touch windows.cfg
#具体配置信息可参考如下配置
#-------------------------------- linux server ------------------------#
#--------------------------------- hosts -----------------------------#
define host{
use linux-server,host-pnp
host_name zhujiming
alias bieming
address ipdizhi
# icon_image image_file
# icon_image_alt alt_string
# vrml_image image_file
# parents zhujiming
# statusmap_image server.png
# 2d_coords 200,200
# 3d_coords 200,200,100
}
#zhujiming -- 主机名
#bieming -- 别名
#ipdizhi -- p地址
#-------------------------------- services ---------------------------#
define service{ #监控cpu
use generic-service,srv-pnp
host_name zhujiming
service_description CPU_Usage
check_command check_nrpe!check_cpu
}
define service{ #监控swap
use generic-service,srv-pnp
host_name zhujiming
service_description Swap_Usage
check_command check_nrpe!check_swap
}
define service{ #监控mem
use generic-service,srv-pnp
host_name zhujiming
service_description Mem_Usage
check_command check_nrpe!check_memory
}
define service{ #监控目录大小
use generic-service,srv-pnp
host_name zhujiming
service_description /_Usage
check_command check_nrpe!check_/
}
define service{ #监控IO百分比
use generic-service,srv-pnp
host_name zhujiming
service_description IO_%util
check_command check_nrpe!check_diskio
}
define service{ #监控磁盘IO
use generic-service,srv-pnp
host_name zhujiming
service_description IO_r/w
check_command check_nrpe!check_iostat
}
#define service{ #监控服务
# use generic-service,srv-pnp
# host_name zhujiming
# service_description web
# check_command check_http
# }
#define service{ #监控端口
# use generic-service,srv-pnp
# host_name zhujiming
# service_description tomcat
# check_command check_tcp!8080
# }
#define service{ #监控网卡流量
# use generic-service,srv-pnp
# host_name zhujiming
# service_description traffic
# check_command check_nrpe!check_traffic
# }
#define service{ #监控负载
# use generic-service,srv-pnp
# host_name zhujiming
# service_description CPU Load
# check_command check_nrpe!check_load
# }
#-------------------------------- windows server ------------------------#
#--------------------------------- hosts -----------------------------#
define host{
use windows-server,host-pnp
host_name zhujiming
alias bieming
address ipdizhi
# icon_image image_file
# icon_image_alt alt_string
# vrml_image image_file
# parents zhujiming
# statusmap_image server.png
# 2d_coords 200,200
# 3d_coords 200,200,100
}
#zhujiming -- 主机名
#bieming -- 别名
#ipdizhi -- p地址
#-------------------------------- services ---------------------------#
define service{ #监控CPU
use generic-service,srv-pnp
host_name zhujiming
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90
}
define service{ #监控内存
use generic-service,srv-pnp
host_name zhujiming
service_description Memory Uadminsge
check_command check_nt!MEMUSE!-w 80 -c 90
}
define service{ #监控磁盘使用情况
use generic-service,srv-pnp
host_name zhujiming
service_description D:\ Drive Space
check_command check_nt!USEDDISKSPACE!-l d -w 80 -c 90
}
#define service{ #监控服务
# use generic-service,srv-pnp
# host_name zhujiming
# service_description web
# check_command check_http
# }
#define service{ #监控端口
# use generic-service,srv-pnp
# host_name zhujiming
# service_description tomcat
# check_command check_tcp!8080
#define service{ #监控网卡流量
# use generic-service,srv-pnp
# host_name zhujiming
# service_description traffic
# check_command check_traffic!2 -w 600,600 -c 800,800
# }
#define service{ #监控服务
# use generic-service,srv-pnp
# host_name zhujiming
# service_description SNMP
# check_command check_nt!SERVICESTATE!-d SHOWALL -l "SNMP Service"
# }
修改nagios主配置文件,添加主机组和服务组的配置文件
vi /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg
cfg_file=/usr/local/nagios/etc/objects/servicegroups.cfg
#具体配置信息可参考如下配置
vi /usr/local/nagios/etc/objects/hostgroups.cfg
define hostgroup{
hostgroup_name windows-servers
alias windows机器
}
#define hostgroup{
# hostgroup_name template
# alias 模版
# members host1,host2,
# }
vi /usr/local/nagios/etc/objects/servicegroups.cfg
#define servicegroup{
# servicegroup_name template1
# alias 模版1
# members host1,service1,host2,service1,
# }
#define servicegroup{
# servicegroup_name template2
# alias 模版2
# members host1,service1,host2,service2,
# }
#注: 建议从http://www.nagios.org官网下载最新的nagios插件及nrpe软件包。安装方式如下:
useradd -s /sbin/nologin Nagios
tar zxf nagios-plugins-1.4.16.tar.gz
tar zxf nrpe-2.12.tar.gz
cd nagios-plugins-1.4.16
./configure ;make ;make install
cd ../nrpe-2.14
./configure ; make all ; make install-plugin ; make install-daemon ; make install-daemon-config
A)#让客户端允许nagios服务端监控(服务端地址以192.168.1.100为例)
sed -i ‘s/allowed_hosts=.*/allowed_hosts=127.0.0.1,192.168.1.100/g‘ /usr/local/nagios/etc/nrpe.cfg
B)#若要监控客户端的swap,数据盘等信息,需要修改客户端的配置文件
echo ‘command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
#command[check_data]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
#command[check_traffic]=/usr/local/nagios/libexec/check_traffic.sh -V 2c -C public -H 127.0.0.1 -I 2 -w 800,800 -c 1000,1000 -K -b
command[check_/]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
command[check_memory]=/usr/local/nagios/libexec/check_memory.pl -u -w 80 -c 90
command[check_diskio]=/usr/local/nagios/libexec/check_diskio.sh -d dm-0 -w 60 -c 80
command[check_iostat]=/usr/local/nagios/libexec/check_iostat.sh -d dm-0 -w 20 -c 30
command[check_cpu]=/usr/local/nagios/libexec/check_cpu.sh -w 80 -c 90‘ >> /usr/local/nagios/etc/nrpe.cfg
#注:[check_swap]可自定义,但需要与服务端的配置文件中的命令相同。
# check_iostat.sh -d dm-0 -w 20 -c 30 脚本后面跟的为报警参数,具体信息可通过
/usr/local/nagios/libexec/check_iostat.sh --help查看。
C)#启动Nagios客户端:
sed -i "s#127.0.0.1#$nagios_server#g" /etc/xinetd.d/nrpe
grep "nrpe" /etc/services
if [ $? -eq 0 ];then
echo "ok"
else
echo "nrpe 5666/tcp # nrpe" >> /etc/services
fi
/etc/init.d/xinetd start
chkconfig xinetd on
#旧版本的启动方式
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
echo ‘/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
’ >> /etc/rc.local
netstat -an|grep 5666
##察看是否在5666端口上监听
##注意:防火墙 释放端口5666,很重要
D)服务器端的配置请参阅:” 2.4.4.1 被监控主机为linux”
A)上传软件包:NSCP-0.4.1.105-x64
B)双击运行即可
填写nagios服务器端的地址
两个步骤可根据监控的方式进行勾选,默认通过check_nt命令监控,即勾选第二个即可
A) 修改配置文件
编辑NSC.INI文件(位于C:\NSClient++目录)并做如下修改:
B)启动服务的方法
进入命令提示符:win+r
键入: services.msc
找到NSClient++,右键重新启动即可。
C)服务器端的配置请参阅:” 2.4.4.2 被监控主机为windows”
Windows与linux监控的模板基本相同,详细信息可查看“templates.cfg”
cat /usr/local/nagios/etc/objects/templates.cfg
# Linux host definition template - This is NOT a real host, just a template!
# Windows host definition template - This is NOT a real host, just a template!
#Host监控模板信息
check_interval 5 #主机每5分钟检查一次
retry_interval 1 #如果主机出现问题,每1分钟检查一次
max_check_attempts 10 #如果主机出现问题,每1分钟检查一次,共检查10次
notification_interval 30 #定义发送报警的频率,每30分钟发一次
#service监控模板信息
notification_options w,u,c,r ; Send notifications about warning, unknown, critical, and recovery events #定义报警的类型
notification_interval 60 #定义报警的频率,每小时
notification_period 24x7 #定义报警的时间段
max_check_attempts 3 #如果一个监控项出现问题,它会检测3次,如果第三次依然有问题,nagios就会将它定义为出现问题的服务。
normal_check_interval 10 #正常的服务是每10分钟检测一次
即:定义监控的服务检测的频率。(对关键业务监控的频率需要变小。)
设置邮箱联系人的默认文件为“contacts.cfg”
cat /usr/local/nagios/etc/objects/contacts.cfg
…
email nagios@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
…
}
将nagios@localhost改成接收报警的邮箱即可。
Nagios默认使用/usr/bin/mailx或者/usr/bin/mail发送邮件
安装mailx
yum -y install mailx
发送测试邮件
[root@nagios-vm1 ~]#mail nmonitor@163.com
Subject: test mail from gzw
shaoyong test
.
EOT
从客户端查看邮件,邮件已收到。
A)hosts.cfg、services.cfg或者 “/usr/local/nagios/etc/objects/文件夹”目录下以.cfg结尾的配置文件,host和service分别定义了使用的模板,以linux服务器为例,信息如下:
cat /usr/local/nagios/etc/objects/项目名/xxx.cfg
define host{
use linux-server,host-pnp
…
}
define service{
use generic-service,srv-pnp
…
}
即:配置文件调用了配置模板
B)linux-server,host-pnp、generic-service,srv-pnp是在template.cfg,查看模板定义的联系人组如下:
cat /usr/local/nagios/etc/objects/template.cfg
# Linux host definition template - This is NOT a real host, just a template!
define host{
name linux-server
use generic-host
…
contact_groups admins
…
}
define service{
name generic-service
contact_groups admins
}
即:模板中定义的联系人为admins组
C)admins组是在contacts.cfg中定义的,查看contacts.cfg信息如下:
cat /usr/local/nagios/etc/objects/contacts.cfg
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin
}
#定义了admins里包含了成员nagiosadmin用户
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
email nagios@localhost
}
即:此处定义接收报警的邮箱地址
A)hosts.cfg、services.cfg或者 “/usr/local/nagios/etc/objects/文件夹”目录下以.cfg结尾的配置文件,host和service分别定义了使用的模板,可通过“4.2.1 报警配置文件之间的关系”查看。
B) linux-server,host-pnp、generic-service,srv-pnp是在template.cfg,查看模板定义的联系人组如下:
define contact{
name generic-contact
…
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
…
}
即:“notify-service-by-email” 、“notify-host-by-email”定义了发邮件的命令
C)“notify-service-by-email” 、“notify-host-by-email”命令是在commands.cfg中定义的,查看commands.cfg信息如下:(设置告警信息)
cat /usr/local/nagios/etc/objects/commands.cfg
…
# ‘notify-host-by-email‘ command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios by ShaoYong *****\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$
}
# ‘notify-service-by-email‘ command definition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios by ShaoYong *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}
即:“command_line”就是发送邮件的具体内容
被监控主机的配置文件中包含主机的坐标信息,可以先理清被监控主机间的逻辑关系后进行拓扑图的配置。
以linux服务器为例,其配置见“2.4.4.1被监控主机为linux”,主机定义部分如下:
define host{
use linux-server,host-pnp
host_name zhujiming
alias bieming
address ipdizhi
parents zhujiming
#定义拓扑图中上联的设备
statusmap_image server.png
#定义设备图标。默认位于“/usr/local/nagios/share/images/logos/”目录下。
2d_coords 200,200
#定义设备的坐标。根据拓扑图填写坐标位置。
# 3d_coords 200,200,100
}
最后,测试了一下,得出的拓扑展现如下:
标签:一周 windows 增加 pac 防火墙 相同 touch 注意 包括
原文地址:https://www.cnblogs.com/skyshao/p/11392686.html