linux perl——发送邮件及监控内存

#!perl
use warnings;
use strict;
use Net::SMTP_auth;

#&sendMail;

while(1)
{
	my ($sumMem, $freeMem, $rateMem);
	open MEM, "cat /proc/meminfo |" or die $!;
	while(<MEM>)
	{
		$sumMem = $1 if(/MemTotal:\s+(\d+)\s+kB/);
		$freeMem += $1 if(/MemFree:\s+(\d+)\s+kB/);
		$freeMem += $1 if(/Buffers:\s+(\d+)\s+kB/);
		$freeMem += $1 if(/Cached:\s+(\d+)\s+kB/);
	}
	$rateMem = sprintf("%d", $freeMem / $sumMem * 100);
	if($rateMem <= 10)
	{
		my $content = &detail;
		&sendMail($content);
		sleep(3600);
	}
	sleep(60);
}

sub detail
{
	`top -bn 1 > log`;
	open LOG, "head -100 log |" or die $!;
	my $content;
	while(<LOG>)
	{
		next if(/^$/);
		my @top = split /\s+/;
		if($top[5] =~ /g|t/ and $top[0] =~ /\d+/)
		{
			$content .= "$top[1]\t$top[5]\t$top[11]\n";
		}
	}
	return $content;
}

sub sendMail
{
	my $content = shift @_;
	my $smtpHost = 'smtp.exmail.qq.com';
	my $smtpPort = '25';

	my $username = '***@genedenovo.com';
	my $passowrd = '***';

	my @to = ('***', '***');
	my $suffix = "\@genedenovo.com";
	my $subject = "请注意19服务器内存使用已超过90%!";

	my $message = "
	Details:
	$content

	来自$username的监控程序";

	my $smtp = Net::SMTP_auth->new($smtpHost, Timeout => 30) or die "Error:连接到$smtpHost失败!";
	$smtp->auth('LOGIN', $username, $passowrd) or die("Error:认证失败!");

		my @address = map {my $i = $_.$suffix; $i} @to;
		my $x = join ", ", @address;

		$smtp->mail($username);
		$smtp->to(@address);
		$smtp->data();
		$smtp->datasend("To: $x\n"); # strict format
		$smtp->datasend("From: $username\n"); # strict format
		$smtp->datasend("Subject: $subject\n"); # strict format
		$smtp->datasend("Content-Type:text/plain;charset=UTF-8\n"); # strict format
		$smtp->datasend("Content-Trensfer-Encoding:7bit\n\n"); # strict format
		$smtp->datasend($message);
		$smtp->dataend();

	$smtp->quit();
}

时间: 2024-11-05 04:35:59

linux perl——发送邮件及监控内存的相关文章

linux 邮件报警,监控内存cup

功能介绍: 1.内存高于设定值及发邮件给系统管理员 2.cup负载过高及发邮件给系统管理员 3.永不退出监控.一直后台监控,如果出现报警后一分钟内没有处理继续发邮件通知 代码如下: Memory=`free -h | awk 'NR==3{print $4}'|cut -c 1-3`#取内存现在有值cup=`uptime | awk '{print $8}' |sed -n 's#[^0-9.]##gp'|cut -c 1`#取cup一分钟现有值,去整数部分即可caojiaoyue () { i

nagios-创建内存监控脚本及监控内存

客户端修改: 1.进入/usr/lib64/nagios/plugins目录下并更改脚本权限 cd /usr/lib64/nagios/plugins vim  check_memory #!/usr/bin/perl -w # $Id: check_memory 2 2002-02-28 06:42:51Z egalstad $ # Original script stolen from: # check_memory Copyright (C) 2000 Dan Larsson # hack

zabbix专题:第九章 自定义key(案例:监控内存,监控nginx状态)

第九章 自定义key 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 为什么要自定义KEY 有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法.我们可以在客户端配置文件zabbix_angentd.conf里面配置UserParameter. 语法如下: UserParameter=key,command 用户自定义参数包含一个key和一个命令,ke

LINUX 查看当前系统的内存使用情况

# free 显示结果如下: Mem:表示物理内存统计 total 内存总数 8057964KB used 已使用的内存 7852484KB free 空闲的内存数 205480KB shared 当前已经废弃不用,总是0 buffers Buffer 缓存内存数: 290432KB cached Page 缓存内存数:5735024KB (存在关系: total = used + free ) -/+ buffers/cached:表示物理内存的缓存统计 (-buffers/cache) us

Linux下Java性能监控

Linux下Java性能监控 一.JVM堆内存使用监控 获取thread dump的3种方法: 1)使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,点击 dumpHeap按钮.生成的dump文件在java应用的根目录下面. 2)jmap -heap 1234 (1234为进程号) 3)cmd ->jvisualvm,远程连接,选择堆Dump生成he

Linux性能优化和监控系列(一)——top工具

解释服务器发生了什么——top工具 在检查服务器的详细工作性能状态前,系统管理员需要对当前服务器状态有总体的了解. top是检查服务器总体状态的强有力工具, 通过top可以获取CPU, Memory, Process运行信息, 如下是运行top命令后的数据显示: top - 20:08:09 up 10 min,  1 user,  load average: 0.00, 0.02, 0.01 Tasks: 104 total,  1 running, 103 sleeping,  0 stop

Linux系统和性能监控之CPU篇

Linux系统和性能监控之CPU篇 性能优化就是找到系统处理中的瓶颈以及去除这些的过程.本文由sanotes.net站长tonnyom在2009年8月翻译自Linux System and Performance Monitoring系列文章.本文是系列的第一篇,讲述CPU方面的性能监控. 作者:tonnyom来源:sanotes.net|2010-12-24 13:25 移动端 收藏 分享 CTO训练营 | 12月3-5日,深圳,是时候成为优秀的技术管理者了 编者注:本文由sanotes.ne

LINUX 查看当前系统的内存使用情况 free

每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code # free 显示结果如下: Mem:表示物理内存统计 total 内存总数 8057964KBused 已使用的内存 7852484KBfree 空闲的内存数 205480KBshared 当前已经废弃不用,总是0buffers Buffer 缓存内存数: 290432KBcached Page 缓存内存数:5735024KB(存在关系: total = used + free )

Linux环境编程之共享内存区(一):共享内存区简介

Spark生态圈,也就是BDAS(伯克利数据分析栈),是伯克利APMLab实验室精心打造的,力图在算法(Algorithms).机器(Machines).人(People)之间通过大规模集成,来展现大数据应用的一个平台,其核心引擎就是Spark,其计算基础是弹性分布式数据集,也就是RDD.通过Spark生态圈,AMPLab运用大数据.云计算.通信等各种资源,以及各种灵活的技术方案,对海量不透明的数据进行甄别并转化为有用的信息,以供人们更好的理解世界.Spark生态圈已经涉及到机器学习.数据挖掘.