一、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 查看系統(tǒng)自帶的snmpd版本
# 先更新
sudo apt-get update
# 查看系統(tǒng)自帶的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
# 創(chuàng)建v3用戶 username:bigdata, password:11111111
createUser bigdata MD5 11111111 DES
rwuser bigdata priv
# 如果采用動態(tài)加載方式添加自定義mib庫,可以通過如下語句實現
#dlmod cluster_env /home/snmplib/libclusterenv.so
設置完之后,想修改密碼,發(fā)現不好使,應該是
/var/lib/snmp/snmpd.conf有緩存,可以嘗試把這個文件中對應的內容刪掉。
1.4 重啟服務
sudo service snmpd restart
1.5 查看狀態(tài)
sudo service snmpd status
說明:當加載自己的agent庫時,使用
snmp_log打印的信息可以通過這個命令查看
1.6 測試
# 查看系統(tǒng)信息
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 安裝編譯依賴
# 安裝基本的編譯環(huán)境
sudo apt-get install gcc make build-essential
# 安裝snmp需要的庫
sudo apt-get install libperl-dev
三、修改 SNMP AGENT 用戶和用戶組 (非必須!)
以動態(tài)加載.so來實現自定義agent時,遇到如下問題:
如果程序中用到的像jps或netstat -p這樣的命令,發(fā)現獲取不到正確的數據。通過調用
ps -ef | grep snmp發(fā)現,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