Net-SNMPのインストールと設定、使い方について記載しています。
インストール&起動
yumを使って、net-snmpをインストールし、起動/停止の確認を行います。
# yum install net-snmp # yum install net-snmp-utils # rpm -qa | grep snmp net-snmp-5.5-41.el6.x86_64 net-snmp-libs-5.5-41.el6.x86_64 # # /etc/init.d/snmpd start # /etc/init.d/snmpd stop
次は、snmpエージェントの設定ファイルである「/etc/snmp/snmpd.conf」の設定を行います。
snmp基本設定
まず「/etc/snmp/snmpd.conf」にて、snmpエージェントの基本となる設定を行います。
以下4つの設定項目は、snmp設定に関する基本設定となります。
No | 項目 | 説明 |
1 | com2sec | セキュリティ名に対応するネットワーク範囲、コミュニティ名を設定します。 |
2 | group | セキュリティ名をグループ名とSNMPバージョンにマッピングします。 |
3 | view | SNMPで取得を許可するOID範囲を設定します。 |
4 | access | グループに対するアクセス許可設定を行います。 |
上記載に関する必要最低限の設定例は以下になります。詳細説明は割愛しますが、内容としては、ローカルホストからのsnmpアクセス(v2c)だけ許可をする、というものです。
com2sec local localhost CommunityNameRO group local_group v2c local view view_all included .1 80 access local_group "" any noauth exact view_all none none
環境に合わせてこれらの値を設定してください。設定後には、snmpdの再起動を行い、設定を反映させてください。
この時点で設定が有効になっているかどうかを確認する為に、以下のコマンドで値が帰ってくるかどうかを確認する事をお勧めします。
snmpwalk -v 2c localhost -c CommunityNameRO .1.3.6.1.2.1.1.1
「SNMPv2-MIB::sysDescr.0」の値として、unameコマンドの結果が帰ってくれば問題なく設定が機能しています。
次に、snmpエージェントで設定できる個別設定を行っていきます。
snmp個別設定(ロケーション等)
次に、snmpエージェントの個別設定を行います。
デフォルトで有効になっている以下の項目は適当に設定してください。
syslocation | 該当マシンがあるロケーション情報を設定する個所です。利用環境によっては有効活用する事ができます。 |
syscontact | 該当マシンに対する連絡先を設定する個所です。利用環境によっては有効活用する事ができます。 |
dontLogTCPWrappersConnects | ログ出力を制御する事が出来ます。 |
この辺りの設定は、面白みがあまりないですが、環境に合わせて設定してください。
snmpを用いた監視設定
以下にNet-SNMPを用いて設定可能な監視項目について記載します。
項目 | 説明 | 設定例 |
proc | プロセスの起動状態について監視する際に設定する項目です。 | proc httpd 10 4 |
disk | ディスクの使用状況を監視する際に設定する項目です。 | disk / 100000 |
load | ロードアベレージを監視する際に設定する項目です。 | load 10 5 5 |
上記以外にも「exec(snmpエージェントに起動させたいプログラムを設定し、応答を確認できる項目)」や「pass」などの項目もありますが、ここでは割愛します。
以下に、上記載で設定した「proc」「disk」「load」について、snmpwalk実行による取得結果例を記載します。
「proc」設定の結果
# snmpwalk -v 2c localhost -c CommunityNameRO .1.3.6.1.4.1.2021.2 UCD-SNMP-MIB::prIndex.1 = INTEGER: 1 UCD-SNMP-MIB::prNames.1 = STRING: httpd UCD-SNMP-MIB::prMin.1 = INTEGER: 4 UCD-SNMP-MIB::prMax.1 = INTEGER: 10 UCD-SNMP-MIB::prCount.1 = INTEGER: 5 UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: noError(0) UCD-SNMP-MIB::prErrMessage.1 = STRING: UCD-SNMP-MIB::prErrFix.1 = INTEGER: noError(0) UCD-SNMP-MIB::prErrFixCmd.1 = STRING: #
「disk」設定の結果
# snmpwalk -v 2c localhost -c CommunityNameRO .1.3.6.1.4.1.2021.9 UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1 UCD-SNMP-MIB::dskPath.1 = STRING: / UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/mapper/VolGroup-lv_root UCD-SNMP-MIB::dskMinimum.1 = INTEGER: 100000 UCD-SNMP-MIB::dskMinPercent.1 = INTEGER: -1 UCD-SNMP-MIB::dskTotal.1 = INTEGER: 18102140 UCD-SNMP-MIB::dskAvail.1 = INTEGER: 14263428 UCD-SNMP-MIB::dskUsed.1 = INTEGER: 2919160 UCD-SNMP-MIB::dskPercent.1 = INTEGER: 17 UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 6 UCD-SNMP-MIB::dskTotalLow.1 = Gauge32: 18102140 UCD-SNMP-MIB::dskTotalHigh.1 = Gauge32: 0 UCD-SNMP-MIB::dskAvailLow.1 = Gauge32: 14263428 UCD-SNMP-MIB::dskAvailHigh.1 = Gauge32: 0 UCD-SNMP-MIB::dskUsedLow.1 = Gauge32: 2919160 UCD-SNMP-MIB::dskUsedHigh.1 = Gauge32: 0 UCD-SNMP-MIB::dskErrorFlag.1 = INTEGER: noError(0) UCD-SNMP-MIB::dskErrorMsg.1 = STRING: #
「load」設定の結果
# snmpwalk -v 2c localhost -c CommunityNameRO .1.3.6.1.4.1.2021.10 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.20 UCD-SNMP-MIB::laLoad.2 = STRING: 0.14 UCD-SNMP-MIB::laLoad.3 = STRING: 0.07 UCD-SNMP-MIB::laConfig.1 = STRING: 10.00 UCD-SNMP-MIB::laConfig.2 = STRING: 5.00 UCD-SNMP-MIB::laConfig.3 = STRING: 5.00 UCD-SNMP-MIB::laLoadInt.1 = INTEGER: 20 UCD-SNMP-MIB::laLoadInt.2 = INTEGER: 14 UCD-SNMP-MIB::laLoadInt.3 = INTEGER: 7 UCD-SNMP-MIB::laLoadFloat.1 = Opaque: Float: 0.200000 UCD-SNMP-MIB::laLoadFloat.2 = Opaque: Float: 0.140000 UCD-SNMP-MIB::laLoadFloat.3 = Opaque: Float: 0.070000 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: #
ここまでで、Net-SNMPを用いて、プロセス状況やディスク利用状況、ロードアベレージ(CPU稼働負荷状態)に関するデータを取得できる事が確認できました。
SNMPマネージャ機能
Net-SNMPには、SNMPエージェントから値を取得する為のSNMPマネージャ機能が付属しています。既に上記載したとおり、snmpwalkコマンドなどが該当します。
以下に、Net-SNMPで利用できるSNMPマネージャコマンド(snmpエージェントから値を取得できるコマンド)を紹介します。
snmpwalk | 指定したOID配下の値を全て取得します。 |
snmpget | 指定したOIDの値を取得します。 |
snmpgetnext | 指定したOIDの次の値を取得します。 |
snmptranslate | 指定したOIDのMIB名称を取得します。その逆も可能。また、OIDの詳細説明や、ツリー表示なども可能。 |
以下に、snmpwalkと、snmpget、snmpgetnextのそれぞれの出力結果を記載しますので、各コマンドの関係を見ていただければと思います。
# snmpwalk -v 2c localhost -c CommunityNameRO .1.3.6.1.4.1.2021.10.1.2 UCD-SNMP-MIB::laNames.1 = STRING: Load-1 UCD-SNMP-MIB::laNames.2 = STRING: Load-5 UCD-SNMP-MIB::laNames.3 = STRING: Load-15 # snmpget -v 2c localhost -c CommunityNameRO .1.3.6.1.4.1.2021.10.1.2.1 UCD-SNMP-MIB::laNames.1 = STRING: Load-1 # snmpgetnext -v 2c localhost -c CommunityNameRO .1.3.6.1.4.1.2021.10.1.2.1 UCD-SNMP-MIB::laNames.2 = STRING: Load-5 #
snmptranslate の実行結果を以下に記載します。snmptranslate はコマンド実行ノード上だけで完結するコマンドであり、「このOIDのMIB名称は何だっけ?」という時に有用なコマンドだと思います。
# snmptranslate .1.3.6.1.4.1.2021.10.1.3 UCD-SNMP-MIB::laLoad # snmptranslate -On UCD-SNMP-MIB::laLoad .1.3.6.1.4.1.2021.10.1.3 #
また、snmptranslateコマンドのTRANSOPTS(-T)」オプションを利用すると、様々な情報を表示する事が可能です。例えば、「-Td」オプションを付けると、OIDの詳細説明を表示する事が可能です。
# snmptranslate -Td UCD-SNMP-MIB::laLoad UCD-SNMP-MIB::laLoad laLoad OBJECT-TYPE -- FROM UCD-SNMP-MIB -- TEXTUAL CONVENTION DisplayString SYNTAX OCTET STRING (0..255) DISPLAY-HINT "255a" MAX-ACCESS read-only STATUS current DESCRIPTION "The 1,5 and 15 minute load averages (one per row)." ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) ucdavis(2021) laTable(10) laEntry(1) 3 } #
「-Tp」オプションでは、ツリーフォーマットを表示する事が可能です。
# snmptranslate -Tp (OIDを指定)
関連する投稿