小Q: 有一种孤独,心里真正的画的是一串又一串的省略号;而在外人面前时时为这事标
上句号,其实挺好的,成熟,只是要付出代价;
总结了最近的状况,学的时间更长了,却进度慢了,但学到的多了也更深了;每天控制不住的向了解得更多,即使一直在克制自己,现在不用学太深不用学太深,适当就好。但是这节是有点多了。
=====================================================================================================
一:简介
二:安 装
1.服务端安装
2.nagios目录下简介
3.检测启动
三:添加客户端服务监控
1.服务端安装
2.host文件配置详解
3.添加需要监测的服务简介
4.检测启动
四:配置告警文件
1.配置联系人文件
2.配置监控客户端的文件
五:配置短信告警
1.编写脚本
2.添加到控制commands文件
3.告警配置完也要重启nagios
六:配置图形显示--pnp4nagios
1.修改主配置文件
2.修改控制commands文件
3.修改模块templates文件
4.修改监控客户端的文件
5.检测重启访问测试 一:简介
是一个开源软件,可以监控系统运行状态和网络信息Linux/windows主机状态,甚至可以监控打印机,
而且有自己的存储数据库;
可以运行在Linux上或windows上同时提供浏览器的web界面方便运维人员查看监控项目的状态及日志等
支持自定义脚本实现监控
支持通过手机查看系统监控信息
支持方便地扩展自己服务的检测方法
支持web界面配置管理·邮件·短信通知
Nagios官网 http://www.nagios.org
运行条件:Linux:平台,php:解析,gcc:编译c,Apache:web服务(nginx不支持yum安装)
关于cacti·nagios·zabbix安装方式:
yum在线安装:极力推荐,简单快捷,不易出错;版本低,不能自己制定;
rpm包安装 : 会依赖几十个包,极易出错,想体验一下依赖包的可以试验一下;
源码包安装: 可以实现自定义功能,版本可选;编译时间长,配置稍麻烦;
二:安 装 服务端 192.168.0.11
1.服务端安装
Centos6默认的yum源里没有nagios相关的rpm包,我们可以网上找一个epel的扩展源安装:
rpm -ivh http://www.aminglinux.com/bbs/data/attachment/forum/month_1211/e
pel-release-6-7.noarch.rpm
然后安装nagios相关的包
yum install -y httpd nagios nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe
设置登录nagios后台的用户和密码:htpasswd -c /etc/nagios/passwd nagiosadmin
vim /etc/nagios/nagios.cfg
nagios -v /etc/nagios/nagios.cfg 检测配置文件
启动服务:service httpd start; service nagios start
浏览器访问: http://ip/nagios
2.nagios目录下简介
三:添加客户端服务监控 客户端 192.168.0.12
1.配置客户端
在客户端机器上
rpm -ivh http://www.aminglinux.com/bbs/data/attachment/forum/month_1211/epel-release-6-7.noarch.rpm
yum install -y nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe
nrpe是nagios一个扩展,用于被监控的服务器,为监控平台提供本地的情况;
yum install -y httpd
vim /etc/nagios/nrpe.cfg
找到“allowed_hosts=127.0.0.1” 改为 “allowed_hosts=127.0.0.1,192.168.0.11”
后面的ip为服务端ip;
找到”dont_blame_nrpe=0”改为 “dont_blame_nrpe=1” 1表示可以传递函数;
启动客户端 /etc/init.d/nrpe start
/etc/init.d/httpd start
2.host配置文件详解
进入服务端配置文件:cd /etc/nagios/conf.d/
vim 192.168.0.12.cfg #加入:
define host{
use linux-server
host_name 192.168.0.12 #监控的IP
alias 0.12
address 192.168.0.12
}
define service{
use generic-service
host_name 192.168.0.12
service_description check_ping #监控ping服务
check_command check_ping!100.0,20%!200.0,50%
#检查丢包率,0%是ok,20%waring,50%是critical
max_check_attempts 5 #每一分钟ping一次
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.0.12
service_description check_ssh
check_command check_ssh
contact_groups 3106 #定义出现问题邮件短信联系的组
max_check_attempts 5 #当nagios检测到问题时,一共尝试检测5
#次都有问题才会告警,如果该数值为1,
#那么检测到1次问题就立即告警
normal_check_interval 1 #重新检测间隔,单位是分钟,默认3分钟
notification_interval 60 #在服务出现异常后,故障一直没有解决,
#再次对使用者发出通知的时间。单位分
#钟如果你认为,所有的事件只需要一次通
#知就够了,可以把这里的选项设为0
notifications_enabled 1 #是否开启提醒功能。1为开启,0为禁用
#一般,选项会在主配置文件nagios.cfg
#中定义,效果相同。
notification_period 24x7 #发送提醒的时间段。非常重要的主机,
#我定义为7×24,一般的主机(服务)
#就定义为上班时间。如果不在定义的
#时间段内,无论什么问题发生,都不会
#发送提醒。
notification_options:w,u,c,r #这个是service的状态。w为waning, u
#为unknown, c为critical严重, r为
# recover恢复了,类似的还有一个host
#对应的状态d,u,r d = 状态为DOWN,
# u = 状态为UNREACHABLE , r = 状态恢复
# 为OK,需要加入到host的定义配置里。
}
define service{
use generic-service
host_name 192.168.0.12
service_description check_http
check_command check_http
max_check_attempts 5
normal_check_interval 1
contact_name teng #出问题联系teng,联系方式是下面有介绍
max_check_attempts 5
normal_check_interval 1
notification_period 8:00-18:00x7
notification_options:w,c,r
notifications_enabled 1
} 检测:nagios -v /etc/nagios/nagios.cfg
重启:service httpd restart ; service nagios restart
以上服务不依赖于客户端nrpe服务,我们可以想象,我们在自己电脑上可以使用ping或者telnet探测远程任何一台机器是否存活、是否开启某个端口或服务。 而当我们想要检测客户端上的某个具体服务的情况时,就需要借助于nrpe了,比如想知道客户端机器的负责或磁盘使用情况。
3.添加不能自动检测的服务
以上是本不需要添加的监控服务对象,举例添加需要配置的监控服务
服务端vim /etc/nagios/objects/commands.cfg
增加:define command{
command_name check_nrpe #自定义的与客户端通信的名字
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
#通过这条命令获得客户机状态
} 继续编辑 vim /etc/nagios/conf.d/192.168.0.12.cfg #增加如下内容:
define service{
use generic-service
host_name 192.168.0.12
service_description check_load
check_command check_nrpe!check_load
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.0.12
service_description check_disk_hda1
check_command check_nrpe!check_hda1
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.0.12
service_description check_disk_hda2
check_command check_nrpe!check_hda2
max_check_attempts 5
normal_check_interval 1
} check_nrpe!check_load :这里的check_nrpe就是在commands.cfg刚刚定义的,check_load是远程主机上的一个检测脚本在远程主机上vim /etc/nagios/nrpe.cfg 搜索check_load,这几行就是在服务端上要执行的脚本了,我们可以手动执行这个脚本,即
我们也可以加一行command[check_sda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1 -w=超过20% warning -c=超10%critical严重的
或者把check_hda1更改一下:/dev/hda1 改为 /dev/sda1,只要服务端的check_command与客户端对应即可;就是说我们可以在客户端自定义想要检测的服务脚本,然后添加在服务端;
4.检测启动
检测:nagios -v /etc/nagios/nagios.cfg
客户端上重启一下nrpe服务: service nrpe restart
服务端也重启一下nagios服务: service nagios restart
查看日志:tail /var/log/nagios/nagios.log
四:配置告警文件
1.配置联系人文件
vim /etc/nagios/objects/contacts.cfg 增加如下:
define contact{
contact_name teng #联系人名字
use generic-contact #联系人属性
alias teng #别名
email 1234567@139.com #发送邮件地址
}
define contact{
contact_name 456
use generic-contact
alias aaa
email 3435435@139.com
pager 13931900000,13838143434
#短信通知,下面会有详解,只单独这样配置是没用的
}
define contactgroup{
contactgroup_name common # 群组名字
alias common
members teng,456 #发警告给这两个人
} 保存退出;
2.配置监控客户端的文件
将联系人或联系人组添加到监控客户端服务文件中(/etc/nagios/conf.d/192.168.0.12.cfg)的define service模块内; 我们对上面的ssh和http服务已经设置了邮件提醒,可以去上面参考;
其实我们还可以对任何服务进行配置,参考上面模块即可;
检测:nagios -v /etc/nagios/nagios.cfg
重启:service nagios restart
五:配置短信告警
正常情况下,没有任何服务器能向手机发送短消息的,要到达这个目的,得花钱购买短信服务,当你付费成功后,短信服务商会给你提供入口及加密关键字;然后我们自己写个脚本就可以发送短信。
首先在上面联系人文件的模块中添加短信提醒方式:pager 手机号
1.编写脚本文件
编写一个短信接口的脚本,可以用shell·perl·python等语言写,网上也有很多,可以调用一下,我是还没有学到,所以copy了一份perl的;
vi /root/duanxin.sh
#!/usr/bin/perl -w
use strict;
use LWP::Simple;
use URI::Escape;
use Digest::MD5;
my ($mobile, $content) = @ARGV;
my $log_control = 1;
my $key = 'Ysdbyhd6T'; #短信服务商给的验证关键字
my $souce_content = substr($mobile, 0, 8) . substr($mobile, -10, 10) . $key;
my $md5 = Digest::MD5->new;
$md5->add($souce_content);
my $result_conent = uc($md5->hexdigest);
my $url = "http://http.asp.sh.cn/MT.do?Username=sery&Password=
([-BVG'0&Mobile=$mobile&Content=$content&Keyword=$result_conent";
#短信服务商给的用户名、密码以及短信服务商的访问接口(url)全包括在这里了
my $result = get $url;
if($log_control) {
my $fh;
open($fh, '>> /var/log/sms.log') or die "can't open log: $!";
print $fh join(' ', time, $result, "\n");
close $fh;
} 来自一个叫田逸老师的博客
更改权限:chmod a+x /root/duanxin.sh
验证:bash /root/duanxin.sh 13800138000 "It is a test" ,
回车后数秒钟,这个手机应该能收到带有“It is a test”的短信;为保证短信的可靠性,
我做了一个策略:每天下午6点定时给我发一个通知短信,成功就可以放心了;
crontab –e //文件中添加
00 18 * * * /bin/bash /root/duanxin.sh 13800138000 "It is Ok” 。
2.添加到配置文件中
修改commands.cfg配置文件vim /etc/nagios/objects/commands.cfg
这个文件已经包含了发送邮件报警的部分,因此只需要再把短信报警的部分加上就可以了
# 'notify-host-by-sms' command definition
define command{
command_name host-notify-by-sms
command_line /root/duanxin.sh $CONTACTPAGER$ "*** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ IP: $HOSTADDRESS$ is $HOSTSTATE$ ***"
}
# 'notify-service-by-sms' command definition
define command{
command_name service-notify-by-sms
command_line /root/duanxin.sh $CONTACTPAGER$ "*** $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$ IP: $HOSTADDRESS$ / $SERVICEDESC$ is $SERVICESTATE$ ***"
} 第一个块定义主机报警的内容,即主机发生死机、恢复等情况发送手机短信报警;第二个块定义服务报警内容,Nagios规定,如果探测到被监控的主机停机或不可达,它就不再探测这个停机主机上的服务;
其接受者和发送内容由"***...***"内"$..$"定义的宏来决定;
另外一个需要注意的地方是命令行(command_line)路径一定要用全路径,这里调用的命令就是我们在全面编写的那个脚本duanxin.sh;
检测:nagios -v /etc/nagios/nagios.cfg
重启:service nagios restart
六:配置图形显示--pnp4nagios
我们用的nagios命令简单,但只能输出单调的几种结果,没有绚丽的类似cacti的图形界面;为了解决这个问题,我们可以用PNP插件来实现nagios监控的图形显示。
安装:yum install pnp4nagios rrdtool
1.修改主配置文件
vim /etc/nagios/nagios.cfg //修改如下配置
process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
enable_environment_macros=1 2.修改控制commands文件
修改commands.cfg
vim /etc/nagios/objects/commands.cfg
//注释掉原有对process-host-perfdata和process-service-perfdata,重新定义
define command {
command_name process-service-perfdata
command_line /usr/bin/perl /usr/libexec/pnp4nagios/process_perfdata.pl
}
define command {
command_name process-host-perfdata
command_line /usr/bin/perl /usr/libexec/pnp4nagios/process_perfdata.pl -d HOSTPERFDATA
} 3.修改模块templates文件
vim /etc/nagios/objects/templates.cfg
define host {
name hosts-pnp
register 0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_ process_perf_data 1
}
define service {
name srv-pnp
register 0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$ process_perf_data 1
}
???????????????
4.修改监控客户配置
vim /etc/nagios/conf.d/192.168.0.12.cfg 修改对应的service,比如把
define service{
use generic-service
host_name 192.168.0.12
service_description check_disk_hda1
check_command check_nrpe!check_hda1
max_check_attempts 5
normal_check_interval 1
}
改为:
define service{
use generic-service,srv-pnp
host_name 192.168.0.12
service_description check_disk_hda1
check_command check_nrpe!check_hda1
max_check_attempts 5
normal_check_interval 1
} 重启服务:
service nagios restart
service httpd restart
service npcd start
5.浏览器测试
ip/nagios/
ip/pnp4nagios/
好文章:http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com