1、安装
yum install -y net-snmp net-snmp-utils net-snmp-perl
2、开启
systemctl start snmpd
systemctl enable snmpd
3、查看udp端口161是否运行
[root@localhost xxx]# netstat -apn|grep 161
udp 0 0 0.0.0.0:161 0.0.0.0:* 42951/snmpd
或者 lsof -i:161
4、配置修改
a. 首先定义一个共同体名称(community),这里是 public ,及可以访问这个 public 的用户名(sec name),这里是 notConfigUser 。public 相当于用户 notConfigUser 的密码。
# sec.name source community
com2sec notConfigUser default public
b. 定义一个组名(groupName)这里是 notConfigGroup,及组的安全级别,把 notConfigGroup 这个用户加到这个组中。
# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
c. 定义一个可操作的视图(view)名, 这里是 all,范围是 .1。
# name incl/excl subtree mask(optional)
view all included .1
d. 定义 notConfigUser 这个组在 all 这个视图范围内可做的操作,这时定义了 notConfigUser 组的成员可对 .1 这个视图做只读操作。
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact all none none
这样对 snmpd.conf 文件就基本完成了,用service snmpd restart重启 snmpd 服务
5、自定义oid
a、编写一个获取系统连接的脚本
vim /root/snmp_sh/top_conn.sh
内容如下:
#!/bin/sh
conn=`netstat -s -t | grep connections\ established |awk '{print $1}'`
echo $conn
b、snmp配置文件中添加自定义oid
vim /etc/snmp/snmpd.conf
添加
extend .1.3.6.1.4.1.2021.18 top_conn /bin/sh /root/snmp_sh/top_conn.sh key_test
解释:
extend snmpd.conf提供的扩展功能选项
.1.3.6.1.4.1.2021.18 这个OID是自定义的,一般选用空闲OID(.1.3.6.1.4.1.2021.xx),也可以覆盖已经定义的OID
top_conn 标识符 标识符,用以区分不同扩展项目
/bin/sh /root/snmp_sh/top_conn.sh 命令或脚本 命令或脚本的执行结果,添加到snmp的查询中(类似于赋予,VAR=123)
key_test 键值 自定义的键值,在zabbix中添加snmp监控项时需要填写的键值就是这个
在snmpd.conf中自定义好之后,重启snmp服务使之生效
systemctl restart snmpd
问题解决:
a、自定以的oid脚本没权限执行
关闭selinux vim /etc/selinux/config
永久关闭:
SELINUX=disabled
临时关闭:
setenforce 0
重新执行,问题解决
b、获取不到数据
按照3中配置文件修改访问权限
6、python获取oid对应的参数信息
# -*- coding: UTF-8 -*-
import traceback
from pysnmp.hlapi import getCmd,SnmpEngine,CommunityData,UdpTransportTarget,ContextData,ObjectType,ObjectIdentity
def get_value_of_snmp(oid,ip,port=161,community="public"):
try:
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(
SnmpEngine(),
CommunityData(community),
UdpTransportTarget((ip, port), timeout=3, retries=2,),
ContextData(),
ObjectType(ObjectIdentity(oid))
)
)
if not errorIndication:
if not errorStatus:
for varBind in varBinds:
print(varBind[1])
print("one of varBind: %s, length of varBinds:%s,type is:%s"%(varBind,len(varBinds),type(varBinds[0])))
return varBinds[0][1]
except Exception as e:
traceback.print_exc()
print(e)
if __name__ == "__main__":
ip="192.168.133.129"
oid = "1.3.6.1.4.1.2021.4.5.0" #系统全部内存
#oid = "1.3.6.1.4.1.2021.18.4.1.2.8.116.111.112.95.99.111.110.110.1" #自定义脚本
value = get_value_of_snmp(oid,ip)
print("*******value==",value)
7、其他常用oid汇总:
CPU的
Load
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3
CPU
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0
内存的
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
硬盘的
The snmpd.conf needs to be edited. Add the following (assuming a machine with a single ‘/’ partition):
disk / 100000 (or)
includeAllDisks 10% for all partitions and disks
The OIDs are as follows
Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1