- ベストアンサー
SNMPを使ってメッセージ送信?
サーバの管理をしています。 Windows2000サーバ上でなにか問題が発生したときに通知する 仕組みを作らねばなりません。 監視用のサーバには、SNMPトラップを受信して画面に表示 させるアプリケーションが入っているので、これを利用 したいのですが、標準の機能だけで(フリーウェアとかも使わず) 被監視サーバからSNMPを使って監視サーバにメッセージを 送るようなことは可能ですか? また、被監視サーバがSolaris等のUNIX系の場合はどうでしょう? よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 > と、いうことは、コマンド引数に送信先とメッセージを与えてsnmpトラップを > 送信するというようなことは無理無理ということですね。 > それか、既存のエンタープライズトラップになりすまして メッセージを載せる > なんてことも無理でしょうか。 既存のトラップを送信するだけであれば比較的簡単です。 被監視サーバに、SNMPトラップを送信するためのコマンドさえ入っていれば 任意の条件下においてそのコマンドを実行するようなスクリプトを組めば良いので。 ただ、既存のトラップは『どんな条件を満たした場合にどんなMIB値を添えてトラップを送信するか』 というのが既に定められていますので、添付するMIBオブジェクトの種類を選択/変更することは出来ません。 それに、例えば、温度が規定値を越えたときに発生させるのに LinkDown という 別のトラップになりすましたとします。 監視サーバ側では、あくまでも『LinkDown トラップを受信した』として 処理を行なうので、逆に監視に混乱を招く事は明白ですね。 第一、実際の環境では、意図的に送信したトラップだけでなく、本物の LinkDown トラップも当然発生するはずですし…。 やはり、ご希望の動作を実現させるためには、特定の状況下において生成される 特定のトラップ定義を作成することがベストです。 (そのためにはツールが必要ですので、結局、要件は満たしませんが…)
その他の回答 (4)
Windows2000ServerのCD-ROMにある「\Support\Tools」に 「snmputil.exe」「smnputilg.exe」(GUI)がありました。 試していませんが、これでtrap送出できないでしょうか?
お礼
回答ありがとうございました。 とりあえず、そんな甘いもんではないとうことはわかりました。 みなさんの仰るように、ツールを使わないといけなさそうですね。 もうちょと工夫してイイ方法ないか考えます。 参考になりました。 (お礼の文章が一緒でごめんなさい)
#2補足より >どちらにせよ、コマンド一発でポン!ってのは無理ですか・・・。 > たぶん作り込みが必要でしょうね...。 標準で「イベントトラップトランスレータ」ってのがあるんですが(evntcmd もしくは evntwin) これはイベントをSNMPトラップに変換するやつです。 ようはイベントを自由に発生できれば、これでトラップとして送ることが可能です。 どちらにしろイベントを発生させるには作り込み、もしく要件からはずれますがフリーのツールが 必要ですね。 送信内容を指定しなくていいのであれば、特定のイベントを発生させればいいということなので、 例えば小さなボリュームを作っておいて、タスクで定期的にファイルを書き込み 意図的に空き容量しきい値オーバーのイベントを発生させるとか。
お礼
回答ありがとうございました。 とりあえず、そんな甘いもんではないとうことはわかりました。 みなさんの仰るように、ツールを使わないといけなさそうですね。 もうちょと工夫してイイ方法ないか考えます。 参考になりました。 (お礼の文章が一緒でごめんなさい)
- tomo_t_21
- ベストアンサー率36% (137/380)
SNMPトラップには、標準トラップとエンタープライズトラップがあります。 エンタープライズトラップは、例えば、あるMIB値があるしきい値を越えると 設定された宛先(trap-dest)に対して送信されるというトラップなどがあり 各ベンダー毎に独自に作成されているものです。 機器の温度が一定値を超えるとトラップを送信するというものもあります。 これらエンタープライズトラップの情報は、各エンタープライズMIBに記述されています。 機器からエンタープライズトラップを送信するためには、その機器に インストールされているSNMPエージェントが、ご希望の動作を実現するトラップ の情報が含まれたエンタープライズMIBをサポートしている必要があります。 エンタープライズMIBでは実現できない動作であれば、独自にMIBを作成することも出来ます。(但し、相当のスキルは必要です…) Solarisであれば、確か、フリーの Solstice Enterprise Agents SDK(SEA) を利用する事で実現可能です。 しかし、Solaris 標準の機能だけでは不可能です。 Win2000にはあまり詳しくはありませんが、何らかのツールはあると思います。 但し、こちらの場合も、Windowsの標準機能だけではトラップを任意に作成する ことは出来なかったと思います。 また、SNMPトラップでメッセージを送信するというよりは、SNMPパケットに 必要な情報を乗せて流すという感じに考えた方が良いです。 SNMPトラップで送信される情報は、トラップIDや各MIBの値です。 メッセージを送信するためには、どこかのMIBオブジェクト内にメッセージ文を保持させ、 その値をトラップパケットに添付して監視サーバへ送るという形になります。 (任意のMIBオブジェクトを作成するためにも、上記のSEAなどのツールが必要です) また、監視サーバでは、被監視サーバから受け取ったSNMPトラップのパケットから 必要なMIBオブジェクトの情報を抜き出して表示させるという設定を行なう必要があります。
お礼
回答ありがとうございました。 とりあえず、そんな甘いもんではないとうことはわかりました。 みなさんの仰るように、ツールを使わないといけなさそうですね。 もうちょと工夫してイイ方法ないか考えます。 参考になりました。 (お礼の文章が一緒でごめんなさい)
補足
詳細な回答ありがとうございます。 と、いうことは、コマンド引数に送信先とメッセージを与えてsnmpトラップを 送信するというようなことは無理無理ということですね。 それか、既存のエンタープライズトラップになりすまして メッセージを載せる なんてことも無理でしょうか。 どちらにせよ、コマンド一発でポン!ってのは無理ですか・・・。 甘かったようです。
自分とこは専用ツールを使ってしまっているので自信なしですが... Windowsコンポーネントの追加と削除から 管理とモニタツール→簡易ネットワーク管理プロトコル(SNMP) を入れると、SNMPサービスとtrapサービスが入りますが、これでは機能が足りないとかでしょうか? (使い方はWindowsヘルプでsnmpで検索してください) >被監視サーバがSolaris等のUNIX系の場合はどうでしょう? > ここが参考になりますでしょうか? http://www.zdnet.co.jp/help/howto/linux/0007master/06/
お礼
回答ありがとうございました。 とりあえず、そんな甘いもんではないとうことはわかりました。 みなさんの仰るように、ツールを使わないといけなさそうですね。 もうちょと工夫してイイ方法ないか考えます。 参考になりました。 (お礼の文章が一緒でごめんなさい)
補足
こんにちは。回答ありがとうございます。 Windowsヘルプで調べてみましたが、これは自由にメッセージを 送信するようなことはできないのですよね? 例えば(こんなことはしませんが、わかりやすい例) 被監視サーバのシステム時間が15:00になったら、監視サーバに 「15:00ですよー」というメッセージを送り、 監視サーバ側にて『被監視サーバから「15:00ですよー」という メッセージを受信しました』ということを認識させたいのです。ツール使わないと無理っぽいでしょうか。
お礼
回答ありがとうございました。 とりあえず、そんな甘いもんではないとうことはわかりました。 みなさんの仰るように、ツールを使わないといけなさそうですね。 もうちょと工夫してイイ方法ないか考えます。 参考になりました。 (お礼の文章が一緒でごめんなさい)