SNMPモニタリングシステムとの統合

Dr.Web SNMPエージェントは、SNMPプロトコル、バージョン2cまたは3を使用するモニタリングシステムのデータプロバイダーとして機能します。制御に使用できるデータのリストとデータ構造は、Dr.Web for UNIX Internet Gatewaysに付属のDr.Web MIB記述ファイルDRWEB-SNMPD-MIB.txt記述されています。このファイルは、ディレクトリ<opt_dir>/share/drweb-snmpd/mibsにあります。

簡単に設定できるように、このコンポーネントには一般的なモニタリングシステム用の設定テンプレートが付属しています。

Munin

Nagios

Zabbix

モニタリングシステム用のカスタマイズテンプレートは、<opt_dir>/share/drweb-snmpd/connectorsディレクトリにあります。

Muninモニタリングシステムとの統合

Muninモニタリングシステムには、モニタリング対象ホストにローカルに存在するクライアントmunin-nodeから統計を収集する中央サーバー(マスター)muninが含まれています。サーバーのリクエストに応じて、各モニタリングクライアントは、サーバーに転送されたデータを提供するプラグインプラグイン)を起動することによって、モニタリング対象ホストの動作に関するデータを収集します。

Dr.Web SNMPDとMuninモニタリングシステム間の接続を可能にするために、すぐに利用できるmunin-node用プラグインDr.Webが用意されています。このプラグインは<opt_dir>/share/drweb-snmpd/connectors/munin/pluginsディレクトリにあります。このプラグインは、次の2つのグラフの作成に必要なデータを収集します。

検出された脅威の数。

ファイルのスキャン統計情報

メールメッセージのスキャン統計(Dr.Web MailDコンポーネントでのみメール統計を取得できます。Dr.Web MailDはDr.Web for UNIX Internet Gatewaysには含まれていません)。

これらのプラグインは、SNMPプロトコルバージョン1、2c、3をサポートしています。これらのテンプレートプラグインに基づいて他のプラグインを作成すれば、Dr.Web SNMPD経由でDr.Web for UNIX Internet Gatewaysのコンポーネントのステータスをポーリングできます。

<opt_dir>/share/drweb-snmpd/connectors/muninディレクトリには、以下のファイルがあります。

ファイル

説明

plugins/snmp__drweb_malware

ホスト上のDr.Web for UNIX Internet Gatewaysによって検出された脅威の数を収集するために、SNMP経由でDr.Web SNMPDをポーリングするためのmunin-nodeプラグイン。

plugins/snmp__drweb_filecheck

ホスト上のDr.Web for UNIX Internet Gatewaysによってスキャンされたファイルの統計を収集するために、SNMP経由でDr.Web SNMPDをポーリングするためのmunin-nodeプラグイン。

plugin-conf.d/drweb.cfg

Dr.Webプラグインのmunin-node設定の例(環境変数用)。

Muninにホストを接続する

この説明では、Muninモニタリングシステムがモニタリングサーバーにすでにデプロイされており、モニタリング対象ホストにはDr.Web SNMPDがインストール済みでmunin-nodeとともに機能している(コンポーネントはsnmpdとともにプロキシモードで機能する)と想定しています。

1.モニタリング対象ホストの設定

snmp__drweb_*ファイルを、プラグインライブラリmunin-nodeがあるディレクトリにコピーします(ディレクトリはOSによって異なります)。たとえば、Debian/Ubuntuオペレーティングシステムであれば、パスは/usr/share/munin/pluginsとなります。

提供されているDr.Webプラグインを接続して、munin-nodeを設定します。これを行うには、munin-nodeと一緒に配布されるmunin-node-configureユーティリティを使用します。

次は、コマンドの例です。

$ munin-node-configure --shell --snmp localhost

端末画面に、プラグインに必要なシンボリックリンクを作成するためのコマンドのリストを表示します。コピーして、コマンドラインで実行します。指定されたコマンドでは、次のことを前提としています。

1)munin-nodeは、Dr.Web SNMPDがインストールされているのと同じホストにインストールされている。インストール先が異なる場合は、localhost値ではなく、モニタリング対象ホストの適切なFQDNまたはIPアドレスを指定してください。

