中年engineerの独り言 - crumbjp

LinuxとApacheの憂鬱

簡単SNMP(環境構築編)

SNMPで誤解してた部分を勉強し直したついでに纏めてみた。

前回(概要編)の続き

今回は環境構築編。

 設定ファイルが結構クセモノなので次回に持ち越す予定

net-snmp ( on centos6.2 x86_64 )

インストール
本体
簡単。
# yum install net-snmp
ツール(SNMPクライアント等)
無いと確認が大変なので入れとく。
本来はネットワーク越しにアクセスするので要らない。
# yum install net-snmp-utils
構成
/usr/sbin/snmpd
SNMP daemon本体
#0000FF;font-weight:bold;">/etc/snmp/snmpd.conf:SNMP daemon設定ファイル
/usr/sbin/snmptrapd
ある値が閾値に達した際に仕事をするdaemon
/etc/snmp/snmptrapd.conf
その設定
#0000FF;font-weight:bold;">/etc/snmp/snmp.conf:SNMPクライアント用設定(最初は無い)
/usr/bin/snmpconf
設定ウィザード
/usr/share/snmp/mibs/
MIB置き場(前回説明済み)
/var/lib/net-snmp/
実行時に使うディレクトリ。たまに登場
/etc/snmp/snmpd.conf 設定

デフォルト状態(コメント削除)

#       sec.name  source          community
com2sec notConfigUser  default       public

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

#       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

#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  systemview none none

# この辺デフォルトで良い。(余計な情報)
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)

# SNMP接続ログが減る
dontLogTCPWrappersConnects yes
access
group と viewを紐付け
view
ツリーのどの部分を見せるか?
group
userが紐付く
community
秘密。ほぼパスワード

色々書こうしたけど、、どうやっても長くなるからやめた。
割と普通のユーザ管理&ディレクトパーミッションの発想なので

あとは感じてくれ!!

一旦デフォルトで起動してしまう。

SNMPD 起動
起動・終了
なんの捻りも無い
/etc/init.d/snmpd start
/etc/init.d/snmpd stop
/etc/init.d/snmpd restart
自動起動
yumパッケージ版は最初からchkconfigに入ってるからこれだけ。
# /sbin/chkconfig --level 345 snmpd on
頻出コマンド
snmpd
コンフィグの状態などを知りたい時に使う
/usr/sbin/snmpd -Dread_conf -H
/usr/sbin/snmpd -Dall -H 2>&1 | grep read_conf
snmptranslate
名前解決や詳細など。MIB定義を解析しているのでsnmpdは必要ない。
$ snmptranslate .1.3.6.1.4
SNMPv2-SMI::private
# -Of フルパス名前表記
$ snmptranslate -Of .1.3.6.1.4
.iso.org.dod.internet.private
# -On コード表記
$ snmptranslate -On SNMPv2-SMI::private
.1.3.6.1.4
# -Tp ツリー表記
$ snmptranslate -Tp .1.3.6.1.4 | head
+--private(4)
   |
   +--enterprises(1)
      |
      +--ucdavis(2021)
      |  |
      |  +--prTable(2)
      |  |  |
      |  |  +--prEntry(1)
      |  |     |  Index: prIndex
# -Td 詳細
$ snmptranslate -Td .1.3.6.1.2.1.1.4
SNMPv2-MIB::sysContact
sysContact OBJECT-TYPE
  -- FROM       SNMPv2-MIB, RFC1213-MIB
  -- TEXTUAL CONVENTION DisplayString
  SYNTAX        OCTET STRING (0..255)
  DISPLAY-HINT  "255a"
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION   "The textual identification of the contact person for
            this managed node, together with information on how
            to contact this person.  If no contact information is
            known, the value is the zero-length string."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) 4 }
snmpwalk
指定パス以下の値を再帰なめ
# snmpwalk -v SNMPバージョン -c コミュニティ名 接続先 パス(OID)
$ snmpwalk -v 1 -c public 127.0.0.1  .1.3.6.1.2.1.1 | head
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos6 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (101106) 0:16:51.06
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: foo
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-MPD-MIB::snmpMPDMIBObjects.3.1.1
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
snmpget
単発get
# snmpwalkとほぼ一緒
$ snmpget -v 1  -c public 127.0.0.1 .1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: centos6
snmpset
あまり使わないが一応紹介(デフォルト設定のsnmpdでは拒否される)
OID定義がread-write、かつ、snmpd.conf設定で書き込み可能の場合のみ
色々リモート制御できる。
$ snmpset -v 1  -c public 127.0.0.1 .1.3.6.1.2.1.1.5.0 s foo
SNMPv2-MIB::sysName.0 = STRING: foo

次回

/etc/snmp/snmpd.conf ちゃんと設定するところ迄
ACL設定 v2cまで