snmpd 設定方法 (CentOS 8.X/Rcoky Linux 9.Xの場合)

スポンサーリンク

snmpdはsnmpget等の問い合わせに応答してサーバの状態を返すSNMPの常駐プログラムです。サーバにsnmpdの設定を予め投入しておく事によって、統合監視ツールからの問い合わせに対して応答を返せるようになります。このページではCentOS 8.X/Rocky Linux 9.Xの設定例を紹介します。

混同しやい概念としてsnmptrapdがありますが、これらとは異なる概念です。snmptrapdは各機器がアラートとして発報するsnmptrapdを受信する常駐プログラムです。

前提

動作確認済環境

  • CentOS 8.2 / Rocky Linux 8.6 / Rocky Linux 9.0

snmp関連のインストール

snmpdのインストール

snmpdはnet-snmpというパッケージによって提供されます。yumコマンドでnet-snmpをインストールして下さい。

# dnf install net-snmp

インストールが完了したら、次にsnmpdを起動させます。

# systemctl enable snmpd.service --now

snmp-utilsのインストール

必須ではありませんが、net-snmp-utilsも併せてインストールする事をお勧めします。net-snmp-utilsは、snmpget, snmpwalkなどsnmpのデバッグを行うのに有用なツールを多数備えています。

# dnf install net-snmp-utils

snmpdへの疎通確認 (CentOS 8.X系のみ)

RHEL 8.Xはここまでの操作でsnmpwalkによる疎通確認が可能になります。以下に疎通確認のログを載せます。

RHEL 9.X以降は、デフォルト設定では疎通不能の状態でcom2sec, groupなどの設定をしなければ疎通可能になりません。

[root@centos82 ~]# snmpwalk -v 2c -c public localhost 
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos82.gokatei.go 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (2732) 0:00:27.32
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: centos82.gokatei.go
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.6 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.7 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.8 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance
SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB

 <omitted>

RHEL 9.X 最小設定

最小設定例

セキュリティ上の配慮なのか、RHEL 9.Xではデフォルト設定の状態ではsnmpdは応答を返しません。/etc/snmp/snmpd.confをテキストエディタで開き、com2secとgroupのコメントアウトを外します。

# vi /etc/snmp/snmpd.conf

 <omitted>

####
# First, map the community name "public" into a "security name"

#       sec.name  source          community
com2sec notConfigUser  default       public

####
# Second, map the security name into a group name:

#       groupName      securityModel securityName
group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser

設定反映のため再起動します。

systemctl restart snmpd.service 

snmpdへの疎通確認

snmpwalkなどにより疎通を確認できます。操作例は以下のようになります。

[root@rocky90 ~]# snmpwalk -v 2c -c public localhost
SNMPv2-MIB::sysDescr.0 = STRING: Linux rocky90.gokatei.go 5.14.0-70.13.1.el9_0.x86_64 #1 SMP PREEMPT Wed May 25 21:01:57 UTC 2022 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (200) 0:00:02.00
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: rocky90.gokatei.go
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.6 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB

  <omitted>

設定例の紹介

snmpd.conf 編集例(1)

view – 取得可能なOIDの範囲の定義

OSバージョンやディストリビューションに依存しますが、初期設定では/etc/snmp/snmpd.confに記載された下記OIDのみが取得可能な状態です。

# Make at least  snmpwalk -v 1 localhost -c public system fast again.
#       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

手っ取り早く監視対象を増やしたい時は、/etc/snmp/snmpd.confを以下のように編集します。

# vi /etc/snmp/snmpd.conf

# Make at least  snmpwalk -v 1 localhost -c public system fast again.
#       name           incl/excl     subtree         mask(optional)
view    systemview    included   .1

設定反映前は監視によって取得できる項目数が39である事を確認します。

[root@centos82 ~]# snmpwalk -v 2c -c public localhost | wc -l
39

再起動によって設定を反映させると監視項目が4040まで増えている事が分かります。

[root@centos82 ~]# systemctl restart snmpd.service 
[root@centos82 ~]# snmpwalk -v 2c -c public localhost | wc -l
4040
[root@centos82 ~]# 

snmpd.conf 編集例(2)

com2sec – コミュニティ名とセキュリティの紐付け

snmpd.confには、com2secという定義が必要です。com2secは、 communityとsource ip addressの紐づけで、紐付けにはsecurity nameという名前を定義します。