2)Dr.Web SNMPDはSNMPバージョン2cを使用する。他のバージョンの場合は、munin-node-configureコマンドで適切なSNMPバージョンを指定してください。このコマンドには、プラグインを柔軟に設定するための引数がいくつかあります。たとえば、SNMPプロトコルのバージョン、モニタリング対象ホストでSNMPエージェントがリッスンしているポート、コミュニティストリングの実際の値などを指定できます。必要に応じて、munin-node-configureコマンドのマニュアルを参照してください。

必要であれば、munin-node用にインストールしたDr.Webプラグインを実行する環境のパラメータ値を定義(または再定義)します。環境パラメータとして、値コミュニティストリングが使用されます。これは、SNMPエージェントなどが使用するポートです。これらのパラメータは、ファイル/etc/munin/plugin-conf.d/drwebに定義する必要があります(必要に応じて作成します)。このファイルの例として、提供されているファイルdrweb.cfgを使用します。

munin-node設定ファイル(munin-node.conf)で、モニタリング対象のパラメータの値を受け取るためにmuninサーバー(マスター)をmunin-nodeに接続できるホストのすべてのIPアドレスを含めるための正規表現を指定します。たとえば、次のようになります。

allow ^10\.20\.30\.40$

この場合、IPアドレス10.20.30.40のみがホストパラメータを受信できます。

たとえば、次のコマンドを使用してmunin-nodeを再起動します。

# service munin-node restart

2.Muninサーバー(マスター)の設定

モニタリング対象ホストのアドレスと識別子をMunin設定ファイルmunin.confに追加します。このファイルは、デフォルトでは/etcディレクトリにあります(Debian/Ubuntuオペレーティングシステムでは/etc/munin/munin.confになります)。

[<ID>;<hostname>.<domain>]
address <host IP address>
use_node_name yes

ここで、<ID>は表示されるホストの識別子、<hostname>はホストの名前、<domain>はドメインの名前、<host IP address>はホストのIPアドレスです。

Muninモニタリングシステムの設定に関する公式マニュアルについては、http://guide.munin-monitoring.org/en/latest/を参照してください。

Zabbixモニタリングシステムとの統合

Dr.Web SNMPDとZabbixモニタリングシステム間の接続を確立するために必要なファイルテンプレートは、<opt_dir>/share/drweb-snmpd/connectors/zabbixディレクトリにあります。

ファイル

説明

zbx_drweb.xml

Dr.Web for UNIX Internet Gatewaysがインストールされているモニタリング対象ホストを説明するためのテンプレート

snmptt.drweb.zabbix.conf

SNMPトラップハンドラーであるsnmpttユーティリティの設定

モニタリング対象ホストの機能を説明するためのテンプレート:

カウンター(Zabbixの用語では「アイテム」)の説明。デフォルトでは、テンプレートはSNMP v2で使用されるように設定されています。

既存のグラフのセット:スキャンされたファイルの数と検出された脅威のタイプ別の分布。

Zabbixにホストを接続する

この説明では、Zabbixモニタリングシステムがモニタリングサーバーにすでにデプロイされており、モニタリング対象ホストにはDr.Web SNMPDがインストール済みで機能している(コンポーネントはsnmpdとともにプロキシモードで機能する)と想定しています。さらに、モニタリング対象ホストからSNMPトラップ通知(保護対象サーバーでDr.Web for UNIX Internet Gatewaysによって検出された脅威に関する通知を含む)を受信する場合は、モニタリングサーバーにnet-snmpパッケージをインストールします(標準ツールのsnmpttおよびsnmptrapdが使用されます)。

1.Zabbix Webインターフェースの設定テンプレートタブで、<opt_dir>/share/drweb-snmpd/connectors/zabbix/zbx_drweb.xmlファイルからモニタリング対象ホストのテンプレートをインポートします。

2.モニタリング対象ホストを適切なリストに追加します(ホスト → ホストの作成)。ホストの適切なパラメータとSNMPインターフェースの設定を指定します(ホストのdrweb-snmpdとsnmpdの設定と一致する必要があります)。

ホストタブ:

ホスト名drweb-host

表示名DRWEB_HOST

グループLinux serversを選択します

SNMPインターフェース追加をクリックして、Dr.Web SNMPDによって使用されるIPアドレスとポートを指定します(Dr.Web SNMPDはローカルホストで動作すると見なされるため、デフォルトではアドレス127.0.0.1とポート161が指定されています)。

