TOP > 技術メモ > Net-SNMP

Net-SNMP

Net-SNMP インストール

インストールは以下のサイトから、ソースのバイナリを取得するか、
Net-SNMP
OSのソフトウェア(パッケージ)インストールコマンドからインストールする。

					# CentOS のインストールコマンド例
					yum -y install net-snmp
					yum -y install net-snmp-utils
注意点は、バイナリからのインストールとパッケージのインストールでは、インストールディレクトリ先が異なるということ。
HP-UXの場合は HP-UX SNMP - How to Run the HP-UX SNMP Agent AND the Net-SNMP Agent in Parallelを参考に。

以下にバイナリからのインストール方法の例を記載する。

					# CentOS7の環境で、以下サイトから、Net-SNMP 5.7.2.1 をインストールした例とする。
					# < http://net-snmp.sourceforge.net/ >
					# バージョン:net-snmp-5.7.2.1.tar.gz
					tar -xvf net-snmp-5.7.2.1.tar.gz # 解凍
					cd net-snmp-5.7.2.1 # ディレクトリ移動
					./configure # 環境依存の設定は、質問に対しては、とりあえず全て[ENTER]キーで進める
					
					# 以下エラーが出た場合は、Cコンパイラが無いことが原因。
					yum install gcc # GCC 等のコンパイラをインストールすれば解決
					# =======================================
					# configure:6767: checking for cl.exe
					# configure:6797: result: no
					# configure:6821: error: in `/root/net-snmp-5.7.2.1':
					# configure:6823: error: no acceptable C compiler found in $PATH
					# =======================================
					
					# 以下は設定を全て[ENTER]キーで進めた場合の設定例
					# =======================================
					# ①*** Default SNMP Version:
					#	Default version of SNMP to use (3):
					# 	setting Default version of SNMP to use to...  3
					# ②*** System Contact Information:
					# 	System Contact Information (@localdomain):
					# 	setting System Contact Information to...  @localdomain
					# ③*** System Location:
					# 	System Location (Unknown):
					# 	setting System Location to...  Unknown
					# ④*** Logfile location:
					# 	Location to write logfile (/var/log/snmpd.log):
					# 	setting Location to write logfile to...  /var/log/snmpd.log
					# ⑤*** snmpd persistent storage location:
					# 	Location to write persistent information (/var/net-snmp):
					# 	setting Location to write persistent information to...  /var/net-snmp
					# =======================================
					
					# 次に make コマンドからインストールする
					make
					make test # 確認コマンド。時間がかかるためスキップしても良い
					make install
					
					# make時に以下エラーが出た場合、MakeMakerをインストールすれば解決
					yum -y install perl-ExtUtils-MakeMaker
					# ========================================
					# Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 1.
					# BEGIN failed--compilation aborted at Makefile.PL line 1.
					# make: *** [perlmakefiles] エラー 2
					# ========================================
					
					
					# snmpd.conf は make install 後に作成される、テンプレートを元に作成する
					# cp EXAMPLE.conf /usr/local/share/snmp/snmpd.conf


					# コピーしたテンプレートを編集
					vi /usr/local/share/snmp/snmpd.conf
				
				
					# 起動例
					snmpd -Lf /var/log/snmpd.log -p /var/run/snmpd -a -Dsnmp/pass,snmp_agent
				
				
					# 停止例
					kill `ps -ef | grep snmpd | grep -v grep | awk '{print $2}'`

Net-SNMP アップデートの注意点

Net-SNMPはOSSのため、下位バージョンとの互換性が無くなるアップデートが多い。
特に 5.2.x から、exec, sh コマンドが deprecated になっていて、
5.4.x では exec を OID 指定で実行できなくなった(exec の OID 指定は廃止)。
そのため、5.3以前のバージョンからアップデートを検討している方は要注意。
extend は MIB(OID)の構成が異なるため、SNMPマネージャ側から監視できなくなる怖れがある。
とはいうものの、重要なセキュリティパッチも当たっていることから、欲を言えば最新バージョンが良い。

				# 5.1 での実行例 =====================================================================
				#  snmpd.conf 設定例)
				#   exec echotest /bin/echo  hello world
				[root]# snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.8 -On
				.1.3.6.1.4.1.2021.8.1.1.1 = INTEGER: 1
				.1.3.6.1.4.1.2021.8.1.2.1 = STRING: echotest
				.1.3.6.1.4.1.2021.8.1.3.1 = STRING: /bin/echo hello world
				.1.3.6.1.4.1.2021.8.1.100.1 = INTEGER: 0
				.1.3.6.1.4.1.2021.8.1.101.1 = STRING: hello world
				.1.3.6.1.4.1.2021.8.1.102.1 = INTEGER: 0
				.1.3.6.1.4.1.2021.8.1.103.1 = STRING:
				
				# 5.7.2.1 の実行例 =================================================================
				#  snmpd.conf 設定例)
				#   exec test1 /bin/echo  Hello, world!
				#   extend .1.3.6.1.4.1.2021.8 test2 /bin/echo  Hello, world! SAMPLE!!
				[root]# snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.8 -On
				.1.3.6.1.4.1.2021.8.1.0 = INTEGER: 1 # ★新しい値(5.1には無い)
				.1.3.6.1.4.1.2021.8.1.1.1 = INTEGER: 1
				.1.3.6.1.4.1.2021.8.1.2.1 = STRING: testExec
				.1.3.6.1.4.1.2021.8.1.3.1 = STRING: /bin/echo  Hello, world!
				.1.3.6.1.4.1.2021.8.1.100.1 = INTEGER: 0
				.1.3.6.1.4.1.2021.8.1.101.1 = STRING: Hello, world!
				.1.3.6.1.4.1.2021.8.1.102.1 = INTEGER: noError(0)
				.1.3.6.1.4.1.2021.8.1.103.1 = STRING:
				# 以下 extend の OID 指定の場合フォーマットが大きく変わり、出力個数も増える
				.1.3.6.1.4.1.2021.8.2.1.2.5.116.101.115.116.52 = STRING: "/bin/echo"
				.1.3.6.1.4.1.2021.8.2.1.3.5.116.101.115.116.52 = STRING: "Hello, world! SAMPLE!!"
				.1.3.6.1.4.1.2021.8.2.1.4.5.116.101.115.116.52 = ""
				.1.3.6.1.4.1.2021.8.2.1.5.5.116.101.115.116.52 = INTEGER: 5
				.1.3.6.1.4.1.2021.8.2.1.6.5.116.101.115.116.52 = INTEGER: 1
				.1.3.6.1.4.1.2021.8.2.1.7.5.116.101.115.116.52 = INTEGER: 1
				.1.3.6.1.4.1.2021.8.2.1.20.5.116.101.115.116.52 = INTEGER: 4
				.1.3.6.1.4.1.2021.8.2.1.21.5.116.101.115.116.52 = INTEGER: 1
				.1.3.6.1.4.1.2021.8.3.1.1.5.116.101.115.116.52 = STRING: "Hello, world! SAMPLE!!"
				.1.3.6.1.4.1.2021.8.3.1.2.5.116.101.115.116.52 = STRING: "Hello, world! SAMPLE!!"
				.1.3.6.1.4.1.2021.8.3.1.3.5.116.101.115.116.52 = INTEGER: 1
				.1.3.6.1.4.1.2021.8.3.1.4.5.116.101.115.116.52 = INTEGER: 0
				.1.3.6.1.4.1.2021.8.4.1.2.5.116.101.115.116.52.1 = STRING: "Hello, world! SAMPLE!!"

▲ページの先頭へ