設定例は以下のようになります。この設定の場合は、192.168.63.0/24からのpublicというコミュニティ名でアクセスする事を許可します。また、この192.168.63.0/24とpublicという紐付けに対してmynetというsecurity nameを定義します。

# vi /etc/snmp/snmpd.conf

#       sec.name  source          community
com2sec local     localhost       private
com2sec mynet     192.168.63.0/24 public
com2sec public    default         public

gruopの定義 – snmp versionの定義

snmpd.confには、groupという定義が必要です。groupは前述のsecurity nameとsnmp versionの紐付けの定義です。

設定例は以下のようになります。この設定の場合は、前述のmynetに対してsnmp version 1, snmp version 2cを許可する設定例です。

# vi /etc/snmp/snmpd.conf

#             sec.model  sec.name
group mygroup v1         mynet
group mygroup v2c        mynet

view – 取得可能なOIDの範囲の定義

snmpd.confには、viewという定義が必要です。viewは、取得可能なOIDの範囲です。

設定例は以下のようになります。なお、maskの概念は難しいので、興味のない方は”おまじない”と思って設定しても良いと思います。maskの意味に興味のある方は後述のTipsをご覧ください。

# vi /etc/snmp/snmpd.conf

#           incl/excl subtree                          mask
view all    included  .1                               80
view system included  system                           fe
view mib2   included  .iso.org.dod.internet.mgmt.mib-2 fc

access – 権限設定

snmpd.confには、accessという定義が必要です。accessは、 各security nameに対しての権限設定です。設定可能な権限は、読取, 書込, 通知 (read, write, notify) の3種類です。

設定例は以下のようになります。なお、context, sec.model, sec.level, prefixはSNMPv3で使用するパラメータですので、SNMPv1, SNMPv2cを使用する場合は盲目的に以下と同じ値を設定しても差し支えありません。

# vi /etc/snmp/snmpd.conf

#              context sec.model sec.level prefix read   write notify
access mygroup ""      any       noauth    exact  mib2   none  none
access public  ""      any       noauth    exact  system none  none
access local   ""      any       noauth    exact  all    all   all

snmpd.conf 編集例(3) – NMSからのアクセス許可

/etc/snmp/snmpd.conf の設定例を紹介します。

殆どの環境では、NMS (Network Management Station) からのアクセスのみをMIB値を許容するようにすれば、運用上問題ありません。また、localhostからSNMPの調査をするデバッグ作業をする事も多いので、localhostからのアクセスも許可した方が何かと便利な事が多いです。

このような事情を加味すると、snmpd.confの設定例は以下のようになります。なお、SMNのIPアドレスは192.168.63.70とし、コミュニティ名はfooとしております。

# /etc/snmp/snmpd.conf

#       sec.name        source          community
com2sec notConfigUser   192.168.63.70   foo
com2sec notConfigUser   localhost       foo

#                       sec.model       sec.name
group   notConfigGroup  v1              notConfigUser
group   notConfigGroup  v2c             notConfigUser

#           incl/excl   subtree         mask
view all    included    .1              

#                       context sec.model sec.level prefix read   write notify
access notConfigGroup   ""      any       noauth    exact  all    none  none

再起動によって設定を反映させます。

# systemctl restart snmpd.service 

許可されたホストのみ疎通可能である事を確認します。

[root@centos81 ~]# snmpwalk -v 2c -c foo 192.168.63.82 
Timeout: No Response from 192.168.63.82

[root@zabbix70 ~]# snmpwalk -v 2c -c foo 192.168.63.82 
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos82.gokatei.go 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (15388) 0:02:33.88
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: centos82.gokatei.go
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance

 <omitted>

snmpd.conf 編集例(4) – プロセス監視

snmpd.confにプロセス監視の設定を加筆する事によって、プロセス監視が可能になります。snmpd.confのプロセス監視の書式は以下の通りです。max, minはプロセス数の上限, 下限の閾値を表します。

proc <process_name> [ <max> <min> ]

プロセス監視の設定例は以下の通りです。/etc/snmp/snmpd.conf のどこに記述しても動作に影響はありませんが、メンテナンス性を考え”#proc sendmail 10 1″以下に記述するのが良いと思います。

# vi /etc/snmp/snmpd.conf

#  Make sure at least one sendmail, but less than or equal to 10 are running.
#proc sendmail 10 1
proc httpd 100 1
proc chronyd

動作確認方法は以下の通りです。prTable配下のMIB値を取得する事によって、プロセス数を把握する事ができます。