テンプレートタブ:

追加を押し、DRWEBを確認し、選択を押します。

マクロタブ:

マクロ{$SNMP_COMMUNITY}

:SNMP V2cに「read community」を指定します(デフォルトでは、public)。

保存をクリックします。

注意:{$SNMP_COMMUNITY}マクロは、ホストテンプレートで直接指定できます。

デフォルトでは、インポートされたDRWEBテンプレートはSNMP v2用に設定されています。他のバージョンのSNMPを使用する場合は、該当するページでテンプレートに必要な編集を行います。

3.テンプレートがモニタリング対象ホストにバインドされた後、SNMP設定が正しく指定されていれば、Zabbixモニタリングシステムはテンプレートのカウンター(アイテム)のデータ収集を開始します。収集されたデータは、監視データ最新データ監視データグラフに表示されます。

4.Dr.Web SNMPDからSNMPトラップ通知を収集するために、特別なアイテムdrweb-trapsが使用されます。受信したSNMPトラップ通知のログは、監視データ → 最新データ → drweb-traps –> ヒストリページで利用できます。Zabbixは通知を収集するために、net-snmpパッケージの標準ツールsnmpttsnmptrapdを使用します。Dr.Web SNMPDからSNMPトラップ通知を受信するためのツールの設定方法については、以下を参照してください。

5.必要に応じて、Dr.Web SNMPDからのSNMPトラップ通知の受信時に状態を変更するトリガーを設定できます。状態の変更は、適切な通知を生成するためのイベントソースとして使用できます。以下の例は、トリガーの設定式を示しています。この式はtrigger expressionフィールドで指定されます。

Zabbixバージョン2.xの場合:

({TRIGGER.VALUE}=0 & {DRWEB:snmptrap[.*\.1\.3\.6\.1\.4\.1\.29690\..*].nodata(60)}=1 )|({TRIGGER.VALUE}=1 & {DRWEB:snmptrap[.*\.1\.3\.6\.1\.4\.1\.29690\..*].nodata(60)}=0)

Zabbixバージョン3.xの場合:

({TRIGGER.VALUE}=0 and {drweb-host:snmptrap[".29690."].nodata(60)}=1 ) or
({TRIGGER.VALUE}=1 and {drweb-host:snmptrap[".29690."].nodata(60)}=0 )

Dr.Web SNMPDからのSNMPトラップ通知のログが1分以内に更新された場合、イベントがトリガーされます(値が1に設定されます)。ログが次の1分以内に更新されなかった場合、トリガーの値は再び0に設定されます。

深刻度では、このトリガーの通知タイプを未分類とは異なるものにすることをお勧めします(例:警告)。

ZabbixのSNMPトラップ通知の受信を設定する

1.モニタリング対象ホストのDr.Web SNMPDの設定(TrapReceiverパラメータ)で、Zabbixが動作しているホストでsnmptrapdがリッスンするアドレスを指定する必要があります。次に例を示します。

SNMPD.TrapReceiver = 10.20.30.40:162

2.snmptrapdの設定ファイル(snmptrapd.conf)に、同じアドレスと、受信したSNMPトラップ通知を処理するアプリケーションを指定します(この例ではsnmptthandlersnmpttコンポーネント)。

snmpTrapdAddr 10.20.30.40:162
traphandle default /usr/sbin/snmptthandler

Dr.Web SNMPDによって送信されたSNMPトラップsnmpttが不明なものとして破棄しないように、ファイルに次の文字列を追加します。

outputOption n

3.snmptthandlerコンポーネントは、Zabbixのホストテンプレートに設定されている正規表現(アイテムdrweb-trapsエレメント)に対応する指定された形式に従って、受信したSNMPトラップ通知をディスクのファイルに保存します。保存された通知のSNMPトラップフォーマットは、<opt_dir>/share/drweb-snmpd/connectors/zabbix/snmptt.drweb.zabbix.conf.ファイルで指定します。ファイルは、/etc/snmpにコピーする必要があります。

4.さらに、フォーマットファイルへのパスをsnmptt.iniに指定する必要があります。

