首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Unix/Linux 系统自动化管理 邮件系统篇(5)

Unix/Linux 系统自动化管理 邮件系统篇(5)

结合 cron 的系统监控功能实现系统管理人员可以结合 cron 与电子邮件的自动发送功能,实现系统状态的自动监控功能。cron 是一个定时调度任务的守护进程,它可以根据时间、日期、月份、星期的组合来调度任务。关于 cron 的详细教程,读者可以参考在 developerworks 上的教程《 》,或者参考 Internet 上的相关文章。
监控系统 CPU 利用率(LINUX)我们首先实现一个可以获取当前系统 CPU 使用率的 Perl 脚本。它可以获取当前的 CPU 使用率,一旦获取到的 CPU 使用率超过 85%,该脚本就会自动发送电子邮件给指定的用户。注意,该脚本只能运行于 Linux 平台。
具体的 Perl 脚本内容可以参考清单 19。
清单 19. 监控系统 CPU 利用率的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl
use Mail::Mailer;
sub get_cpu_stat {
    my @stats;
    my $fh;
    #Linux 系统,从 /proc/stat 来获取 CPU 信息
    open($fh, "cat /proc/stat |") or die "$!";
    while (<$fh>) {
        #get the cpu stat
        if (/^cpu .*/) {
            @stats = split;
        }
    }
    close $fh;
    #then, we parse the cpu stat information;
   
    #the information from "man proc",
    #the format is for Linux 2.6.11 or higher
    #cpu  user   nice  system idle     iowait irq  softirq steal
    #cpu  628808 1642  61861  24978051 22640  349  3086    0     0
# 数据格式如上所示,更详细的信息请参考 proc 的 manpage
    my $total = $stats[1] + $stats[2] + $stats[3] + $stats[4];
    my $idle = $stats[4];
    # 返回当前 CPU 的 total 和 idle 时间片计数
    return ($total, $idle);
}

my $mailer = Mail::Mailer->new('sendmail');
my ($t1, $i1) = get_cpu_stat();
sleep 5;
my ($t2, $i2) = get_cpu_stat();

my $total = $t2 - $t1;
my $idle = $i2 - $i1;
# 计算获取 5 秒钟之内的 CPU 利用率
my $per = 100 * ($total - $idle) / $total;

if( $per > 85) {
    # 如果 CPU 利用率大于 85%
    my $msg = sprintf("!!!Attention\nThe CPU usage on your server is %.2f"
    . "% right now!\nPlease  check it right now!\n", $per);

    #send mail to the assigned user
    # 发送邮件给指定的用户
    $mailer->open(
        {
            From => 'root@minjun-desktop',
            To => 'minjun.xi@cn.ibm.com',
            Subject => 'Attention for your cluster',
        })
        or die "Mail::Mailer failed!\n";
    print $mailer $msg;

    $mailer->close();
}




配置 cron 任务我们可以利用“crontab”命令来配置 cron 任务;在本文中,我们设定每个小时的第 30 分钟运行一下监控系统 CPU 利用率的脚本。我们使用”crontab – e”命令来编辑当前用户的 cron 任务,编辑的内容如清单 20 所示,其中 mon.pl 是清单 19 中 Perl 脚本的名称,/path/to/ 是指 mon.pl 脚本的路径。
清单 20. 配置 cron 任务
1
30 * * * * perl /path/to/mon.pl

返回列表