この時、特に注意深く見なければならないのはprCountとprErrorFlagです。prCountはプロセス数を返し、prErrorFlagはプロセス数の閾値に抵触した場合は”1″を返します。

[root@centos82 ~]# systemctl restart snmpd.service 
[root@centos82 ~]# snmpwalk -v 2c -c foo localhost prTable
UCD-SNMP-MIB::prIndex.1 = INTEGER: 1
UCD-SNMP-MIB::prIndex.2 = INTEGER: 2
UCD-SNMP-MIB::prNames.1 = STRING: httpd
UCD-SNMP-MIB::prNames.2 = STRING: chronyd
UCD-SNMP-MIB::prMin.1 = INTEGER: 1
UCD-SNMP-MIB::prMin.2 = INTEGER: 1
UCD-SNMP-MIB::prMax.1 = INTEGER: 100
UCD-SNMP-MIB::prMax.2 = INTEGER: 0
UCD-SNMP-MIB::prCount.1 = INTEGER: 5
UCD-SNMP-MIB::prCount.2 = INTEGER: 1
UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrorFlag.2 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrFix.1 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrFix.2 = INTEGER: noError(0)
UCD-SNMP-MIB::prErrFixCmd.1 = STRING: 
UCD-SNMP-MIB::prErrFixCmd.2 = STRING:

snmpd.conf 編集例(5) – ディスク残容量監視

snmpd.confにディスク残容量監視の設定を加筆する事によって、ディスク残容量監視が可能になります。snmpd.confのディスク残容量監視の書式は以下の通りです。thresholdはメガバイト指定またはパーセント指定が可能です。

disk <mount_point> <threshold>

ディスク残容量監視の設定例は以下の通りです。/etc/snmp/snmpd.conf のどこに記述しても動作に影響はありませんが、メンテナンス性を考え”#disk / 10000″以下に記述するのが良いと思います。

# vi /etc/snmp/snmpd.conf

#disk / 10000
disk /boot 50%
disk / 20%

動作確認方法は以下の通りです。dskTable配下のMIB値を取得する事によって、ディスク残容量を把握する事ができます。 

[root@centos82 ~]# systemctl restart snmpd.service 
[root@centos82 ~]# snmpwalk -v 2c -c foo localhost dskTable
UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1
UCD-SNMP-MIB::dskIndex.2 = INTEGER: 2
UCD-SNMP-MIB::dskPath.1 = STRING: /boot
UCD-SNMP-MIB::dskPath.2 = STRING: /
UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/sda1
UCD-SNMP-MIB::dskDevice.2 = STRING: /dev/sda3
UCD-SNMP-MIB::dskMinimum.1 = INTEGER: -1
UCD-SNMP-MIB::dskMinimum.2 = INTEGER: -1
UCD-SNMP-MIB::dskMinPercent.1 = INTEGER: 50
UCD-SNMP-MIB::dskMinPercent.2 = INTEGER: 20
UCD-SNMP-MIB::dskTotal.1 = INTEGER: 999320
UCD-SNMP-MIB::dskTotal.2 = INTEGER: 19387392
UCD-SNMP-MIB::dskAvail.1 = INTEGER: 824692
UCD-SNMP-MIB::dskAvail.2 = INTEGER: 17739120
UCD-SNMP-MIB::dskUsed.1 = INTEGER: 105816
UCD-SNMP-MIB::dskUsed.2 = INTEGER: 1648272

  <omitted>

UCD-SNMP-MIB::dskErrorFlag.1 = INTEGER: noError(0)
UCD-SNMP-MIB::dskErrorFlag.2 = INTEGER: noError(0)

snmpd.conf 編集例(6) – ロードアベレージ監視

ロードアベレージ(load average) はsnmpd.confに特に設定を加筆しなくても、snmpによってロードアベレージの取得は可能です。しかし、snmpd.confにロードアベレージの閾値を定義する事によって、snmpによってロードアベレージが閾値を超えているかどうかを把握する事ができるようになります。snmpd.confのロードアベレージ監視の書式は以下の通りです。

load <1_min_threshold> <5_min_threshold> <15_min_threshold>

ロードアベレージ監視の設定例は以下の通りです。/etc/snmp/snmpd.conf のどこに記述しても動作に影響はありませんが、メンテナンス性を考え”#load 12 14 14″以下に記述するのが良いと思います。

# vi /etc/snmp/snmpd.conf

