環境
- サーバ & エージェント Ubuntu 20.04 ja LTS
- リモートエージェント Ubuntu 22.04 ja LTS
インストール
サーバに以下のようにしてインストール
$ sudo apt install snmpd
また、snmpwalk などを使うためインストール。閲覧はあくまで 別 PC で行う場合はなくてもいいです。
$ sudo apt install snmp snmp-mibs-downloader
インストールしてできた /etc/snmp/snmpd.conf の 中身は以下のようになってました。
$ sudo cat /etc/snmp/snmpd.conf | grep -v ^# | grep -v ^$
sysLocation Sitting on the Dock of the Bay
sysContact Me <me@example.org>
sysServices 72
master agentx
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
rocommunity public default -V systemonly
rocommunity6 public default -V systemonly
rouser authPrivUser authpriv -V systemonly
そのまま読み込みしてみます。
$ snmpwalk -v1 localhost -c public
/etc/snmp/snmp.conf: line 5: Warning: Unknown token: rocommunity.
iso.3.6.1.2.1.1.1.0 = STRING: "Linux nanbuwks-PRIMERGY-TX1310-M3 5.11.0-43-generic #47~20.04.2-Ubuntu SMP Mon Dec 13 11:06:56 UTC 2021 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (4335) 0:00:43.35
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"
iso.3.6.1.2.1.1.5.0 = STRING: "nanbuwks-PRIMERGY-TX1310-M3"
iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay"
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1
iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.15.2.1.1
iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.6.3.1
iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.6.3.16.2.2.1
iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.2.1.49
iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.2.1.4
iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.2.1.50
iso.3.6.1.2.1.1.9.1.2.9 = OID: iso.3.6.1.6.3.13.3.1.3
iso.3.6.1.2.1.1.9.1.2.10 = OID: iso.3.6.1.2.1.92
iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The SNMP Management Architecture MIB."
iso.3.6.1.2.1.1.9.1.3.2 = STRING: "The MIB for Message Processing and Dispatching."
iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The management information definitions for the SNMP User-based Security Model."
iso.3.6.1.2.1.1.9.1.3.4 = STRING: "The MIB module for SNMPv2 entities"
iso.3.6.1.2.1.1.9.1.3.5 = STRING: "View-based Access Control Model for SNMP."
iso.3.6.1.2.1.1.9.1.3.6 = STRING: "The MIB module for managing TCP implementations"
iso.3.6.1.2.1.1.9.1.3.7 = STRING: "The MIB module for managing IP and ICMP implementations"
iso.3.6.1.2.1.1.9.1.3.8 = STRING: "The MIB module for managing UDP implementations"
iso.3.6.1.2.1.1.9.1.3.9 = STRING: "The MIB modules for managing SNMP Notification, plus filtering."
iso.3.6.1.2.1.1.9.1.3.10 = STRING: "The MIB module for logging SNMP Notifications."
iso.3.6.1.2.1.1.9.1.4.1 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.2 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.3 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.4 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.5 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.6 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.7 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.8 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.9 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.10 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (13202960) 1 day, 12:40:29.60
iso.3.6.1.2.1.25.1.2.0 = Hex-STRING: 07 E6 08 03 0E 08 26 00 2B 09 00
iso.3.6.1.2.1.25.1.3.0 = INTEGER: 393216
iso.3.6.1.2.1.25.1.4.0 = STRING: "BOOT_IMAGE=/boot/vmlinuz-5.11.0-43-generic root=UUID=3f5e0384-61ff-4c47-8e00-839ac025fc77 ro quiet splash vt.handoff=7
"
iso.3.6.1.2.1.25.1.5.0 = Gauge32: 6
iso.3.6.1.2.1.25.1.6.0 = Gauge32: 243
iso.3.6.1.2.1.25.1.7.0 = INTEGER: 0
End of MIB
uptime を取得してみます。
$ snmpwalk -v1 localhost -c public iso.3.6.1.2.1.25.1.1.0
/etc/snmp/snmp.conf: line 5: Warning: Unknown token: rocommunity.
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (13206812) 1 day, 12:41:08.12
別の PC から値を読んでみる
サーバの値を他のPCから見えるようにするためには、以下のように /etc/snmp/snmpd.conf を編集
agentaddress 127.0.0.1,[::1]
を以下のように無効化
# agentaddress 127.0.0.1,[::1]
snmpdを再起動する
$ sudo systemctl restart snmpd
別のPC
$ sudo apt-get install -y snmp snmp-mibs-downloader
の後、
$ snmpwalk -v1 localhost -c public iso.3.6.1.2.1.25.1.1.0
とすると
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (13355805) 1 day, 13:05:58.05
uptime が取得できました。
読める値を増やす
snmp サーバで、/etc/snmp/snmpd.conf を編集します。
# system + hrSystem groups only
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
# rocommunity: a SNMPv1/SNMPv2c read-only access community name
# arguments: community [default|hostname|network/bits] [oid | -V view]
# Read-only access to everyone to the systemonly view
rocommunity public default -V systemonly
rocommunity6 public default -V systemonly
上記の該当箇所を以下のように変更します。
# system + hrSystem groups only
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
view systemview included .1.3.6.1.2.1.25
view systemview included .1.3.6.1.4.1.2
# rocommunity: a SNMPv1/SNMPv2c read-only access community name
# arguments: community [default|hostname|network/bits] [oid | -V view]
# Read-only access to everyone to the systemonly view
rocommunity public default
rocommunity6 public default -V systemonly
snmpd再起動
$ sudo systemctl restart snmpd
$ snmpwalk -v1 localhost -c public
とすると膨大に出てきます。
外部から、メモリの値を読んでみました。
$ snmpwalk -v1 192.168.42.100 -c public UCD-SNMP-MIB::memory
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 2097148 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 1844236 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 3840912 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 679384 kB
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 2523620 kB
UCD-SNMP-MIB::memMinimumSwap.0 = INTEGER: 16000 kB
UCD-SNMP-MIB::memShared.0 = INTEGER: 118180 kB
UCD-SNMP-MIB::memBuffer.0 = INTEGER: 254896 kB
UCD-SNMP-MIB::memCached.0 = INTEGER: 1355500 kB
UCD-SNMP-MIB::memSwapError.0 = INTEGER: noError(0)
UCD-SNMP-MIB::memSwapErrorMsg.0 = STRING:
ディスクの値を読もうとしましたが、出てきませんでした。
$ snmpwalk -v1 192.168.42.100 -c public UCD-SNMP-MIB::dskTable
load average を表示してみました。
$ snmpwalk -v1 192.168.42.100 -c public 1.3.6.1.4.1.2021.10.1.3
iso.3.6.1.4.1.2021.10.1.3.1 = STRING: "0.01"
iso.3.6.1.4.1.2021.10.1.3.2 = STRING: "0.07"
iso.3.6.1.4.1.2021.10.1.3.3 = STRING: "0.08"
過去1分、5分、15分の間のロードアベレージ値です。
以下では CPU コアそれぞれの利用率の値が取得できるようです。
$ snmpwalk -v1 192.168.42.100 -c public 1.3.6.1.2.1.25.3.3
iso.3.6.1.2.1.25.3.3.1.1.196608 = OID: ccitt.0
iso.3.6.1.2.1.25.3.3.1.1.196609 = OID: ccitt.0
iso.3.6.1.2.1.25.3.3.1.2.196608 = INTEGER: 5
iso.3.6.1.2.1.25.3.3.1.2.196609 = INTEGER: 4
他のツール
snmpstatus
$ snmpstatus -v 1 -c public localhost
[UDP: [127.0.0.1]:161->[0.0.0.0]:47832]=>[Linux nanbuwks-PRIMERGY-TX1310-M3 5.11.0-43-generic #47~20.04.2-Ubuntu SMP Mon Dec 13 11:06:56 UTC 2021 x86_64] Up: 0:04:45.44
Interfaces: 4, Recv/Trans packets: 878912/6781368 | IP: 667121/1366586
2 interfaces are down!