文档章节

nagios插件-->内存监控

jastme
 jastme
发布于 2014/06/11 21:47
字数 330
阅读 74
收藏 0
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""

    Nagios plugin to report Memory usage by parsing /proc/meminfo
    by L.S. Keijser <keijser@stone-it.com>
    This script takes Cached memory into consideration by adding that
    to the total MemFree value.
    
    modified by jastme ,can used by pnp4nagios

"""

from optparse import OptionParser
import sys

checkmemver = '0.1'

# Parse commandline options:
parser = OptionParser(usage="%prog -w <warning threshold> -c <critical threshold> [ -h ]",version="%prog " + checkmemver)
parser.add_option("-w", "--warning",
    action="store", type="string", dest="warn_threshold", help="Warning threshold in percentage")
parser.add_option("-c", "--critical",
    action="store", type="string", dest="crit_threshold", help="Critical threshold in percentage")
(options, args) = parser.parse_args()


def readLines(filename):
    f = open(filename, "r")
    lines = f.readlines()
    return lines

def readMemValues():
    global memTotal, memCached, memFree
    for line in readLines('/proc/meminfo'):
        if line.split()[0] == 'MemTotal:':
            memTotal = line.split()[1]
        if line.split()[0] == 'MemFree:':
            memFree = line.split()[1]
        if line.split()[0] == 'Cached:':
            memCached = line.split()[1]

def percMem():
    readMemValues()
    return (((int(memFree) + int(memCached)) * 100) / int(memTotal))

def realMem():
    readMemValues()
    return (int(memFree) + int(memCached)) / 1024

def go():
    if not options.crit_threshold:
        print "UNKNOWN: Missing critical threshold value."
        sys.exit(3)
    if not options.warn_threshold:
        print "UNKNOWN: Missing warning threshold value."
        sys.exit(3)
    if int(options.crit_threshold) >= int(options.warn_threshold):
        print "UNKNOWN: Critical percentage can't be equal to or bigger than warning percentage."
        sys.exit(3)
    trueFree = percMem()
    trueMemFree = realMem()
    if int(trueFree) <= int(options.crit_threshold):
        print "CRITICAL: Free memory percentage is less than or equal to %s%% %s %sMB | mem = %sMB;6546;3273;0;32732"  %(str(options.crit_threshold),str(trueFree),str(trueMemFree),str(trueMemFree))
        sys.exit(2)
    if int(trueFree) <= int(options.warn_threshold):
        print "WARNING: Free memory percentage is less than or equal to %s%% %s %sMB | mem = %sMB;6546;3273;0;32732"  %(str(options.warn_threshold),str(trueFree),str(trueMemFree),str(trueMemFree))
        sys.exit(1)
    else:
        print "OK: Free memory percentage is %s%% %sMB | mem = %sMB;6546;3273;0;32732"  %(str(trueFree),str(trueMemFree),str(trueMemFree))
        sys.exit(0)

if __name__ == '__main__':
    go()


© 著作权归作者所有

共有 人打赏支持
jastme
粉丝 36
博文 135
码字总数 61896
作品 0
成都
程序员
私信 提问
监控之--使用NPRE监控Linux主机

作为Nagios的一个扩展功能插件,NRPE可在远程的linux主机上执行的插件程序。远程的liux服务器通过安装NRPE及Nagios的相关插件程序可以向Nagios服务端监控平台提供自身的情况例如:CPU负载,内...

CARYFLASH
2017/11/10
0
0
linux学习笔记-nagios监控的简单配置

第1章 nagios监控工具介绍及原理 1.1nagios监控工具介绍与优势 Nagios是一款开源的网络及服务的监控工具,其功能强大,灵活性强。能有效监控Window,Linux和Unix的主机各种状态信息,交换机、...

呀哈喽
2017/11/20
0
0
监控利器Nagios之一:监控本地NFS和外部HTTP、MySQL服务

监控利器Nagios之一:监控本地NFS和外部HTTP、MySQL服务 Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务...

于学康
2017/06/20
0
0
Centos 7安装与配置nagios监控(一)

目 录 序言(必备知识) 一、安装规划 1.1系统环境 1.2所需软件包 二、配置安装环境 2.1同步时间 2.2禁用SElinux 2.3 xftp上传软件包 2.4安装邮件服务 三、监控主机安装 3.1安装nagios的运行环...

SEianG
2017/04/15
0
0
监控利器Nagios之二:Nagios的细致介绍和监控外部服务器的私有信息

监控利器Nagios之二:Nagios的细致介绍和监控外部服务器的私有信息 Nagios的监控对象的定义和对被监控设备的动作命令是分开的。一个是主程序包,一个是插件包。先来说说nagios主程序nagios-...

于学康
2017/06/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js和OC交互

0.html+js 0.1html 代码 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> #colordv{ width: 100px;......

walking_yxf
3分钟前
0
0
点播转码相关常见问题及排查方式

概述: 点播转码目前涉及用户上传自动触发转码、通过SubmitTranscodeJobs接口触发转码等方式,会出现用户转码失败的情况,这当中有用户源片的问题、也有用户设置转码参数的原因以及相关资源性...

阿里云官方博客
5分钟前
0
0
工作笔记

Oracle锁表 查找被锁的表 select l.session_id,o.owner,o.object_namefrom v$locked_object l,dba_objects owhere l.object_id=o.object_id; 查找引发锁表的会话 select s.username,s.si......

呼呼南风
7分钟前
0
0
并发工具优于wati、notify(69)

现在几乎没有理由在使用wait 和 notify,使用高级工具代替 java.util.concurrent 包并发工具分三类: Executor 框架 并发集合(concurrent Collection) 同步器(synchronizer) 并发集合 对...

Java搬砖工程师
14分钟前
0
0
AutoCAD_系统变量

https://baike.sogou.com/v53561514.htm?fromTitle=cad%E5%8F%98%E9%87%8F lunits 设置线性单位。1 科学 2 小数 3 工程 4 建筑 5 分数 6 windesk...

一个小妞
21分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部