# load [1MAX=12.0] [5MAX=12.0] [15MAX=12.0]
#
# 1MAX:   If the 1 minute load average is above this limit at query
#         time, the errorFlag will be set.
# 5MAX:   Similar, but for 5 min average.
# 15MAX:  Similar, but for 15 min average.

# Check for loads:
#load 12 14 14
load 5 2 1

動作確認方法は以下の通りです。laTable配下のMIB値を取得する事によって、ロードアベレージを把握する事ができます。ロードアベレージの閾値を超えているかどうかは、laErrorFlagを参照下さい。

[root@centos82 ~]# systemctl restart snmpd.service 
[root@centos82 ~]# snmpwalk -v 2c -c foo localhost laTable
UCD-SNMP-MIB::laIndex.1 = INTEGER: 1
UCD-SNMP-MIB::laIndex.2 = INTEGER: 2
UCD-SNMP-MIB::laIndex.3 = INTEGER: 3
UCD-SNMP-MIB::laNames.1 = STRING: Load-1
UCD-SNMP-MIB::laNames.2 = STRING: Load-5
UCD-SNMP-MIB::laNames.3 = STRING: Load-15
UCD-SNMP-MIB::laLoad.1 = STRING: 0.01
UCD-SNMP-MIB::laLoad.2 = STRING: 0.17
UCD-SNMP-MIB::laLoad.3 = STRING: 0.11
UCD-SNMP-MIB::laConfig.1 = STRING: 5.00
UCD-SNMP-MIB::laConfig.2 = STRING: 2.00
UCD-SNMP-MIB::laConfig.3 = STRING: 1.00
UCD-SNMP-MIB::laLoadInt.1 = INTEGER: 1
UCD-SNMP-MIB::laLoadInt.2 = INTEGER: 17
UCD-SNMP-MIB::laLoadInt.3 = INTEGER: 11
UCD-SNMP-MIB::laLoadFloat.1 = Opaque: Float: 0.010000
UCD-SNMP-MIB::laLoadFloat.2 = Opaque: Float: 0.170000
UCD-SNMP-MIB::laLoadFloat.3 = Opaque: Float: 0.110000
UCD-SNMP-MIB::laErrorFlag.1 = INTEGER: noError(0)
UCD-SNMP-MIB::laErrorFlag.2 = INTEGER: noError(0)
UCD-SNMP-MIB::laErrorFlag.3 = INTEGER: noError(0)
UCD-SNMP-MIB::laErrMessage.1 = STRING: 
UCD-SNMP-MIB::laErrMessage.2 = STRING: 
UCD-SNMP-MIB::laErrMessage.3 = STRING: 

snmpd.conf 編集例(7) – 外部コマンドの実行

snmpd.confにextend句を加筆する事によって、snmpdによって外部コマンドを実行する事もできます。書式は以下の通りです。<miboid>は省略可能なパラメータですが、省略してしまうと記述順によってOIDが変わってしまいメンテナンス性が著しく損なわれます。ですので、miboidは省略しない事をお勧めします。

extend [ <miboid> ] <name> <proc> <args>

外部コマンドの設定例は以下の通りです。/etc/snmp/snmpd.conf のどこに記述しても動作に影響はありませんが、メンテナンス性を考え”# exec .1.3.6.1.4.1.2021.53 mailq /usr/bin/mailq”以下に記述するのが良いと思います。

余談になりますが、”exec”というのは過去の名残で、以前のバージョンのsnmpdはextendの代わりにexecというキーワードを使用していました。古い記事を見るとexecを使用している例がありますが、execは非推奨ですので使用しないように注意して下さい。

# vi /etc/snmp/snmpd.conf

# Other ideas:
#
# exec .1.3.6.1.4.1.2021.51 ps /bin/ps
# exec .1.3.6.1.4.1.2021.52 top /usr/local/bin/top
# exec .1.3.6.1.4.1.2021.53 mailq /usr/bin/mailq
extend .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest
extend .1.3.6.1.4.1.2021.51 ps /bin/ps

動作確認方法は以下の通りです。コマンドを実行した結果の標準出力がsnmpによって取得できる事を確認します。

