SNMPTTインストール時に"/usr/share/snmptt 配下が作成されていないのは正しいのでしょうか?

お世話になっております。
以下の環境でZabbixの構築中です。

CentOS6.6 x64
zabbix.x86_64----2.4.6-1.el6
net-snmp.x86_64--1:5.5-54.el6_7.1
snmptt.noarch----1.4-1.el6

■質問の経緯
Zabbix構築にあたっては以下のあぱーブログ様の記事を参考にしました。
https://blog.apar.jp/linux/334/

この延長で、SNMPトラップの設定も同ブログの下記の記事を参考にしました。
https://blog.apar.jp/zabbix/2184/

SNMPTTの設定までして、トラップ受信の動作確認をしましたところ
/var/log/messages へのsnmptrapdが出力するログは出力されていましたが
/var/log/snmptt/snmptt.log へのログ出力はありませんでした。

いろいろ試行錯誤の結果、
上記ブログ記事の snmptrapd.conf で設定している
「perl do "/usr/share/snmptt/snmptthandler-embedded";」
の/usr/share/snmptt/snmptthandler-embedded というファイルがなく
snmpttにトラップを渡すところが空振りしていたようです。

snmptrapd.confを下記フォーラムQAの質問者様の設定にしてみたところ
snmptt.log が出力されるようになりました。
http://www.zabbix.jp/node/2983

> cat /etc/snmp/snmptrapd.conf
> authCommunity log,execute,net public
> traphandle default /usr/sbin/snmptthandler
> disableAuthorization yes

■質問事項
上記経緯の中で、私の環境下で /usr/share/snmptt/ 配下に何も無いのがとても気になっています。
通常のyumインストールでsnmpttをインストールした場合、
/usr/share/snmptt/ は作成されていなくても問題ないのでしょうか?
※インストールコマンド「yum -y install snmptt」

また、snmptrapd→snmptt へのトラップ情報引渡しの設定だと思うのですが
「perl do "/usr/share/snmptt/snmptthandler-embedded";」
と「traphandle default /usr/sbin/snmptthandler」では
実質的にやっていることは同じなのでしょうか?

よろしくお願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー KAZ の写真

XTNさん