[TrapFiles]
# A list of snmptt.conf files (this is NOT the snmptrapd.conf file).
# The COMPLETE path and filename. Ex: '/etc/snmp/snmptt.conf'
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf
/etc/snmp/snmptt.drweb.zabbix.conf
END

その後、デーモンモードで起動している場合はsnmpttを再起動します。

5.Zabbixサーバーの設定ファイル(zabbix-server.conf)で、次の設定を指定します(または、すでに指定されているかどうかを確認します)。

SNMPTrapperFile=/var/log/snmptt/snmptt.log
StartSNMPTrapper=1

ここで、/var/log/snmptt/snmptt.logは、受信したSNMPトラップ通知の情報を登録するためにsnmpttが使用するログファイルです。

Zabbixの公式マニュアルについては、https://www.zabbix.com/documentation/current/enを参照してください。

Nagiosモニタリングシステムとの統合

Dr.Web SNMPDとNagiosモニタリングシステム間の接続を確立するために必要なファイルとNagiosの設定例は、<opt_dir>/share/drweb-snmpd/connectors/nagiosディレクトリにあります。

ファイル

説明

nagiosgraph/rrdopts.conf-sample

RRD設定ファイルの例

objects/drweb.cfg

drwebオブジェクトを記述する設定ファイル

objects/nagiosgraph.cfg

Nagiosが使用するNagiosgraphによって使用されるグラフ描画のためのコンポーネントの設定ファイル

plugins/check_drweb

Dr.Web for UNIX Internet Gatewaysがインストールされているホストからデータを収集するためのスクリプト

plugins/eventhandlers/submit_check_result

SNMPトラップ通知を処理するためのスクリプト

snmp/snmptt.drweb.nagios.conf

SNMPトラップハンドラーであるsnmpttユーティリティの設定

Nagiosにホストを接続する

この説明では、WebサーバーとグラフィックツールNagiosgraphの設定を含むNagiosモニタリングシステムがモニタリングサーバーにすでにデプロイされており、モニタリング対象ホストにはDr.Web SNMPDがインストール済みで機能している(コンポーネントはsnmpdとともにプロキシモードで機能する)と想定しています。さらに、モニタリング対象ホストからSNMPトラップ通知(保護対象サーバーでDr.Web for UNIX Internet Gatewaysによって検出された脅威に関する通知を含む)を受信する場合は、モニタリングサーバーにnet-snmpパッケージをインストールします(標準ツールのsnmpttおよびsnmptrapdが使用されます)。

現在のマニュアルでは、次のようなパスの規則が使用されています(実際のパスはオペレーティングシステムとNagiosのインストールによって異なります)。

<NAGIOS_PLUGINS_DIR> - Nagiosプラグインを含むディレクトリ(例:/usr/lib64/nagios/plugins)。

<NAGIOS_ETC_DIR> - Nagios設定を含むディレクトリ(例:/etc/nagios)。

<NAGIOS_OBJECTS_DIR> - Nagiosオブジェクトを含むディレクトリ(例:/etc/nagios/objects)。

<NAGIOSGRAPH_DIR> - Nagiosgraphディレクトリ(例:/usr/local/nagiosgraph)。

<NAGIOS_PERFDATA_LOG> - Nagiosがサービスチェックの結果を記録するファイル(<NAGIOSGRAPH_DIR>/etc/nagiosgraph.confperflogファイルと同じでなければなりません)。このファイルのレコードは<NAGIOSGRAPH_DIR>/bin/insert.plスクリプトによって読み取られ、対応するRRAアーカイブRRDツールに記録されます。

Nagiosを設定する:

1.check_drwebファイルを<NAGIOS_PLUGINS_DIR>ディレクトリに、drweb.cfgファイルを<NAGIOS_OBJECTS_DIR>ディレクトリにコピーします。

2.監視対象のDr.Web for UNIX Internet Gatewaysがあるホストをdrwebグループに追加します。ホストではDr.Web SNMPDが実行されている必要があります。デフォルトでは、このグループにはlocalhostのみが追加されます。

3.必要に応じて、snmplwalkツールを介してdrwebホストのDr.Web SNMPDに接続するように指示するcheck_drwebコマンドを編集します。

snmpwalk -c public -v 2c $HOSTADDRESS$:161

