1.版本说明
操作系统:Red Hat Enterprise Linux Server release 7.6
net-snmp:v5.7.2
2.安装配置net-snmp
2.1 安装net-snmp
配置好redhat7.6的系统盘yum源之后,执行:
# yum list | grep net-snmp
net-snmp.x86_64 1:5.7.2-37.el7 local
net-snmp-agent-libs.x86_64 1:5.7.2-37.el7 local
net-snmp-devel.x86_64 1:5.7.2-37.el7 local
net-snmp-libs.x86_64 1:5.7.2-37.el7 anaconda/7.6
net-snmp-utils.x86_64 1:5.7.2-37.el7 local
net-snmp-agent-libs.i686 1:5.7.2-37.el7 local
net-snmp-devel.i686 1:5.7.2-37.el7 local
net-snmp-libs.i686 1:5.7.2-37.el7 local
# yum -y install net-snmp*
2.2 文件路径
snmpd程序默认路径: /usr/sbin/snmpd
snmpd.conf 配置文件默认路径: /etc/snmp/snmpd.conf
2.3 修改snmpd.conf——共同体名称
# vim /etc/snmp/snmpd.conf
# sec.name source community
com2sec notConfigUser default public
改为:
# sec.name source community
com2sec notConfigUser default cmsnmp
2.4 修改snmpd.conf——查看设备节点权限
view:定义了可以查看哪些节点设备的信息。
snmp默认配置只能查看.1.3.6.1.2.1.1和.1.3.6.1.2.1.25.1.1节点下的设备信息,
而主机CPU和内存等设备都不在这些节点下,所以无法获取这些数据。修改如下:
# name incl/excl subtree mask(optional)
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
改为:
# name incl/excl subtree mask(optional)
view systemview included .1
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
2.5 修改snmpd.conf——修改Process checks的配置
#proc mountd
#proc ntalkd 4
#proc sendmail 10 1
改为:
proc mountd
proc ntalkd 4
proc sendmail 10 1
通过 / 搜索功能,这三行前面的#号,取消注释
2.6 修改snmpd.conf——其他
#exec echotest /bin/echo hello world
改为:
exec echotest /bin/echo hello world
#disk / 10000
改为:
disk / 10000
#load 12 14 14
改为:
load 12 14 14
保存配置并退出
2.7 通过sed命令修改snmpd.conf
下面的sed命令可以替代上面2.3-2.6章节的内容。方便后期批量操作时编写脚本。
cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak #首先备份下配置文件
sed -i '41s/public/cmsnmp/' /etc/snmp/snmpd.conf #修改41行,public为cmsnmp
sed -i '207s/#proc mountd/proc mountd/' /etc/snmp/snmpd.conf
sed -i '210s/#proc ntalkd 4/proc ntalkd 4/' /etc/snmp/snmpd.conf
sed -i '213s/#proc sendmail 10 1/proc sendmail 10 1/' /etc/snmp/snmpd.conf
sed -i '272s/#exec echotest/exec echotest/' /etc/snmp/snmpd.conf
sed -i '323s/#disk/disk/' /etc/snmp/snmpd.conf
sed -i '352s/#load 12 14 14/load 12 14 14/' /etc/snmp/snmpd.conf
sed -i '/.1.3.6.1.2.1.1/i\view systemview included .1' /etc/snmp/snmpd.conf
#匹配到字符串“.1.3.6.1.2.1.1”,在这前插入一行内容“view systemview included .1”
#确认修改成功:
cat /etc/snmp/snmpd.conf | grep -E "cmsnmp|proc mountd|proc ntalkd|proc sendmail|exec echotest|load 12|view systemview"
3.启动net-snmp
# /bin/systemctl restart snmpd.service
# ps -ef | grep snmpd
root 21768 1 1 17:33 ? 00:00:00 /usr/sbin/snmpd -LS0-6d -f
root 21779 10145 0 17:33 pts/5 00:00:00 grep --color=auto snmpd
4.验证net-snmp
4.1 从本地client端验证
snmpget -v 1 -c cmsnmp localhost sysUpTime.0 #此处localhost也可以用本地IP代替
snmpwalk -v 2c -c cmsnmp -m ALL localhost .1.3 | more #此处localhost也可以用本地IP代替
#cmsnmp为共同体名称,需要与snmpd.conf文件配置一致,否则命令无法执行。
如果输出信息正常,表明snmp配置正常
4.2 从snmp server端验证
# cmsnmp为共同体名称
# 10.168.1.129 是client端IP地址
snmpwalk -v 2c -c cmsnmp 10.168.1.129 .1.3.6.1.2.1.25.2.2 #取得系统总内存
snmpwalk -v 2c -c cmsnmp 10.168.1.129 hrSystemNumUsers #取得系统用户数
snmpwalk -v 2c -c cmsnmp 10.168.1.129 .1.3.6.1.2.1.4.20 #取得IP信息
snmpwalk -v 2c -c cmsnmp 10.168.1.129 system #查看系统信息
snmpwalk -v 2c -c cmsnmp 10.168.1.129 ifDescr #获取网卡信息
如果执行,输出信息正常,表示配置没问题。
如果显示如下信息:
Timeout: No Response from 10.168.1.129
需要考虑是否是因为防火墙的设置导致。
5.防火墙设置
5.1 业务环境可以关闭防火墙
# systemctl stop firewalld #关闭防火墙
# systemctl status firewalld #查看防火墙状态
5.2 业务环境不可以关闭防火墙
如果业务环境不能关闭防火墙,那我们可以设置开放161端口,来允许snmp的server端的连接:
# systemctl start firewalld #打开防火墙
# systemctl status firewalld #查看防火墙状态
# firewall-cmd --zone=public --add-port=161/udp --permanent
#开放161端口
#--permanent的作用是使设置永久生效,不加的话机器重启之后失效
# firewall-cmd --reload #配置修改后重新加载
# firewall-cmd --zone=public --query-port=161/udp
#确认配置是否生效:输出yes表示生效