一、SNMP MANAGER 安装
1. 命令行安装
1.1 安装对应软件包
sudo apt-get update
sudo apt-get install snmp
1.2 配置
修改 /etc/snmp/snmp.conf
# 注释掉
#mibs :
二、SNMP AGENT 安装
1. 命令行安装
1.1 查看系统自带的snmpd版本
# 先更新
sudo apt-get update
# 查看系统自带的snmpd版本
sudo apt list a snmpd
正在列表... 完成
snmpd/focal-updates,focal-security,now 5.8+dfsg-2ubuntu2.2 amd64 [已安装]
snmpd/focal-updates,focal-security 5.8+dfsg-2ubuntu2.2 i386
1.2 安装对应的软件包
# snmp agent
sudo apt install snmpd libsnmp-dev
# 用来下载更新本地mib库的软件
sudo apt install snmp-mibs-downloader
如果
/usr/share/snmp/mibs
为空,则需要手动下载mib库sudo download-mibs
1.3 配置
修改 /etc/snmp/snmpd.conf
# 默认启用sub-agent
master agentx
# 如果采用agentX添加自定义mib库,可根据需要,配置sub-agent
agentxSocket tcp:localhost:705
agentxTimeout 5000
agentxRetries 0
# Listen for connections from the local system only
#agentAddress udp:127.0.0.1:161
# Listen for connections on all interfaces (both IPv4 *and* IPv6)
agentAddress udp:161,udp6:[::1]:161
# 注释掉下边两行
#view systemonly included .1.3.6.1.2.1.1
#view systemonly included .1.3.6.1.2.1.25.1
# 新添加
view systemonly included .1.3.6.1
# disk checks
# solve : dskUsed = No Such Instance currently exists at this OID
disk / 10000
load [1MAX=12.0] [5MAX=12.0] [15MAX=12.0]load 12 14 14
# 创建v3用户 username:bigdata, password:11111111
createUser bigdata MD5 11111111 DES
rwuser bigdata priv
# 如果采用动态加载方式添加自定义mib库,可以通过如下语句实现
#dlmod cluster_env /home/snmplib/libclusterenv.so
设置完之后,想修改密码,发现不好使,应该是
/var/lib/snmp/snmpd.conf
有缓存,可以尝试把这个文件中对应的内容删掉。
1.4 重启服务
sudo service snmpd restart
1.5 查看状态
sudo service snmpd status
说明:当加载自己的agent库时,使用
snmp_log
打印的信息可以通过这个命令查看
1.6 测试
# 查看系统信息
snmpget -u bigdata -l authPriv -a MD5 -x DES -A 11111111 -X 11111111 localhost 1.3.6.1.2.1.1.1.0
# 结果如下:
SNMPv2-MIB::sysDescr.0 = STRING: Linux slaver1 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64
2. 下载安装包,自己编译 (安装之后不好使!!)
2.1 安装编译依赖
# 安装基本的编译环境
sudo apt-get install gcc make build-essential
# 安装snmp需要的库
sudo apt-get install libperl-dev
三、修改 SNMP AGENT 用户和用户组 (非必须!)
以动态加载.so来实现自定义agent时,遇到如下问题:
如果程序中用到的像jps或netstat -p这样的命令,发现获取不到正确的数据。通过调用
ps -ef | grep snmp
发现,snmpd程序是由Debian-snmp用户启动的,该用户不具有相关权限。
修改/etc/systemd/system/multi-user.target.wants/snmpd.service
, 将snmpd启动的用户和用户组改为root
ExecStart=/usr/sbin/snmpd -LOw -u root -g root -I -smux,mteTrigger,mteTriggerConf -f -p /run/snmpd.pid
调用 sudo systemctl daemon-reload
命令,使修改生效
调用 sudo service snmpd restart
命令,重启snmpd服务
验证如下:
root@master:~# ps -ef | grep snmp
root 3580320 1 1 15:07 ? 00:00:00 /usr/sbin/snmpd -LOw -u root -g root -I -smux mteTrigger mteTriggerConf -f -p /run/snmpd.pid
root 3580347 3579656 0 15:07 pts/0 00:00:00 grep --color=auto snmp