同志们啊,真是久违了啊,老久没来更新俺的博客了,实在是这段时间老忙了,不忙的时候又老没兴趣写这玩意。
这段时间抽空整理了下公司所有的服务器,安装了个nagios监控服务器,把公司的几十台linux服务器和几台邮件服务器,文件服务器,路由器,交换机,vpn都监控了下来,再设置了下报警短信,让手机24小时都能收到出问题的报警信息。哎呀......突然发觉我没事情做了!!
nagios服务器的安装俺就不罗嗦了,网上很多非常详细的教程,真的幸苦这些大侠们,让我节省了贼多的研究时间,直接把精力放在后期的优化配置上了。在此,偶也不敢独享,供出来让大家参考,哥们先抛个砖头,有玉的都抛回来。
先说报警短信吧。俺为了省钱,用的是移动的139邮箱,这邮箱有自动短信转发功能,会把邮件转到你的手机上。本来我想用个包月付费形式的,可惜手机太烂(西门子6688),不支持这个功能。就用了个免费的限制70个字的功能。勉强度过了。
因为字数的限制,我就修改了下nagios配置文件,新添加了个notify-host-by-phone 和 notify-service-by-phone的命令:
这段时间抽空整理了下公司所有的服务器,安装了个nagios监控服务器,把公司的几十台linux服务器和几台邮件服务器,文件服务器,路由器,交换机,vpn都监控了下来,再设置了下报警短信,让手机24小时都能收到出问题的报警信息。哎呀......突然发觉我没事情做了!!
nagios服务器的安装俺就不罗嗦了,网上很多非常详细的教程,真的幸苦这些大侠们,让我节省了贼多的研究时间,直接把精力放在后期的优化配置上了。在此,偶也不敢独享,供出来让大家参考,哥们先抛个砖头,有玉的都抛回来。
先说报警短信吧。俺为了省钱,用的是移动的139邮箱,这邮箱有自动短信转发功能,会把邮件转到你的手机上。本来我想用个包月付费形式的,可惜手机太烂(西门子6688),不支持这个功能。就用了个免费的限制70个字的功能。勉强度过了。
因为字数的限制,我就修改了下nagios配置文件,新添加了个notify-host-by-phone 和 notify-service-by-phone的命令:
define command{
command_name notify-host-by-phone
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "$NOTIFICATIONTYPE$:$HOSTNAME$:$HOSTSTATE$" $CONTACTEMAIL$
}
define command{
command_name notify-service-by-phone
command_line /usr/bin/printf "%b" "$NOTIFICATIONTYPE$:Service: $SERVICEDESC$\nHost: $HOSTALIAS$:State: $SERVICESTATE$:$SERVICEOUTPUT$" | /bin/mail -s "H:$HOSTALIAS$:$SERVICESTATE$:$SERVICEOUTPUT$" $CONTACTEMAIL$
}
command_name notify-host-by-phone
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "$NOTIFICATIONTYPE$:$HOSTNAME$:$HOSTSTATE$" $CONTACTEMAIL$
}
define command{
command_name notify-service-by-phone
command_line /usr/bin/printf "%b" "$NOTIFICATIONTYPE$:Service: $SERVICEDESC$\nHost: $HOSTALIAS$:State: $SERVICESTATE$:$SERVICEOUTPUT$" | /bin/mail -s "H:$HOSTALIAS$:$SERVICESTATE$:$SERVICEOUTPUT$" $CONTACTEMAIL$
}
然后再在contacts.cfg中新添加了个手机的联系人,将此联系人添加到相应的联系人组内。如此这般,系统就会发送报警到这个邮箱,然后这个邮箱再转发到手机。
define contact{
contact_name carywu
alias sys admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-phone
host_notification_commands notify-host-by-phone
email
}
contact_name carywu
alias sys admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-phone
host_notification_commands notify-host-by-phone
}
###OK ,以上是报警短信设置,非常简单####
###下面再来介绍下监控DELL Openmanage服务的安装过程#####
由于很多公司的服务器都是DELL的服务器,DELL的openmanage软件确实不错,可以监控服务器的硬盘,内存,电源等运行状态。通过网页就能一览无遗,而且还支持SNMP协议。所以,我们可以通过nagios插件来监控这个服务。
首先要做的是将DELL Openmanage软件包安装到服务器上,这个我就不说了。有一个需要说明的就是还得把SNMP软件包安装上。
#打开添加与删除程序,添加组件:选择simple Network Management Protocol服务。
##安装好后,再在运行里输入services.msc,打开服务列表,选择SNMP services,修改安全设置:
####OK ,DELL服务器端设置完毕######
#### 以下开始nagios服务器的配置了#####
1 :从nagiosexchange网站下载高手写好的插件程序,我贴出URL:
2 :将这个文件 copy 到 /usr/local/nagios/libexec 目录下(我安装的 nagios 在此目录),改名为 : check_dell_openmanage.pl
我们来看下它的用法:
Usage: ./check_dell_openmanage.pl [-v] -H <host> -C <snmp_community> [-2] | (-l login -x passwd) [-P <port>] -T test|dellom|dellom_storage|blade|global|chassis|custom [-f] [-t <timeout>] [-V] [-u <unknown_default>]
-v, --verbose #显示是否NET:SNMP正常
print extra debugging information
-h, --help
print this help message
-H, --hostname=HOST #DELL服务器IP/hostname
name or IP address of host to check
-C, --community=COMMUNITY NAME #就是前面设置的community
community name for the host's SNMP agent (implies v 1 protocol)
-2, --v2c
use SNMP v2 (instead of SNMP v1)
-P, --port=PORT
SNMPd port (Default 161)
-t, --timeout=INTEGER
timeout for SNMP in seconds (Default: 5)
-V, --version
prints version number
-u, --unknown_default=INT
If attribute is not found then report the output as this number (i.e. -u 0)
-T, --type=test|dellom|dellom_storage|blade|global|chassis|custom
This allows to use pre-defined system type
Currently support systems types are:
test (tries all OID's in verbose mode can be used to generate new system type)
dellom (Dell OpenManage general detailed)
dellom_storage (Dell OpenManage plus Storage Management detailed)
blade (some features are on the chassis not the blade)
global (only check the global health status)
chassis (only check the system chassis health status)
custom (intended for customization)
-v, --verbose #显示是否NET:SNMP正常
print extra debugging information
-h, --help
print this help message
-H, --hostname=HOST #DELL服务器IP/hostname
name or IP address of host to check
-C, --community=COMMUNITY NAME #就是前面设置的community
community name for the host's SNMP agent (implies v 1 protocol)
-2, --v2c
use SNMP v2 (instead of SNMP v1)
-P, --port=PORT
SNMPd port (Default 161)
-t, --timeout=INTEGER
timeout for SNMP in seconds (Default: 5)
-V, --version
prints version number
-u, --unknown_default=INT
If attribute is not found then report the output as this number (i.e. -u 0)
-T, --type=test|dellom|dellom_storage|blade|global|chassis|custom
This allows to use pre-defined system type
Currently support systems types are:
test (tries all OID's in verbose mode can be used to generate new system type)
dellom (Dell OpenManage general detailed)
dellom_storage (Dell OpenManage plus Storage Management detailed)
blade (some features are on the chassis not the blade)
global (only check the global health status)
chassis (only check the system chassis health status)
custom (intended for customization)
3: 首先确认下你的 nagios 服务器上是否安装好 perl NET:SNMP 软件包,如果你没安装,没关系,我已经帮你搞到这些软件了,我的服务器系统是 RHEL 4, 如果你的和我不同,那请自己去网上搜去吧。
相关软件:(由于安装 NET-SNMP 会牵出一系列依赖包,俺一并列出来算了。有遗漏的请自己去搜吧)
相关软件:(由于安装 NET-SNMP 会牵出一系列依赖包,俺一并列出来算了。有遗漏的请自己去搜吧)
##### 相关软件下载 URL#######
NET:SNMP
NET:SNMP
CRYPT:DES ( 依赖包 )
PERL(socket6)
PERL(Digest:HMAC)
PERL(Digest:SHA1)
##### 结束软件下载 ######
4 :编辑 /usr/local/nagios/etc/object/commands.cfg 文件,添加以下新的命令:
define command{
define command{
command_name check_dell_open_manage
command_line $USER1$/check_dell_openmanage.pl -H $HOSTADDRESS$ -C $ARG1$ -T $ARG2$
}
5 :新建立个 cfg 文件,添加你需要监控的主机及相关的服务。注意,这个新添加的 .cfg 文件需要在 nagios.cfg 文件中注册。比如我添加的名字为 checkopenmanage.cfg 文件,存在 objects 目录中,需要在 nagios.cfg 中添加一条: cfg_file=/usr/local/nagios/etc/objects/checkopenmanage.cfg
5 :新建立个 cfg 文件,添加你需要监控的主机及相关的服务。注意,这个新添加的 .cfg 文件需要在 nagios.cfg 文件中注册。比如我添加的名字为 checkopenmanage.cfg 文件,存在 objects 目录中,需要在 nagios.cfg 中添加一条: cfg_file=/usr/local/nagios/etc/objects/checkopenmanage.cfg
define service{
use generic-service
host_name XXXXXXXX #DELL 服务器定义名
service_description Dell OpenManage Status
check_command check_dell_open_manage!mailsrv!dellom
normal_check_interval 3
retry_check_interval 1
}
define service{
use generic-service
host_name XXXXXXXX #DELL 服务器定义名
service_description Dell OpenManage Status plus Storage
check_command check_dell_open_manage!mailsrv!dellom_storage
normal_check_interval 3
retry_check_interval 1
}
6: 看看结果吧!!!
#####以上就是偶举的两个例子了,一个是报警短信,一个是安装监控插件。
俺还抽空把硬盘,CPU,NIS,MYSQL,APACHE,POP3/SMTP等等服务都给监控起来了。只要一有问题,手机会在20~2分钟内收到报警短信。如果在家,可以通过VPN登录内网进行管理。如果在公司,那就直奔主题了......
俺还抽空把硬盘,CPU,NIS,MYSQL,APACHE,POP3/SMTP等等服务都给监控起来了。只要一有问题,手机会在20~2分钟内收到报警短信。如果在家,可以通过VPN登录内网进行管理。如果在公司,那就直奔主题了......
朋友们那,想省钱的就赶紧弄个监控系统吧,只要一个P3系统就可以搞定.....也让老板改变以往对IT是花钱的主的观念转变下了.....