OSのISOイメージからsnmp機能を追加

Virtualbox上のゲストOS(Oracle Enterprise Linux6.8)に、snmp機能を追加したいが、ゲストOSをインターネットにつなげてないので、OSのインストール用ISOイメージを使って追加した手順の覚書

##パッケージ追加手順
###ISOイメージマウント
+ Virtualboxのゲストの設定から、光学デバイスにOSのISOファイルを設定
    + 光学デバイスは機能の追加後空に戻す。（設定したままだと再起動時に起動メニューが出る）
+ ゲストのConsoleにrootログイン
    + ログインするとISOイメージ(DVD)が自動マウントされる
    + マウントパスは「/media/OL6.8 x86_64 Disc 1 20160518」。空白があるのがちょいめんどい。

###DVD用リポジトリ設定ファイル新規作成
```shell-session
# vi /etc/yum.repos.d/dvd.repo
とし下記を記載。同じフォルダにpublic-yum-ol6.repoがあるので参考にした
[dvd]
name=Oracle Linux 6 Update 8 installation media copy
baseurl="file:///media/OL6.8 x86_64 Disc 1 20160518"
gpgkey="file:///media/OL6.8 x86_64 Disc 1 20160518/RPM-GPG-KEY-oracle"
gpgcheck=1
enabled=0
```
+ フォルダに空白があるので”で囲まないとエラーとなる

###設定ファイルの確認
```shell-session
# yum --disablerepo=\* --enablerepo=dvd list
結果省略。パッケージが一覧がリストされ、net-snmpがあることを確認。
```
+ デフォルトのInternet上のリポジトリを無効化し、作成したdvd.repoを有効化。

###パッケージ追加
```shell-session
# yum --disablerepo=\* --enablerepo=dvd install net-snmp
読み込んだプラグイン:refresh-packagekit, security, ulninfo
インストール処理の設定をしています
：（略）
================================================================================
 パッケージ             アーキテクチャ  バージョン               リポジトリー 容量
================================================================================
インストールしています:
 net-snmp               x86_64        1:5.5-57.0.1.el6         dvd        308 k
依存性関連でのインストールをします。:
 lm_sensors-libs        x86_64        3.1.1-17.el6             dvd         37 k
 net-snmp-libs          x86_64        1:5.5-57.0.1.el6         dvd        1.5 M

トランザクションの要約
================================================================================
インストール         3 パッケージ

総ダウンロード容量: 1.9 M
インストール済み容量: 6.3 M
これでいいですか? [y/N]y
：（略）
完了しました!
```
###インストール確認と起動
```shell-session
#chkconfig --list snmpd
snmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig snmpd on
# chkconfig --list snmpd
snmpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
# service  snmpd start
snmpd を起動中:                                            [  OK  ]
```

###デフォルト設定の確認
/etc/snmp/snmpd.confの初期設定は下記の通り。#行は説明のため日本語

```shell-session
#セキュリティ定義
#       セキュリティ名 アクセス可能IP範囲 コミュニティ名
com2sec notConfigUser default          public
  #notConfigUserはコミュニティ名publicでどこからでも(default)アクセス可
  #コミュニティ名はユーザIDのようなもの

#グループ定義
#     グループ名      モデル セキュリティ名(上で定義) 
group notConfigGroup v1     notConfigUser
group notConfigGroup v2c    notConfigUser
  #グループnotCondigGroupは、コミュニティ名notConfigUserでアクセス時にv1とv2cに対応
  #モデルはsnmpプロトコルのバージョンに対応。v1,v2c,usm(v3に相当)のいずれか。

#取得可能な情報の範囲(ビュー)の定義
#    ビュー名    設定タイプ MIB-OID         マスク
view systemview included   .1.3.6.1.2.1.1
view systemview included   .1.3.6.1.2.1.25.1.1
  #systemviewは.1.3.6.1.2.1.1以下と1.3.6.1.2.1.25.1.1以下にアクセス可能
  #.1.3.6.1.2.1.1はsystem
  #.1.3.6.1.2.1.25.1.1はHOST-RESOURCES-MIB::hrSystem
  #設定タイプはincluded,excluded

#グループとビューを組み合わせた権限設定
#      グループ名      Context モデル レベル  Contextマッチの方法 読取ビュー 書込ビュー  通知
access notCongigGroup ””      any    noauth exact              systemview none       none
  #notCongigGroupではsystemviewの設定範囲を読取可能
  #モデルanyはグループ名に設定した全モデル
  #レベルはnoauth,auth,privのいずれか
```

##snmpテスト
###snmpコマンドパッケージ追加
```shell-session
確認用のsnmpwalkコマンドも追加
# yum --disablerepo=\* --enablerepo=dvd install net-snmp-utils
（結果略）
```

###snmpwalkで許可された情報を取得
```shell-session
# snmpwalk -v 2c -c public localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux (略) SMP Tue May 17 07:23:38 PDT 2016 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (147601) 0:24:36.01
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: (略)
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (3) 0:00:00.03
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
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (3) 0:00:00.03
# snmpwalk -v 2c -c public localhost HOST-RESOURCES-MIB::hrSystem
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (1030705) 2:51:47.05
HOST-RESOURCES-MIB::hrSystemUptime.0 = No more variables left in this MIB View (略)
```
+ ここはあまり重要な情報がなかった

