`
zhengdl126
  • 浏览: 2543206 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

python脚本监控Linux磁盘空间使用率

 
阅读更多
【转载】http://blog.chinaunix.net/uid-26978448-id-3408364.html


#cat check_snmp_storage.py

 

 

  1. #! / usr/ bin/ python
  2. #_* _ coding: utf- 8 _* _
  3. #_* _ coding: cp950 _* _

  4. '' '
  5. Create date: 2012-10-30
  6. Last update: 2012-10-30
  7. Version: 1.0
  8. Description: Monitor Disk usage
  9. Author: Victor
  10. QQ:1409175531
  11. '''

  12. import sys
  13. import netsnmp
  14. from decimal import *


  15. def help( ) :
  16.   print '' 'Usage:
  17. sys.argv[0] <Community> <Host> <Device> <Warning_threshold> <Critical_threshold>'''


  18. if len( sys. argv) < 6:
  19.   help( )
  20.   sys. exit( 3)
  21. elif sys. argv[ 4] > sys. argv[ 5] :
  22.   print 'Critical_threshold must be more than Warning_threshold'
  23.   sys. exit( 3)


  24. try :
  25.   session = netsnmp. Session( Version= 2, Community= sys. argv[ 1] , DestHost= sys. argv[ 2] )
  26. except IndexError :
  27.   sys. exit( 3)

  28. oid01 = netsnmp. Varbind( 'hrStorageDescr' )
  29. oid02 = netsnmp. Varbind( 'hrStorageSize' )
  30. oid03 = netsnmp. Varbind( 'hrStorageUsed' )
  31. oid04 = netsnmp. Varbind( 'hrStorageAllocationUnits' )

  32. oidlist01 = netsnmp. VarList( oid01)
  33. oidlist02 = netsnmp. VarList( oid02)
  34. oidlist03 = netsnmp. VarList( oid03)
  35. oidlist04 = netsnmp. VarList( oid04)

  36. rl01 = session. walk( oidlist01)
  37. rl02 = session. walk( oidlist02)
  38. rl03 = session. walk( oidlist03)
  39. rl04 = session. walk( oidlist04)

  40. try :
  41.   units = dict( zip( rl01, rl04) ) [ sys. argv[ 3] ]
  42.   total = Decimal( dict( zip( rl01, rl02) ) [ sys. argv[ 3] ] ) * Decimal( units) / Decimal( 1024) / Decimal( 1024)
  43.   used_1 = dict( zip( rl01, rl03) ) [ sys. argv[ 3] ]
  44.   used_2 = Decimal( used_1) * Decimal( units) / Decimal( 1024) / Decimal( 1024)
  45. except KeyError :
  46.   print 'Timeout or please check syntax/community/Host or other params.'
  47.   sys. exit( 3)

  48. getcontext( ) . prec = 2

  49. used_percent = int( Decimal( used_2) / Decimal( total) * Decimal( 100) )

  50. warning = Decimal( total) * Decimal( sys. argv[ 4] )
  51. w_threshold = int( warning)
  52. w_percent = Decimal( sys. argv[ 4] ) * Decimal( 100)

  53. critical = Decimal( total) * Decimal( sys. argv[ 5] )
  54. c_threshold = int( critical)
  55. c_percent = Decimal( sys. argv[ 5] ) * Decimal( 100)

  56. if used_percent < w_percent:
  57.   print 'OK - "%s" 使用了:%s%% | 总容量:%s MB , 已使用:%s MB (w:%s%%, c:%s%%)' % ( sys. argv[ 3] , used_percent, int( total) , int( used_2) , w_percent, c_percent)
  58.   sys. exit( 0)
  59. elif c_percent > used_percent > = w_percent:
  60.   print 'Warning - "%s" 使用了:%s%% | 总容量:%s MB , 已使用:%s MB (w:%s%%, c:%s%%)' % ( sys. argv[ 3] , used_percent, int( total) , int( used_2) , w_percent, c_percent)
  61.   sys. exit( 1)
  62. elif used_percent > c_percent:
  63.   print 'Critical - "%s" 使用了:%s%% | 总容量:%s MB , 已使用:%s MB (w:%s%%, c:%s%%)' % ( sys. argv[ 3] , used_percent, int( total) , int( used_2) , w_percent, c_percent)
  64.   sys. exit( 2)
  65. elif not used_2:
  66.   print 'Unknown'
  67.   sys. exit( 3)
  68. else :
  69.   print 'Unknown'
  70.   sys. exit( 3)

 

 

 

 

 

将脚本check_snmp_storage.py放到/usr/local/nagios/libexec目录下,给执行权限。直接执行脚本可以看到脚本的用法:

#python check_snmp_storage.py 

Usage:
sys.argv[0] <Community> <Host> <Device> <Warning_threshold> <Critical_threshold>

    <Device>  设备名,如“Physical memory”、“Swap space”、 “/usr/local”等,如果不确定设备名,可先使用snmpdf查看,如:
<Device>  需要与上图Description列的名字吻合,大小写必须一致,否则脚本通过snmp去取数据时会找不到设备。

    <Warning_threshold> 和<Critical_threshold>是报警阀值,用小数点表示,如0.8表示80%,0.9表示90%。

举例:

commands.cfg配置如下:
define command{
    command_name check_snmp_storage
    command_line $USER1$/check_snmp_storage.py $ARG1$ $HOSTADDRESS$ $ARG2$ $ARG3$ $ARG4$ $ARG5$
}

services.cfg配置如下:
define service{
        use                             service02
        host_name                   test
        service_description       Mem
        notifications_enabled     0
        check_command          check_snmp_storage_v4!public!'Physical memory'!0.85!0.9
}

以上完成后重启nagios服务,效果图如下:

分享到:
评论

相关推荐

    Python监控CentOS磁盘空间,磁盘空间利用大于80%则发邮件通知

    Python监控CentOS磁盘空间,磁盘空间利用大于80%则发邮件通知。

    使用Python脚本对Linux服务器进行监控的教程

    为了监控CPU使用情况,我们可以读取`/proc/stat`文件。以下是一个简单的示例脚本(CPU1.py),用于收集CPU信息: ```python #!/usr/bin/env Python from __future__ import print_function from collections import...

    linux主机状态监控python脚本

    监控 CPU 温度, 内存使用量MB, CPU单核使用率(此项不太准), 网络流入差量KB , 流出差量KB, 运行时间 (小时数),磁盘剩余空间MB, 定时 15秒,将数据上传到 yeelink 免费网站. 修改代码, 更正apikey 和URL中数字为你...

    监控LINUX服务器内存、CPU、磁盘路径等信息钉钉、企业微信机器人发送消息提醒脚本.txt

    监控LINUX服务器内存、CPU、磁盘路径等信息钉钉、企业微信机器人发送消息提醒脚本,可使用定时任务来完成此功能

    python3.6.5-python脚本实现软硬件监控服务.zip

    "软硬件监控"通常涉及收集系统性能数据,例如CPU利用率、内存使用情况、磁盘空间、网络活动等。Python提供了一个名为psutil(Process and System Utilities)的库,它非常适合这样的任务。psutil是一个跨平台库,...

    Python监控DB服务器信息脚本

    脚本可以监控 DB 服务器的 CPU 使用率、磁盘空间使用率、进程信息等,并可以发送警告信息到邮箱或手机。 6. 结论 本文档详细讲解了 Python 监控 DB 服务器信息脚本的实现原理和技术要点。通过本文档,可以了解到 ...

    python3.6.5-python脚本实现软硬件监控服务.rar

    在Python脚本中,你可以使用`psutil.cpu_percent()`来获取CPU使用率,`psutil.virtual_memory()`来获取内存信息,以及`psutil.disk_usage()`来检查磁盘空间。 在硬件监控方面,除了上述的CPU、内存和磁盘,还可以...

    python脚本实现linux服务器监控_图文(最新可编辑文档).doc

    Python脚本在Linux服务器监控中的应用 在Linux环境中,通过Python编写脚本可以方便地实现对服务器各项指标的监控,例如CPU使用率、内存状态、负载平均值等关键信息。以下是一个利用Python来获取和解析`/proc`目录下...

    python3监控CentOS磁盘空间脚本

    4. 当某个分区的磁盘使用率超过80%时,脚本会自动通过电子邮件通知管理员或相关人员。 5. 管理员收到邮件后,可以根据邮件中提供的信息检查对应分区,清理空间或进行相应的处理。 此脚本具有一定的参考价值,尤其...

    php监控linux流量,cpu利用率,磁盘利用率,内存利用率

    通过这个项目,你可以建立一个自定义的Linux监控系统,它不仅能提供实时的系统状况反馈,还能生成历史趋势报告,帮助管理员更好地理解和优化服务器性能。记住,持续监控和调整是保持系统高效运行的关键。

    Python监控本地CPU内存,写入文件

    创建一个文件,并以适当的格式将时间、CPU使用率和内存使用率写入文件。可以使用CSV或其他文本格式。 控制循环频率: 可以使用time.sleep()函数控制每次循环之间的延迟时间,以调整数据采集的频率。 退出循环并关闭...

    Python.Unix和Linux系统管理指南 源代码

    源代码可能包含用于监控系统性能(如CPU使用率、内存占用、磁盘空间等)的脚本。Python的`psutil`库可以获取这些信息,而`systemd`或`inotify`相关的脚本则可以监控系统事件和文件系统变动。 6. **权限和用户管理*...

    python服务器资源、服务巡检脚本 输出到execl标红

    2. **服务器资源检查**:可能包括CPU使用率、内存使用情况、磁盘空间、网络带宽利用率等。这些信息可以通过Python的系统接口如`psutil`库获取,该库提供了跨平台的方式来获取系统信息。 3. **服务状态监测**:脚本...

    基于python的Linux系统指定进程性能监控

    在本文中,我们将深入探讨如何使用Python来实现对Linux系统中特定进程的性能监控。监控系统性能对于确保服务稳定性和优化资源使用至关重要。基于Python的监控解决方案提供了灵活性和易用性,使得我们可以根据需求...

    用PYTHON脚本实现对LINUX服务器的监控-综合文档

    本篇将详细介绍如何用Python脚本实现对Linux服务器的监控。 一、Python基础 在开始编写监控脚本之前,你需要了解Python的基础语法和常用库。Python提供了丰富的标准库和第三方库,如os、sys、time等,它们在服务器...

    使用Python监控本机资源情况写入InfluxDB并使用Grafana监控

    使用Python监控本机资源情况写入InfluxDB并使用Grafana监控,对CPU,内存,磁盘使用率,网络流量进行监控并展现。具体内容请参考我的博客,谢谢。 https://blog.csdn.net/wsdc0521/article/details/106082411

    基于zabbix基础的监控模板和脚本

    创建自定义模板是提高监控效率的关键步骤,可以根据业务需求定制监控项,如CPU使用率、内存占用、磁盘空间、网络流量等。通过模板,你可以确保所有系统都遵循一致的监控标准。 描述中的"基于zabbix基础的监控模板...

    Python for Unix and Linux System Administration

    - **监控工具开发**:教授如何编写Python脚本来收集系统资源(CPU、内存、磁盘I/O)的使用情况。 - **日志分析**:利用Python处理日志文件,自动分析并报告异常行为或性能瓶颈。 4. **自动化运维任务** - **...

    python unix和linux系统管理指南

    - **系统监控与报警**:利用Python可以实时监控系统的CPU使用率、内存使用情况、磁盘空间等,并在特定条件下触发警报。 ### 2. 常用的Python库 - **subprocess模块**:用于执行shell命令,可以在Python脚本中调用...

    用python编写nagios hadoop监控脚本

    1. `check_hadoop_dfs.py`:这个脚本很可能是用来监控Hadoop分布式文件系统的健康状况,包括磁盘空间使用情况、数据节点状态等关键指标。Nagios监控脚本通常会返回一个状态码,Nagios根据状态码判断服务是否正常,并...

Global site tag (gtag.js) - Google Analytics