【转载】http://blog.chinaunix.net/uid-26978448-id-3408364.html
#cat check_snmp_storage.py
- #!
/
usr/
bin/
python
- #_*
_ coding:
utf-
8 _*
_
- #_*
_ coding:
cp950 _*
_
-
''
'
- Create date: 2012-10-30
- Last update: 2012-10-30
- Version: 1.0
- Description: Monitor Disk usage
- Author: Victor
- QQ:1409175531
- '''
-
import
sys
-
import
netsnmp
-
from
decimal import
*
-
def
help(
)
:
- print
''
'Usage:
- sys.argv[0] <Community> <Host> <Device> <Warning_threshold> <Critical_threshold>'''
-
if
len(
sys.
argv)
<
6:
- help(
)
- sys.
exit(
3)
-
elif
sys.
argv[
4]
>
sys.
argv[
5]
:
- print
'Critical_threshold must be more than Warning_threshold'
- sys.
exit(
3)
-
try
:
- session =
netsnmp.
Session(
Version=
2,
Community=
sys.
argv[
1]
,
DestHost=
sys.
argv[
2]
)
-
except
IndexError
:
- sys.
exit(
3)
- oid01 =
netsnmp.
Varbind(
'hrStorageDescr'
)
- oid02 =
netsnmp.
Varbind(
'hrStorageSize'
)
- oid03 =
netsnmp.
Varbind(
'hrStorageUsed'
)
- oid04 =
netsnmp.
Varbind(
'hrStorageAllocationUnits'
)
- oidlist01 =
netsnmp.
VarList(
oid01)
- oidlist02 =
netsnmp.
VarList(
oid02)
- oidlist03 =
netsnmp.
VarList(
oid03)
- oidlist04 =
netsnmp.
VarList(
oid04)
- rl01 =
session.
walk(
oidlist01)
- rl02 =
session.
walk(
oidlist02)
- rl03 =
session.
walk(
oidlist03)
- rl04 =
session.
walk(
oidlist04)
-
try
:
- units =
dict(
zip(
rl01,
rl04)
)
[
sys.
argv[
3]
]
- total =
Decimal(
dict(
zip(
rl01,
rl02)
)
[
sys.
argv[
3]
]
)
*
Decimal(
units)
/
Decimal(
1024)
/
Decimal(
1024)
- used_1 =
dict(
zip(
rl01,
rl03)
)
[
sys.
argv[
3]
]
- used_2 =
Decimal(
used_1)
*
Decimal(
units)
/
Decimal(
1024)
/
Decimal(
1024)
-
except
KeyError
:
- print
'Timeout or please check syntax/community/Host or other params.'
- sys.
exit(
3)
- getcontext(
)
.
prec =
2
- used_percent =
int(
Decimal(
used_2)
/
Decimal(
total)
*
Decimal(
100)
)
- warning =
Decimal(
total)
*
Decimal(
sys.
argv[
4]
)
- w_threshold =
int(
warning)
- w_percent =
Decimal(
sys.
argv[
4]
)
*
Decimal(
100)
- critical =
Decimal(
total)
*
Decimal(
sys.
argv[
5]
)
- c_threshold =
int(
critical)
- c_percent =
Decimal(
sys.
argv[
5]
)
*
Decimal(
100)
-
if
used_percent <
w_percent:
- 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)
- sys.
exit(
0)
-
elif
c_percent >
used_percent >
=
w_percent:
- 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)
- sys.
exit(
1)
-
elif
used_percent >
c_percent:
- 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)
- sys.
exit(
2)
-
elif
not
used_2:
- print
'Unknown'
- sys.
exit(
3)
-
else
:
- print
'Unknown'
- 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%则发邮件通知。
为了监控CPU使用情况,我们可以读取`/proc/stat`文件。以下是一个简单的示例脚本(CPU1.py),用于收集CPU信息: ```python #!/usr/bin/env Python from __future__ import print_function from collections import...
监控 CPU 温度, 内存使用量MB, CPU单核使用率(此项不太准), 网络流入差量KB , 流出差量KB, 运行时间 (小时数),磁盘剩余空间MB, 定时 15秒,将数据上传到 yeelink 免费网站. 修改代码, 更正apikey 和URL中数字为你...
监控LINUX服务器内存、CPU、磁盘路径等信息钉钉、企业微信机器人发送消息提醒脚本,可使用定时任务来完成此功能
"软硬件监控"通常涉及收集系统性能数据,例如CPU利用率、内存使用情况、磁盘空间、网络活动等。Python提供了一个名为psutil(Process and System Utilities)的库,它非常适合这样的任务。psutil是一个跨平台库,...
脚本可以监控 DB 服务器的 CPU 使用率、磁盘空间使用率、进程信息等,并可以发送警告信息到邮箱或手机。 6. 结论 本文档详细讲解了 Python 监控 DB 服务器信息脚本的实现原理和技术要点。通过本文档,可以了解到 ...
在Python脚本中,你可以使用`psutil.cpu_percent()`来获取CPU使用率,`psutil.virtual_memory()`来获取内存信息,以及`psutil.disk_usage()`来检查磁盘空间。 在硬件监控方面,除了上述的CPU、内存和磁盘,还可以...
Python脚本在Linux服务器监控中的应用 在Linux环境中,通过Python编写脚本可以方便地实现对服务器各项指标的监控,例如CPU使用率、内存状态、负载平均值等关键信息。以下是一个利用Python来获取和解析`/proc`目录下...
4. 当某个分区的磁盘使用率超过80%时,脚本会自动通过电子邮件通知管理员或相关人员。 5. 管理员收到邮件后,可以根据邮件中提供的信息检查对应分区,清理空间或进行相应的处理。 此脚本具有一定的参考价值,尤其...
通过这个项目,你可以建立一个自定义的Linux监控系统,它不仅能提供实时的系统状况反馈,还能生成历史趋势报告,帮助管理员更好地理解和优化服务器性能。记住,持续监控和调整是保持系统高效运行的关键。
创建一个文件,并以适当的格式将时间、CPU使用率和内存使用率写入文件。可以使用CSV或其他文本格式。 控制循环频率: 可以使用time.sleep()函数控制每次循环之间的延迟时间,以调整数据采集的频率。 退出循环并关闭...
源代码可能包含用于监控系统性能(如CPU使用率、内存占用、磁盘空间等)的脚本。Python的`psutil`库可以获取这些信息,而`systemd`或`inotify`相关的脚本则可以监控系统事件和文件系统变动。 6. **权限和用户管理*...
2. **服务器资源检查**:可能包括CPU使用率、内存使用情况、磁盘空间、网络带宽利用率等。这些信息可以通过Python的系统接口如`psutil`库获取,该库提供了跨平台的方式来获取系统信息。 3. **服务状态监测**:脚本...
在本文中,我们将深入探讨如何使用Python来实现对Linux系统中特定进程的性能监控。监控系统性能对于确保服务稳定性和优化资源使用至关重要。基于Python的监控解决方案提供了灵活性和易用性,使得我们可以根据需求...
本篇将详细介绍如何用Python脚本实现对Linux服务器的监控。 一、Python基础 在开始编写监控脚本之前,你需要了解Python的基础语法和常用库。Python提供了丰富的标准库和第三方库,如os、sys、time等,它们在服务器...
使用Python监控本机资源情况写入InfluxDB并使用Grafana监控,对CPU,内存,磁盘使用率,网络流量进行监控并展现。具体内容请参考我的博客,谢谢。 https://blog.csdn.net/wsdc0521/article/details/106082411
创建自定义模板是提高监控效率的关键步骤,可以根据业务需求定制监控项,如CPU使用率、内存占用、磁盘空间、网络流量等。通过模板,你可以确保所有系统都遵循一致的监控标准。 描述中的"基于zabbix基础的监控模板...
- **监控工具开发**:教授如何编写Python脚本来收集系统资源(CPU、内存、磁盘I/O)的使用情况。 - **日志分析**:利用Python处理日志文件,自动分析并报告异常行为或性能瓶颈。 4. **自动化运维任务** - **...
- **系统监控与报警**:利用Python可以实时监控系统的CPU使用率、内存使用情况、磁盘空间等,并在特定条件下触发警报。 ### 2. 常用的Python库 - **subprocess模块**:用于执行shell命令,可以在Python脚本中调用...
1. `check_hadoop_dfs.py`:这个脚本很可能是用来监控Hadoop分布式文件系统的健康状况,包括磁盘空间使用情况、数据节点状态等关键指标。Nagios监控脚本通常会返回一个状态码,Nagios根据状态码判断服务是否正常,并...