マニュアル読まれましたか?A(^^;
以下、2.4のマニュアル(英語)と2.2のマニュアル(日本語)です。
snmpttの設定は2.2のマニュアル参考にされても良いかと。

3 SNMP traps
https://www.zabbix.com/documentation/2.4/manual/config/items/itemtypes/s...

3 SNMPトラップ
https://www.zabbix.com/documentation/2.2/jp/manual/config/items/itemtype...

マニュアルには下記の様に書かれてます。

・add the perl script to snmptrapd configuration file (snmptrapd.conf), e.g.:
 perl do "[FULL PATH TO PERL RECEIVER SCRIPT]";

・configure the receiver, e.g:
 $SNMPTrapperFile = '[TRAP FILE]';
 $DateTimeFormat = '[DATE TIME FORMAT]';

・snmptrapd 設定ファイル(snmptrapd.conf)にperlのスクリプトを追加します。例:
 perl do “[FULL PATH TO PERL RECEIVER SCRIPT]”;

・レシーバを設定します。例:
 $SNMPTrapperFile = '[TRAP FILE]';
 $DateTimeFormat = '[DATE TIME FORMAT]';

インストールしたディレクトリ指定しないとダメかと…A(^^;

「perl do "/usr/share/snmptt/snmptthandler-embedded";」ではなく
「perl do "/usr/sbin/snmptt/snmptthandler-embedded";」じゃないですか?

2.2のマニュアルに以下の注意書きがあります。

最高のパフォーマンスのためには、トラップを渡すsnmptthandler-embeddedを使用するデーモンとしてSNMPTTが設定される必要があります。SNMPTTのホームページで設定の説明書を参照してください: http://snmptt.sourceforge.net/docs/snmptt.shtml

リンク先のページに行くと「perl do "/usr/sbin/snmptthandler-embedded";」と書いてあったりします。A(^^;

ブログ等参考にされる場合でも一回マニュアルを読まれると理解が良いかと…

ユーザー TNK の写真

ディレクトリ /usr/share/snmptt/ にファイルが無いのは、参考に
されたブログで利用しているパッケージとインストールされている
パッケージが異なるからだと思われます。

利用されているsnmpttのバージョン番号からして、Zabbix SIAのリ
ポジトリから取得してインストールされませんでしたか?
それに対して、参考にされたブログでは、epelのパッケージを利用
して構築されているようです。

つまり、パッケージを提供している組織や人によっては、ディレク
トリ構成や内容が異なる場合があるということです。

きちんと手順や内容を確認できていないのであれば、yumコマンド
で「-y」は付けないようにして、どのリポジトリから何がインスト
ールされるのかをきちんと確認するようにされることをお勧めしま
す。

snmptthandler と snmptthandler-embedded の違いに関しては、
KAZさんからの回答にあった通りです。

SNMP Trapの処理が頻繁ではなく、Zabbix SIAから取得したsnmptt
パッケージを利用されているのであれば、snmptrapd.confの設定と
しては、

 traphandle default /usr/sbin/snmptthandler

を利用すればよいと思います。

私が以前整理した設定手順は、以下のURLにも書いてありますので
ご参照ください。

SNMP Trapの受信について
http://www.zabbix.jp/node/2983

ユーザー XTN の写真

KAZさん
TNKさん

ご回答ありがとうございます。

まず、自環境で「snmptthandler-embedded」をfind検索してみましたが存在しませんでした。
TNKさんのおっしゃる通り、私のインストールしたパッケージにはそもそも入っていなかったようですね。

※yum info snmptt.noarch によると「From repo: zabbix-non-supported」と出ました。
 これが「Zabbix SIAのリポジトリから取得している」ということでしょうか?

KAZさんから教えていただきましたURLで気になったのは以下の箇所です。

> Optional: To use snmptthandler-embedded, Net-SNMP's snmptrapd must be compiled with embedded Perl enabled (--enable-embedded-perl' configuration option)

snmptthandler-embeddedを使うためには
--enable-embedded-perlオプションをつけたパールでNet-SNMPをコンパイルするように
書いてるっぽいのですが、Net-SNMPのコンパイルやりなおし、
となるとハードルが高そうですね。

今回の環境ではトラップの頻度は高くなさそうですので、
TNKさんのおっしゃる「traphandle default /usr/sbin/snmptthandler」
で行こうと思います。

また、掲題の「/usr/share/snmptt 配下が作成されていない」については
参照したブログとそもそもインストール元のパッケージが異なるということで
原因が理解できました。

どうもありがとうございました。

ユーザー TNK の写真

※yum info snmptt.noarch によると「From repo: zabbix-non-supported」と出ました。
 これが「Zabbix SIAのリポジトリから取得している」ということでしょうか?

Zabbixをインストールされた時の手順を思い出して頂きたいのです
が、最初にzabbix-releaseというパッケージをインストールされま
せんでしたか?

Zabbix 2.2であるならば、zabbix-release-2.2-1.el6.noarch.rpm
です。

このパッケージをインストールすると、

 zabbix
 zabbix-non-supported

の2つのリポジトリが登録されるようになっています。
詳細は、以下のファイルの内容を確認してみてください。

 /etc/yum.repos.d/zabbix.repo

「From repo: zabbix-non-supported」と出力されるのであれば、
この設定ファイルにある「zabbix-non-supported」から取得された
ものだと思われます。
また、

 # rpm -qi snmptt

と実行して、

 Vendor: Zabbix SIA

と出力されれば、Zabbix SIAが公開しているものであることが確認
できます。

snmptthandler-embeddedを使うためには
--enable-embedded-perlオプションをつけたパールでNet-SNMPをコンパイルするように
書いてるっぽいのですが、Net-SNMPのコンパイルやりなおし、
となるとハードルが高そうですね。

CentOS 6標準のsnmptrapd(net-snmp)では、SRPMを見る限り、

 --enable-embedded-perl

を指定してconfigureを実行しビルドしているようです。
つまり、snmptrapd自体は、embedded-perlを利用できると思われま
すので、net-snmp自体の再コンパイルは必要ないでしょう。
net-snmpとnet-snmp-perlがインストールされていればよいはずで
す。

ということで、epelのsnmpttパッケージを利用するか、ご自身で、
別途snmpttをインストールすれば、snmptthandler-embeddedを入手
できると思います。
epelのパッケージとZabbix SIAのパッケージではデフォルトの設定
が異なっていたと思うのでご注意ください。

やってみてはいませんが、Zabbix SIAのSRPM内のsnmptt_1.4.tgzの
中には含まれているので、snmptthandler-embeddedも含むようなパ
ッケージを生成するようspecファイルを変更してリビルドしても対
応できるかもしれません。

ユーザー XTN の写真

TNKさん

>詳細は、以下のファイルの内容を確認してみてください。
> /etc/yum.repos.d/zabbix.repo

># rpm -qi snmptt
>と実行して、
> Vendor: Zabbix SIA
>と出力されれば、Zabbix SIAが公開しているものであることが確認
>できます。

以下のようになりました。
おっしゃるとおりZabbix SIA からの取得でした。

[root@zabbix1 ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/2.4/rhel/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/6/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

[root@zabbix1 ~]# rpm -qi snmptt
Name : snmptt Relocations: (not relocatable)
Version : 1.4 Vendor: Zabbix SIA
Release : 1.el6 Build Date: Sun 15 Jun 2014 11:30:09 AM JST
Install Date: Tue 18 Aug 2015 02:50:12 PM JST Build Host: build.zabbix.com
Group : System Environment/Daemons Source RPM: snmptt-1.4-1.el6.src.rpm
Size : 571342 License: GPLv2+
Signature : DSA/SHA1, Sun 15 Jun 2014 11:32:03 AM JST, Key ID d13d58e479ea5ed4
Packager : Zabbix SIA
URL : http://www.snmptt.org/
Summary : SNMP Trap Translator
Description :
SNMPTT (SNMP Trap Translator) is an SNMP trap handler written in Perl
for use with the Net-SNMP / UCD-SNMP snmptrapd program.

1. /etc/yum.repos.d/zabbix.repoの
 リポジトリ zabbix/zabbix-non-supported について enabled=0 に修正
 
2.snmpttをとめる
 # service snmptt stop
 
3.snmpttのアンインストール
 # yum remove snmptt

4.snmpttのインストール
 # yum install snmptt

※EPELからのインストールを確認
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
snmptt noarch 1.4-0.9.beta2.el6 epel 129 k
Installing for dependencies:
perl-Crypt-DES x86_64 2.05-9.el6 epel 19 k
perl-Digest-HMAC noarch 1.01-22.el6 base 22 k
perl-Digest-SHA1 x86_64 2.12-2.el6 base 49 k
perl-Net-SNMP noarch 5.2.0-4.el6 epel 100 k

Transaction Summary
================================================================================

5.snmptthandler-embeddedの存在確認
 # ll /usr/share/snmptt/
 
 ↓ありました!
 -rw-r--r-- 1 root root 9232 Oct 22 2012 snmptthandler-embedded
 
6.snmptrapd.confを 「perl do "/usr/share/snmptt/snmptthandler-embedded";」に修正。

7.snmpttのサービス起動&snmptrapdの再起動

8.トラップの試験→/var/log/snmptt/snmptt.log へのログ出力を確認

ということで「perl do "/usr/share/snmptt/snmptthandler-embedded";」版での
トラップ実装ができました。

ありがとうございました!

ユーザー KAZ の写真

XTNさん

snmptthandler-embeddedを使うためには
--enable-embedded-perlオプションをつけたパールでNet-SNMPをコンパイルするように
書いてるっぽいのですが、Net-SNMPのコンパイルやりなおし、
となるとハードルが高そうですね。

Net-SNMMP5.4からデフォルトで--enable-embedded-perlオプション付きでコンパイルされてるはずなんですが…A(^^;

Zabbixのマニュアルにも書いてありますが…

Perlトラップレシーバの設定

要件:Perl, --enable-embedded-perlでコンパイルされたNet-SNMP (Net-SNMP 5.4以降は、デフォルトで実行されています。)

確かCentOS6.4で試した時は使えた様な…A(^^;

取り敢えず「traphandle default /usr/sbin/snmptthandler」で試して頂けると良いかと…

ユーザー XTN の写真

KAZさん

コメントありがとうございます。

>Net-SNMMP5.4からデフォルトで--enable-embedded-perlオプション付きでコンパイルされてるはずなんですが…A(^^;

TNKさんへの回答に記載しましたが
snmpttの取得元をZABBIX SIAからEPELに変更したところ
/usr/share/snmptt/snmptthandler-embedded ファイルを取得できました。

おそらく、上記の「--enable-embedded-perlオプション付きでコンパイル」という
前提条件はすでに満たしているのでしょうが
肝心のsnmptthandler-embedded ファイルが
ZABBIX SIA版のsnmptt には入っていないということなのだと思います。

いろいろご教授ありがとうございました!