是一个开源软件,可以监控网络设备网络流量、Linux/windows主机状态,甚至可以监控打印机
它可以运行在Linux上或windows上
基于浏览器的web界面方便运维人员查看监控项目的状态
支持web界面配置、管理操作
支持短信、邮件通知
可以自定义脚本实现自定义化监控
Nagios官网 http://www.nagios.org/
服务端
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
显示如下则无问题:
Total Warnings: 0
Total Errors: 0启动服务:
service httpd start; service nagios start
浏览器访问:
http://ip/nagios
账号是:
nagiosadmin
, 密码是:你刚刚设置的
客户端
rpm -ivh http://www.lishiming.net/data/attachment/forum/month_1211/epel-release-6-7.noarch.rpm
yum install -y nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe
vim /etc/nagios/nrpe.cfg
找到
allowed_hosts=127.0.0.1
改为allowed_hosts=127.0.0.1,172.21.96.98
后面的ip为服务端ip找到
dont_blame_nrpe=0
改为dont_blame_nrpe=1
启动客户端
service nrpe start
服务端
vim /etc/nagios/conf.d/nagios1.cfg
配置模板:
define host{
use linux-server
host_name 主机名(可自定义)
alias 昵称(可自定义)
address 客户端IP地址
}
define service{
use generic-service
host_name 主机名(可自定义)
service_description check_ping
check_command check_ping!100.0,20%!200.0,50%
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 主机名(可自定义)
service_description check_ssh
check_command check_ssh
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 主机名(可自定义)
service_description check_http
check_command check_http
max_check_attempts 5
normal_check_interval 1
}
配置文件中一共监控了三个service:ssh, ping, http 这三个项目是使用本地的nagios工具去连接远程机器,也就是说即使客户端没有安装nagios-plugins以及nrpe也是可以监控到的。其他的一些service诸如负载、磁盘使用等是需要服务端通过nrpe去连接到远程主机获得信息,所以需要远程主机安装nrpe服务以及相应的执行脚本(nagios-plugins)
max_check_attempts 5 #当nagios检测到问题时,一共尝试检测5次都有问题才会告警,如果该数值为1,那么检测到问题立即告警
normal_check_interval 1 #重新检测的时间间隔,单位是分钟,默认是3分钟
notification_interval 60 #在服务出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟。如果你认为,所有的事件只需要一次通知就够了,可以把这里的选项设为0。
服务端
vim /etc/nagios/objects/commands.cfg
增加:
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}PS:客户端必须
service nrpe start
开启服务。继续编辑刚刚写的监控主机配置文件
vim /etc/nagios/conf.d/nagios1.cfg
配置模板:
define service{
use generic-service
host_name switch_client1
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 switch_client1
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 switch_client1
service_description check_disk_hda2
check_command check_nrpe!check_hda2
max_check_attempts 5
normal_check_interval 1
}PS:配置完成后使用
nagios -v /etc/nagios/nagios.cfg
检测配置是否正确。
check_nrpe!check_load
:这里的check_nrpe
就是在commands.cfg
刚刚定义的,check_load是远程主机上的一个检测脚本在远程主机上
vim /etc/nagios/nrpe.cfg
搜索check_load
,这行就是在服务端上要执行的脚本了,可以手动执行这个脚本把
check_hda1
更改一下:/dev/hda1
改为/dev/sda1
再加一行
command[check_hda2]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda2
客户端上重启一下nrpe服务:
service nrpe restart
服务端也重启一下nagios服务:
service nagios restart
PS:表示出现
(Return code of 255 is out of bounds)
错误提示,现在无法解决,以后遇到再想办法。
vim /etc/nagios/objects/contacts.cfg
增加如下代码:
define contact{ contact_name switch use generic-contact alias switch email [email protected] }
最关键的是email这个参数
关于定义的service可以在这里定义告警策略:
vim /etc/nagios/objects/templates.cfg
搜索
generic-service
这个文件中定义了诸多监控告警策略,一些重要参数如下所示:
>
notifications_enabled
: 是否开启提醒功能。1为开启,0为禁用。一般,这个选项会在主配置文件nagios.cfg
中定义,效果相同。
notification_interval
: 表示重复发送提醒信息的最短间隔时间。默认间隔时间是60分钟。如果这个值设置为0,将不会发送重复提醒。
notification_period
: 发送提醒的时间段。非常重要的主机(服务),定义为7×24表示一天24小时都会提示。一般的主机(服务)就定义为上班时间。如果不在定义的时间段内,无论什么问题发生,都不会发送提醒。
notification_options
: 这个参数定义了发送提醒包括的情况:d = 状态为DOWN
, u = 状态为UNREACHABLE
, r = 状态恢复为OK
, f =flapping
。,n=不发送提醒。发送邮件需要安装邮件服务
yum install -y sendmail
重启nagios服务:
service nagios restart
基于web的开源软件,开源监控系统状态也可以监控网络设备。
和nagios不同的是zabbix会把获取的数据保存在数据库中,所以zabbix需要有数据库支持
Zabbix还可以自动发现主机和网络设备
支持邮件和短信告警
Zabbix大多配置都可以在web界面配置完成
官网http://www.zabbix.com/
rpm -ivh http://www.lishiming.net/data/attachment/forum/month_1211/epel-release-6-7.noarch.rpm
安装rpm包的lamp环境:
yum install -y httpd mysql mysql-libs php php-mysql mysql-server php-bcmath php-gd php-mbstring
安装zabbix服务端:
yum install zabbix20 zabbix20-agent zabbix20-server zabbix20-server-mysql zabbix20-web zabbix20-web-mysql net-snmp-devel
service zabbix-server start; service zabbix-agent start
service httpd start; service mysqld start
mysql -uroot -p -e "create database zabbix"
mysql -uroot -p --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/schema.sql
mysql -uroot -p --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/images.sql
mysql -uroot -p --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/data.sql
service httpd restart
浏览器访问 http://ip/zabbix, 默认会有
"It is not safe to rely on the system‘s timezone settings..."这样的警告信息,需要
vim /etc/php.ini设置
date.timezone=”Asia/Shanghai”`点next解决相关的报错信息,点retry (在配置文件中解决
vim /etc/php.ini
)PS:修改配置文件最好是重启服务
service httpd restart
输入mysql相关信息, 首先要测试一下,如果不通过,则需要调试,测试通过后,点next
PS:如果出现了
mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
这样的错误信息,则表示sock路径不同,这时候可以用一个软链接解决:mkdir /var/lib/mysql; ln /tmp/mysql.sock /var/lib/mysql/mysql.sock
Name 写
Switch
,(可以自定义)点next,再点next,最后点finish默认管理员账号:密码为
admin:zabbix
这时会遇到
"zabbix server is not running"
这样的错误,需要编辑一下vim /etc/zabbix/zabbix_server.conf
,配置DBUser, DBPassword,这相当于配置数据库用户名和密码。PS:这个原因是因为没有填写用户名和密码,如果还有错误可以到
vim /etc/zabbix/zabbix_server.conf
日志文件查看错误。PS:zabbix是支持中文的,可以搜索查找。
在客户端上
yum install zabbix20-agent
vim /etc/zabbix_agentd.conf
更改Server=服务端ip;
ServerActive=0.0.0.0:10050; Hostname=switch
(自定义,但要唯一)启动客户端
service zabbix-agent start
服务端上命令行测试:
zabbix_get -s 客户端IP -p10050 -k "system.hostname"
在web界面下,点”configuration” –> “hosts” –> 右上角点”Create Host”
其中host name, visible name自定义,可以选择groups,这里默认即可,ip address 写入客户端ip
配置监控项目模板:点“templates”, 点add, 在弹出的小窗口中选择Template OS Linux, 然后点select, 最后点save
PS:修改主机名
hostname 主机名
参考《跟阿铭学Linux》