##監視に必要な情報を追加
　監視にはCPUやメモリ負荷等を知ることが必要。これらはUCD-SMTP-MIBに入っている。これらの読込を許可する
　今回は変更が最小となるような設定とする。
　MIBファイルは/usr/share/snmp/mibsにある。

```shell-session
# vi /etc/snmp/snmpd.conf
下記ビューを追加(.1.3.6.1.4.1.2021はUCD-SMTP-MIB全体)
view    systemview    included   .1.3.6.1.4.1.2021

変更を反映するためサービス再起動
# service snmpd restart
```

##追加した情報にアクセス可能か確認
```shell-session
# snmpwalk -v 2c -c public localhost UCD-SNMP-MIB::memory
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 4980732 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 4980732 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 4955328 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 2153392 kB
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 7134124 kB
UCD-SNMP-MIB::memMinimumSwap.0 = INTEGER: 16000 kB
UCD-SNMP-MIB::memShared.0 = INTEGER: 0 kB
UCD-SNMP-MIB::memBuffer.0 = INTEGER: 147124 kB
UCD-SNMP-MIB::memCached.0 = INTEGER: 1505768 kB
UCD-SNMP-MIB::memSwapError.0 = INTEGER: noError(0)
UCD-SNMP-MIB::memSwapErrorMsg.0 = STRING:
[root@odax62s mibs]# snmpwalk -v 2c -c public localhost UCD-SNMP-MIB::systemStats
UCD-SNMP-MIB::ssIndex.0 = INTEGER: 1
UCD-SNMP-MIB::ssErrorName.0 = STRING: systemStats
UCD-SNMP-MIB::ssSwapIn.0 = INTEGER: 0 kB
UCD-SNMP-MIB::ssSwapOut.0 = INTEGER: 0 kB
UCD-SNMP-MIB::ssIOSent.0 = INTEGER: 196 blocks/s
UCD-SNMP-MIB::ssIOReceive.0 = INTEGER: 14 blocks/s
UCD-SNMP-MIB::ssSysInterrupts.0 = INTEGER: 2373 interrupts/s
UCD-SNMP-MIB::ssSysContext.0 = INTEGER: 5328 switches/s
UCD-SNMP-MIB::ssCpuUser.0 = INTEGER: 2
UCD-SNMP-MIB::ssCpuSystem.0 = INTEGER: 1
UCD-SNMP-MIB::ssCpuIdle.0 = INTEGER: 95
UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 91552
UCD-SNMP-MIB::ssCpuRawNice.0 = Counter32: 51
UCD-SNMP-MIB::ssCpuRawSystem.0 = Counter32: 18256
UCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 1173343
UCD-SNMP-MIB::ssCpuRawWait.0 = Counter32: 7148
UCD-SNMP-MIB::ssCpuRawKernel.0 = Counter32: 0
UCD-SNMP-MIB::ssCpuRawInterrupt.0 = Counter32: 0
UCD-SNMP-MIB::ssIORawSent.0 = Counter32: 3100450
UCD-SNMP-MIB::ssIORawReceived.0 = Counter32: 1710948
UCD-SNMP-MIB::ssRawInterrupts.0 = Counter32: 35527224
UCD-SNMP-MIB::ssRawContexts.0 = Counter32: 80863429
UCD-SNMP-MIB::ssCpuRawSoftIRQ.0 = Counter32: 534
UCD-SNMP-MIB::ssRawSwapIn.0 = Counter32: 0
UCD-SNMP-MIB::ssRawSwapOut.0 = Counter32: 0
[root@odax62s mibs]# snmpwalk -v 2c -c public localhost UCD-SNMP-MIB::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: 1.82
UCD-SNMP-MIB::laLoad.2 = STRING: 1.89
UCD-SNMP-MIB::laLoad.3 = STRING: 1.76
UCD-SNMP-MIB::laConfig.1 = STRING: 12.00
UCD-SNMP-MIB::laConfig.2 = STRING: 12.00
UCD-SNMP-MIB::laConfig.3 = STRING: 12.00
UCD-SNMP-MIB::laLoadInt.1 = INTEGER: 182
UCD-SNMP-MIB::laLoadInt.2 = INTEGER: 189
UCD-SNMP-MIB::laLoadInt.3 = INTEGER: 176
UCD-SNMP-MIB::laLoadFloat.1 = Opaque: Float: 1.820000
UCD-SNMP-MIB::laLoadFloat.2 = Opaque: Float: 1.890000
UCD-SNMP-MIB::laLoadFloat.3 = Opaque: Float: 1.760000
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:
```

##参考
[RHELのDVD-ROMをyumのリポジトリとして登録](http://ossfan.net/setup/yum-01.html)
[SNMPの基本的なこと](https://qiita.com/Tocyuki/items/9aaae3de2858b2bfed7d)
[snmp](http://www.rose.sannet.ne.jp/nterasim/linux/snmp.html)
[サーバ監視項目でよく使う SNMP の MIB オブジェクト ID まとめ](https://www.drk7.jp/MT/archives/001604.html)
[snmpとは](http://www.webnms.jp/solutions/snmp.html)
[ucdavisサブツリー](http://www.itmedia.co.jp/help/howto/linux/0007master/06/19.html)