SNMPプロトコルの適切なバージョンとパラメータ(「コミュニティストリング」や認証パラメータなど)の他、ポートを指定します。$HOSTADDRESS$変数をコマンドに含める必要があります(この変数は後でコマンドが呼び出されたときに、Nagiosによって正しいホストアドレスに自動的に置き換えられるためです)。このコマンドではOIDは必要ありません。また、実行ファイルへのフルパス(通常は/usr/local/bin/snmpwalk)を使用してコマンドを指定することをお勧めします。

4.次の文字列をファイルに追加して、<NAGIOS_ETC_DIR>/nagios.cfg設定ファイルのDrWebオブジェクトを接続します。

cfg_file=<NAGIOS_OBJECTS_DIR>/drweb.cfg

5.DrWebグラフィック用のRRDツール設定をrrdopts.conf-sampleファイルから<NAGIOSGRAPH_DIR>/etc/rrdopts.confファイルに追加します。

6.Nagiosgraphがまだ設定されていない場合は、その設定に対して次の手順を実行します。

nagiosgraph.cfgファイルを<NAGIOS_OBJECTS_DIR>ディレクトリにコピーし、process-service-perfdata-for-nagiosgraphコマンドでinsert.plスクリプトへのパスを編集します。たとえば、次のようになります。

$ awk '$1 == "command_line" { $2 = "<NAGIOSGRAPH_DIR>/bin/insert.pl" }{ print }' ./objects/nagiosgraph.cfg > <NAGIOS_OBJECTS_DIR>/nagiosgraph.cfg

次の行を追加して、<NAGIOS_ETC_DIR>/nagios.cfg設定ファイルにこのファイルを接続します。

cfg_file=<NAGIOS_OBJECTS_DIR>/nagiosgraph.cfg

7.<NAGIOS_ETC_DIR>/nagios.cfg 設定ファイルのNagiosパラメータの値を確認します。

check_external_commands=1
execute_host_checks=1
accept_passive_host_checks=1
enable_notifications=1
enable_event_handlers=1
 
process_performance_data=1
service_perfdata_file=/usr/nagiosgraph/var/rrd/perfdata.log
service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata-for-nagiosgraph
 
check_service_freshness=1
enable_flap_detection=1
enable_embedded_perl=1
enable_environment_macros=1

NagiosのSNMPトラップ通知の受信を設定する

1.モニタリング対象ホストのDr.Web SNMPDの設定(TrapReceiverパラメータ)で、Nagiosが動作しているホストでsnmptrapdがリッスンするアドレスを指定します。次に例を示します。

SNMPD.TrapReceiver = 10.20.30.40:162

2.SNMPトラップを受信したときに呼び出される<NAGIOS_PLUGINS_DIR>/eventhandlers/submit_check_resultスクリプトがあるかどうかを確認します。スクリプトが見つからない場合は、<opt_dir>/share/drweb-snmpd/connectors/nagios/plugins/eventhandlers/ディレクトリのsubmit_check_resultファイルをこの場所にコピーします。このファイルで、CommandFileパラメータに指定されているパスを変更します。これは、<NAGIOS_ETC_DIR>/nagios.cfgファイルのcommand_fileパラメータと同じ値である必要があります。

3.snmptt.drweb.nagios.confファイルを/etc/snmp/snmp/ディレクトリにコピーします。このファイルで、パスをsubmit_check_resultに変更します。たとえば、次のようなコマンドを使用します。

$ awk '$1 == "EXEC" { $2 = <NAGIOS_PLUGINS_DIR>/eventhandlers/submit_check_result }{ print}' ./snmp/snmptt.drweb.nagios.conf > /etc/snmp/snmp/snmptt.drweb.nagios.conf

4./etc/snmp/snmptt.drweb.nagios.conf」文字列を/etc/snmp/snmptt.iniファイルに追加します。その後、デーモンモードで起動している場合はsnmpttを再起動します。

Nagiosに必要な設定ファイルをすべて追加して編集したら、次のコマンドを使用してNagiosをデバッグモードで実行します。

# nagios -v <NAGIOS_ETC_DIR>/nagios.cfg

このコマンドを受け取ると、Nagiosは設定エラーをチェックします。エラーがなかった場合は、Nagiosを通常どおりに再起動できます(たとえば、service nagios restartコマンドを使用して)。

Nagiosの公式マニュアルについては、https://www.nagios.org/documentation/を参照してください。