nagios 监控配置
/usr/local/nagios/etc/objects
commands.cfg contacts.cfg host.cfg localhost.cfg printer.cfg services.cfg switch.cfg templates.cfg timeperiods.cfg windows.cfg
host.cfg services.cfg需要自己创建
其中host.cfg用来指定监控的主机地址,以及相关属性信息,
[root@web- objects]# cat host.cfg
define host {
use linux-server,hosts-pnp #引用在temperiods.cfg中定义的linux-server 和hosts-pnp
host_name 1.222 主机名
alias 1.222 主机别名
address 192.168.1.222 主机具体的ip地址,域名也可以
}
define host {
use linux-server,hosts-pnp
host_name 1.223
alias 1.223
address 192.168.1.223
}
define host {
use linux-server,hosts-pnp
host_name 1.233
alias 1.233
address 192.168.1.233
}
define host {
use linux-server,hosts-pnp
host_name 1.215
alias 1.215
address 192.168.1.215
}
define host {
use linux-server,hosts-pnp
host_name 2.202
alias 2.202
address 192.168.2.202
}
define host {
use linux-server,hosts-pnp
host_name 2.203
alias 2.203
address 192.168.2.203
}
define host {
use linux-server,hosts-pnp
host_name 2.214
alias 2.214
address 192.168.2.214
}
define host {
use linux-server,hosts-pnp
host_name 2.200
alias 2.200
address 192.168.2.200
}
define host {
use linux-server,hosts-pnp
host_name 2.210
alias 2.210
address 192.168.2.210
}
define host {
use linux-server,hosts-pnp
host_name 2.211
alias 2.211
address 192.168.2.211
}
define host {
use linux-server,hosts-pnp
host_name 2.252
alias 2.252
address 192.168.2.252
}
define host {
use linux-server,hosts-pnp
host_name 2.212
alias 2.212
address 192.168.2.212
}
define host {
use linux-server,hosts-pnp
host_name 2.213
alias 2.213
address 192.168.2.213
}
define hostgroup {
hostgroup_name sa-servers #定义一个主机组
alias sa-servers #主机组的别名
members 1.222,1.223,1.233,1.215,2.202,2.203,2.214,2.200,2.210,2.252,2.211,2.212,2.213 #主机组的成员,为上面hostname中定义的名字
#####################################
services.cfg用于定义监控服务和主机资源没,如http服务ftp服务,磁盘空间,系统负载等
[root@web- objects]# cat services.cfg
##########################web###################################
define service {
use local-service,services-pnp #引用templates.cfg中定义的local-server的属性值
host_name 1.222,1.223,1.233,1.215,2.202,2.203,2.214,2.200,2.210,2.252,2.211,2.212,2.213 #指定要监控那台主机,在host.cfg中定义的
service_description ping #内容的描述
check_command check_ping!100.0,20%!500.0,60% #指定检查命令check_ping 在commands.cfg中定义的后面接两个参数,命令和参数之间用!隔开
}
define service {
use local-service,services-pnp
host_name 1.222,1.223,1.233,1.215,2.202,2.203,2.214,2.200,2.210,2.252,2.211,2.212,2.213
service_description ssh
check_command check_ssh
}
define service {
use local-service,services-pnp
host_name 1.222,1.223,1.233,1.215,2.202,2.203,2.214,2.200,2.210,2.252,2.211,2.212,2.213
service_description sshd
check_command check_tcp!22
}
define service {
use local-service,services-pnp
host_name 1.222,1.215,2.214,2.200,2.210,2.252,2.211,2.212,2.213
service_description mysqlport
check_command check_tcp!3306
}
define service {
use local-service,services-pnp
host_name 1.215
service_description mailserver-users
check_command check_nrpe!check_users
}
define service {
use local-service,services-pnp
host_name 1.215
service_description mailserver-load
check_command check_nrpe!check_load
}
define service {
use local-service,services-pnp
host_name 1.215
service_description mailserver-sdb1
check_command check_nrpe!check_sdb1
}
define service {
use local-service,services-pnp
host_name 1.215
service_description mailserver-sda2
check_command check_nrpe!check_sda2
}
define service {
use local-service,services-pnp
host_name 1.215
service_description mailserver-zombie_procs
check_command check_nrpe!check_zombie_procs
}
define service {
use local-service,services-pnp
host_name 1.215
service_description mailserver-total_procs
check_command check_nrpe!check_total_procs
}
contacts.cfg 用来定义联系人,和联系人组等 timeperiods.cfg用来定义监控时间段
cgi.cfg用来控制相关cgi脚本,如想在web监控中执行cgi脚本,如restart nagios,shutdown nagios stop nagios 需要配置cfg文件
[root@web-musicxx etc]# cat cgi.cfg | grep -v ^# |grep -v ^$
main_config_file=/usr/local/nagios/etc/nagios.cfg
physical_html_path=/usr/local/nagios/share
url_html_path=/nagios
show_context_help=0
use_pending_states=1
use_authentication=0
use_ssl_authentication=0
authorized_for_system_information=nagios
authorized_for_configuration_information=nagios
authorized_for_system_commands=nagios
authorized_for_all_services=nagios
authorized_for_all_hosts=nagios
authorized_for_all_service_commands=nagios
authorized_for_all_host_commands=nagios
default_statusmap_layout=5
default_statuswrl_layout=4
ping_syntax=/bin/ping -n -U -c 5 $HOSTADDRESS$
refresh_rate=90
escape_html_tags=1
action_url_target=_blank
notes_url_target=_blank
lock_author_names=1
nagios.cfg是nagios的核心配置文件,所有对象配置文件必须在这个文件中进行定义才能发挥作用,[root@web-musicxx etc]# cat nagios.cfg | grep -v ^# | grep -v ^$
log_file=/usr/local/nagios/var/nagios.log #日志文件的路径
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/host.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg #引用对象配置文件
object_cache_file=/usr/local/nagios/var/objects.cache #对象缓冲文件,指定一个所有对象配置文件
precached_object_file=/usr/local/nagios/var/objects.precache
resource_file=/usr/local/nagios/etc/resource.cfg #指定nagios资源文件路径
status_file=/usr/local/nagios/var/status.dat #定义一个状态文件,保存nagios当前状态,注释和宕机信息
status_update_interval=10
nagios_user=nagios
nagios_group=nagios
check_external_commands=1 #定义是否允许nagios在web页面允许cgi命令,1为运行,0为不允许运行
command_check_interval=-1
command_file=/usr/local/nagios/var/rw/nagios.cmd
external_command_buffer_slots=4096
lock_file=/usr/local/nagios/var/nagios.lock
temp_file=/usr/local/nagios/var/nagios.tmp
temp_path=/tmp
event_broker_options=-1
log_rotation_method=d
log_archive_path=/usr/local/nagios/var/archives
use_syslog=1
log_notifications=1
log_service_retries=1
log_host_retries=1
log_event_handlers=1
log_initial_states=0
log_external_commands=1
log_passive_checks=1
service_inter_check_delay_method=s
max_service_check_spread=30
service_interleave_factor=s
host_inter_check_delay_method=s
max_host_check_spread=30
max_concurrent_checks=0
check_result_reaper_frequency=10
max_check_result_reaper_time=30
check_result_path=/usr/local/nagios/var/spool/checkresults
max_check_result_file_age=3600
cached_host_check_horizon=15
cached_service_check_horizon=15
enable_predictive_host_dependency_checks=1
enable_predictive_service_dependency_checks=1
soft_state_dependencies=0
auto_reschedule_checks=0
auto_rescheduling_interval=30
auto_rescheduling_window=180
sleep_time=0.25
service_check_timeout=60
host_check_timeout=30
event_handler_timeout=30
notification_timeout=30
ocsp_timeout=5
perfdata_timeout=5
retain_state_information=1
state_retention_file=/usr/local/nagios/var/retention.dat
retention_update_interval=60
use_retained_program_state=1
use_retained_scheduling_info=1
retained_host_attribute_mask=0
retained_service_attribute_mask=0
retained_process_host_attribute_mask=0
retained_process_service_attribute_mask=0
retained_contact_host_attribute_mask=0
retained_contact_service_attribute_mask=0
interval_length=60
check_for_updates=1
bare_update_check=0
use_aggressive_host_checking=0
execute_service_checks=1
accept_passive_service_checks=1
execute_host_checks=1
accept_passive_host_checks=1
enable_notifications=1
enable_event_handlers=1
process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
obsess_over_services=0
obsess_over_hosts=0
translate_passive_host_checks=0
passive_host_checks_are_soft=0
check_for_orphaned_services=1
check_for_orphaned_hosts=1
check_service_freshness=1
service_freshness_check_interval=60
check_host_freshness=0
host_freshness_check_interval=60
additional_freshness_latency=15
enable_flap_detection=1
low_service_flap_threshold=5.0
high_service_flap_threshold=20.0
low_host_flap_threshold=5.0
high_host_flap_threshold=20.0
date_format=us
p1_file=/usr/local/nagios/bin/p1.pl
enable_embedded_perl=1
use_embedded_perl_implicitly=1
illegal_object_name_chars=`~!$%^&*|'"<>?,()=
illegal_macro_output_chars=`~$&|'"<>
use_regexp_matching=0
use_true_regexp_matching=0
admin_email=nagios@localhost
admin_pager=pagenagios@localhost
daemon_dumps_core=0
use_large_installation_tweaks=0
enable_environment_macros=1
debug_level=0
debug_verbosity=1
debug_file=/usr/local/nagios/var/nagios.debug
max_debug_file_size=1000000
验证nagios配置文件的正确性
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios Core 3.2.3
Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 10-03-2010
License: GPL
Website: http://www.nagios.org
Reading configuration data...
Read main config file okay...
Processing object config file '/usr/local/nagios/etc/objects/commands.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/contacts.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/timeperiods.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/templates.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/host.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/services.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/localhost.cfg'...
Read object config files okay...
略若干字。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
rocessor commands...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
2)
安装nagios性能分析图表
nagios对服务或主机监控是一个瞬间或者说瞬时状态,有时候系统管理员需要了解主机在一段时间的性能,以及服务的相约情况,并且要生成图表
可以利用pnp来实现,她是居于php和perl 利用rrdtool工具将nagios采集的数据绘制成相关的图表,然后显示主机或者服务器在一段时间内的运行状态、
下载pnp rrdtool最新版
在安装之前安装下依赖包和eedtool
yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpmbuild glib2-devel dbus-devel freetype-devel fontconfig-devel gcc-c++ expat-devel python-devel libXrender-devel zlib libpng freetype libjpeg fontconfig gd libxml2 pcre pcre-devel libpcre libconfuse libart_lgpl-devel
安装pnp
tar pnp.tar.gz
cd pnp
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-rrdtool=/usr/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata
make all
make install
make install-config
make install-init
可能会有报错 什么ssl 啥的,我的做法是安装openssl-devel包!
另外映射
ln -s /usr/lib64/libssl.so /usr/lib64/libssl.so.0.9.8
ln -s /usr/lib64/libcrypto.so /usr/lib64/libcrypto.so.0.9.8
配置pnp
1:创建默认配置文件
cd /usr/local/nagios/etc/pnp/
cp process_perfdata.cfg-sample process_perfdata.cfg
cp npcd.cfg-sample npcd.cfg
cp rra.cfg-sample rra.cfg
chown -R nagios.nagios /usr/local/nagios/etc/pnp/
2:修改process_perfdata.cfg文件
将日志修改为2级别
# Loglevel 0=silent 1=normal 2=debug
#
LOG_LEVEL = 2
3:修改nagios配置文件
找到如下几项去掉注释,贴
process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
4:增加小太阳图表,修改templates.cfg 增加一个定义pnp的host和service
define host{
name hosts-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$
process_perf_data
}
define service{
name services-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
process_perf_data
}
5:修改commands.cfg 贴
# 'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
#command_line /usr/bin/printf "%b" "$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$\n" >> /usr/local/nagios/var/host-perfdata.out
command_line /usr/local/nagios/libexec/process_perfdata.pl
}
# 'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
#command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n" >> /usr/local/nagios/var/service-perfdata.out
command_line /usr/local/nagios/libexec/process_perfdata.pl
}
6:简略,修改hosts.cfg 和services.cfg添加 hosts-pnp services-pnp,具体略,见上面
restart nagios
如配置正确,会生成若干文件
/usr/local/nagios/share/perfdata/1.215
mailserver-load.rrd mailserver-sda2.rrd mailserver-sdb1.rrd mailserver-users.rrd mysqlport.rrd ping.rrd sshd.rrd
mailserver-load.xml mailserver-sda2.xml mailserver-sdb1.xml mailserver-users.xml mysqlport.xml ping.xml sshd.xml
图
利用插件扩展nagios的监控功能
利用nrpe外部插件监控远程主机
配置nagios客户端
1:安装nagios-plugins
tar -xf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure
make
make install
useradd -s /sbin/nologin nagios
chown nagios.nagios /usr/local/nagios/ -R
chown nagios.nagios /usr/local/nagios/
chown nagios.nagios /usr/local/nagios/libexec/ -R
安装nrpe
cd nrpe-2.13
./configure
make all
make all
yum install openssl-devel
./configure
make all
make install-plugin && make install-daemon && make install-daemon-config
安装完成后在/usr/local/nagios/libexec下会生成check_nrpe 命令
配置nrpe修改nrpe.cof 中allowed_hosts=nagiosserveripaddress
启动nagios守护进程
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
[root@mail ~]# netstat -lantp | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 2832/nrpe
服务端测试
[root@web- 1.215]# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.215
NRPE v2.13
客户端上定义监控服务器内容
# The following examples use hardcoded command arguments...
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_sdb1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sdb1
command[check_sda2]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda2
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
nagios服务器配置
1:安装nrpe插件,./configure
make all
make install-plugin
2:commands.cfg中定义一个check_nrpe监控命令
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
在service.cfg中添监控内容,略,见上面
测试nagios配置文件没问题,则restartnagios
图