[root@centos82 ~]# cat << EOF > /tmp/shtest
> #!/bin/bash
> echo "ktkr"
> EOF
[root@centos82 ~]# 
[root@centos82 ~]# 
[root@centos82 ~]# systemctl restart snmpd.service 
[root@centos82 ~]# 
[root@centos82 ~]# 
[root@centos82 ~]# snmpwalk -v 2c -c foo localhost .1.3.6.1.4.1.2021.50
UCD-SNMP-MIB::ucdavis.50.1.0 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.50.2.1.2.9.115.104.101.108.108.116.101.115.116 = STRING: "/bin/sh"
UCD-SNMP-MIB::ucdavis.50.2.1.3.9.115.104.101.108.108.116.101.115.116 = STRING: "/tmp/shtest"
UCD-SNMP-MIB::ucdavis.50.2.1.4.9.115.104.101.108.108.116.101.115.116 = ""
UCD-SNMP-MIB::ucdavis.50.2.1.5.9.115.104.101.108.108.116.101.115.116 = INTEGER: 5
UCD-SNMP-MIB::ucdavis.50.2.1.6.9.115.104.101.108.108.116.101.115.116 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.50.2.1.7.9.115.104.101.108.108.116.101.115.116 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.50.2.1.20.9.115.104.101.108.108.116.101.115.116 = INTEGER: 4
UCD-SNMP-MIB::ucdavis.50.2.1.21.9.115.104.101.108.108.116.101.115.116 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.50.3.1.1.9.115.104.101.108.108.116.101.115.116 = STRING: "ktkr"
UCD-SNMP-MIB::ucdavis.50.3.1.2.9.115.104.101.108.108.116.101.115.116 = STRING: "ktkr"
UCD-SNMP-MIB::ucdavis.50.3.1.3.9.115.104.101.108.108.116.101.115.116 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.50.3.1.4.9.115.104.101.108.108.116.101.115.116 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.50.4.1.2.9.115.104.101.108.108.116.101.115.116.1 = STRING: "ktkr"
[root@centos82 ~]# 

Tips

mask 表記の説明

snmpd.confのviewはsubtreeとそのmaskで指定します。maskは2桁の16進数で表し、0である部分は任意の値で差し支えない事を表します。

例えば、substreeが”.1″で、maskが”80″というのは、全てのOIDを許可するという意味になります。16進数の0x80は2進数表記にすると10000000になります。全てのOIDは.1から始まりますので、全てのOIDを許可するという意味になります。

#       name           incl/excl     subtree         mask(optional)
view all    included  .1                               80

subtreeとmaskを表形式でまとめなおすと以下のようになります。計算結果行の”*”は任意の値を示します。

subtree 1
mask 10000000
計算結果 1*******

理解を深めるために、 もうひとつ例を挙げます。以下はnetwork interfaceに関するOIDのみ許可する例です。ifEntryは数値表記に変換すると.1.3.6.1.2.1.2.2.1で、0xff:8は2進数表記で11111111:1000です。maskが8bitを超える場合は、maskは8bit毎に”:”で区切って表記して下さい。

#       name           incl/excl     subtree         mask(optional)
view system included  IF-MIB::ifEntry                  0xff:8

subtreeとmaskを表形式でまとめなおすと以下のようになります。計算結果行の”*”は任意の値を示します。

subtree 1361 2122 1
mask 1111 1111 1000
計算結果 1361 2122 1***

snmpwalkコマンドの使い方

snmpwalkコマンドは指定したOID配下のMIB値を取得できます。MIB値を取得できるコマンドはsnmpget, snmpbulk等多数ありますが、私はsnmpwalkのみ覚えれば充分かと思います。よく使用する構文は以下の通りです。

# snmpwalk -v <version> -c <community> <host> [ <OID> ]

snmptranslateコマンドの使い方

snmptranslateはOIDの名前/数値の変換を行うコマンドです。名前/数値の対応関係を調べる際の使用例は以下の通りです。

[root@localhost ~]# snmptranslate .1.3.6.1.4.1.2021.10.1.2
UCD-SNMP-MIB::laNames
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# snmptranslate -On UCD-SNMP-MIB::laNames
.1.3.6.1.4.1.2021.10.1.2
[root@localhost ~]#

snmptranslateコマンドはTpオプションを付与する事ででツリー形式で表示する事ができます。

# snmptranslate -Tp .1.3.6.1.4.1.2021.10.1
+--laEntry(1)
   |  Index: laIndex
   |
   +-- -R-- Integer32 laIndex(1)
   |        Range: 0..3
   +-- -R-- String    laNames(2)
   |        Textual Convention: DisplayString
   |        Size: 0..255
   +-- -R-- String    laLoad(3)
   |        Textual Convention: DisplayString
   |        Size: 0..255
タイトルとURLをコピーしました