监控服务器存活的脚本,用ruby写的,需要安装有action_mailer gem,
检测主机的80端口是否可用
失败次数记录,超过指定次数判定主机Down掉
发送通知邮件到指定邮箱
在前面的日志中有说明怎样连接gmail来发送邮件的
require 'rubygems' require 'action_mailer' require 'ping' require 'fileutils' require 'tlsmail' #need install tlsmail gem to support TLS connect Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE) #发送通知from账户设置 ActionMailer::Base.smtp_settings = { :address => 'smtp.gmail.com', :port => '25', :domain => 'gmail.com', :user_name => 'username', :password => 'passwd', :authentication => :login } #recp: 收到通知的邮箱地址,可以填多个地址,逗号分隔 #sub: 邮件主题 #bo: 邮件内容 class SimpleMailer < ActionMailer::Base def simple_message(recp, sub, bo) from 'sender@gmail.com' recipients recp subject sub body bo end end class ServerMonitor def initialize #config @hit = 5 #最大失败次数,达到后才会发送邮件,避免误报 @tmp = "/tmp/server_monitor_tmp" #计数器地址 @recp = 'mytake6@gmail.com, std8545@yahoo.com.cn' #收信的邮箱地址 @host = ['www.ccok.me', 'www.google.com'] #需要监控的主机 #do not touch these @hosts = Struct.new(:host, :status) @servers, @msg = [], [] @host.each { |h| @servers << @hosts.new(h, true) } FileUtils.mkdir(@tmp) unless File.exists? @tmp end def run @servers.each do |s| num = Ping.pingecho(s.host, 5, 80) ? 0 : rf(s.host) + 1 File.open(dest(s.host), 'w') { |f| f.puts num } end @servers.each do |e| if rf(e.host) == @hit e.status = false File.open(dest(e.host), 'w') { |f| f.puts 0 } end end send_mail end def rf file return 0 unless File.exist?(dest(file)) File.open(dest(file), 'r').readlines.to_s.chomp.to_i end def dest host "#{@tmp}/#{host}" end def send_mail @servers.each { |m| @msg << m.host unless m.status } SimpleMailer.deliver_simple_message @recp, "server monitor", @msg.join(', ') + " is Down!!! " unless @msg.empty? end end #go ServerMonitor.new.run
可以放到crontab中每2分钟运行一次
2009-05-21 14:20:44, 597 reviews
send to mailbox
过两天要给一台服务器做Soft Raid, 以前在RHEL上做过, 由于这次要求的平台是Debian, 所以就查了些资料, 又虚拟机里做了下, 步骤和在RHEL中几乎一样(意料之中的, 都是Linux嘛:)), 就是在系统安装分区时设置raid分区格式就行了, 最后再挂载文件系统,
在查资料的过程中,一些资料比较老了, 从里面可以看到Debian早期的版本中(可能是3.0以前)安装soft raid在系统开始安装时需要输入boot的引导参数:
$expert
进入专家模式, 然后还要手工从光盘中加载raid的模块, 这样再分区时才会提供raid的支持, 由于我使用的是最新的4.0版本, 所以在从光盘中选择手工加载raid模块时, 提示说, 默认的已经加载了所有可能需要的模块了, 因此这个步骤就没了, 只用直接往下走就行了,
比起Debian和RHEL soft raid的区别主要在于, 前者使用的raid工具是mdadm, 而RHEL默认的是raidtools, 当然作用都是一样的.
这里重要说一下, 两块硬盘在设置soft raid时一定要注意GRUB的安装位置, 即/boot分区的位置, /boot分区不能安装在LVM和raid中, 否则将无法引导系统, 因此需要单独划一分区出来安装/boot分区, 还有就是 swap分区也没有必要做在raid中, 网上有一个说法是可以把/boot分区也安装在raid分区中, 不过需要修改/boot/grub/menu.lst文件中内核镜像的位置, 把对应的设备改成raid设备md(n), 这个应该是行的通的, 不过我没试过,
LVM和soft raid结合时, 理想的做法是, 为/boot和swap分区单独拿出来磁盘空间, 然后把剩下硬盘的空间全部划为一个物理分区, 做成raid, 然后再在raid设备上面 建立LVM的PV, VG和LV, 最后挂载文件系统, 这样做的好处就不用多说了, 分区大小就可以按照需求灵活控制了, 但是虽然这时候还可以利用LVM的特性按照需求增加或裁剪磁盘的空间, 但是当raid阵列中的磁盘空间不够时就不能够动态的添加硬盘了, 因为raid阵列中的硬盘是不能动态添加的,虽然LVM具有这样的特性
我参考过的文档连接:
2008-10-29 12:20:22, 669 reviews
just DO NOT support IE