Data ONTAPでSNMP監視を設定する方法
環境
- clustered Data ONTAP 8
- ONTAP 9
回答
注記:新しいバージョンの ONTAP での SNMP の管理については、以下を参照してください:SNMP を管理するためのコマンド
- clustered Data ONTAP における Simple Network Management Protocol ( SNMP )と SNMP トラップの概要。
- SNMP を使用して C-Mode クラスタ システムから情報を取得する方法
- SNMP トラップを設定し、目的のクライアントでイベントを受信する方法
注記:以下を参照してくださいTR-Guide - SNMP Support in Data ONTAP
このレポートの目的は、お客様とNetAppフィールドチームがClustered Data ONTAP 8.2.x、8.3.x、およびONTAP 9におけるSNMPサポートのレベルを理解できるようにすることです。 また、7-modeとCluster modeの両方におけるOIDの可用性を比較します。個々のテーブルまたはグループレベルの情報のみを提供します。netapp.mibファイルには、テーブルまたはグループ内でサポートされているさまざまなフィールドまたは変数に関する追加情報が記載されています。iReasoningなどのMIBブラウザツールを使用すると、netapp.mibファイルの内容を簡単に解釈できます。
SNMP:
SNMPは、広く利用されているネットワーク監視および制御プロトコルです。データは、各ネットワークデバイス(ハブ、ルーター、ブリッジなど)のアクティビティを報告するハードウェアおよび/またはソフトウェアプロセスであるSNMPエージェントから、ネットワークを監視するために使用されるワークステーションコンソールに渡されます。エージェントは、管理情報ベース(MIB)に含まれる情報を返します。MIBは、デバイスから取得できる情報と、制御可能な情報(オンまたはオフにできる情報)を定義するデータ構造です。SNMPはUNIXコミュニティで誕生し、現在では主要なプラットフォームすべてで広く利用されています。
MIBは、デバイスサブシステムの管理データの構造を記述するものであり、オブジェクト識別子(OID)を含む階層的な名前空間を使用します。各OIDは、SNMPを介して読み取りまたは設定可能な変数を識別します。
注記: NetAppはsnmp-set操作をサポートしていません。また、SNMPのサポートはクラスタ全体に限定されており、vserver化されていません。ただし、これは8.1以降のリリースで実施される予定であり、7Gのvfilerとは異なります。なぜなら、snmpサポートはvfiler化されていなかったからです。
SNMPの有効化/無効化:
SNMPプロトコルは、CLI/ZAPIを使用してクラスタで有効化および無効化できます:
- CLI を使用してクラスタで SNMP を有効にする - ngsh から、
options-option-name snmp.enable-option-valueon を実行します - CLI を使用してクラスタで SNMP を無効にする - ngsh から、
options-option-name snmp.enable-option-valueoff を実行します - ZAPI を使用してクラスタで SNMP を有効にする - ontapi または zexplore.exe を使用して、
API snmp-enableを実行します - ZAPI を使用してクラスタで SNMP を無効にする - ontapi または zexplore.exe を使用して、
API snmp-disableを実行します
例:$> ontapi snmp-[en|dis]able
注記:SNMP プロトコルは、クラスタ全体でのみ有効化または無効化できます。Data ONTAP 8.1 C-Mode では、クラスタ内の個々のノードへの SNMP は使用できません。
7G-like SNMP UI:
Data ONTAP C-Modeは、クラスタ上のSNMPの詳細を設定するために、多数のUI(CLIおよびZAPI)を活用します。以下は、クラスタ システム上のSNMPの設定に役立つ各CLIの概要です:
snmp contact:連絡先情報の表示または変更snmp location:場所の詳細を表示または変更するsnmp init:クラスタから送信されるトラップを有効または無効にします [1->有効、0->無効]snmp authtrap:authenticationFailureトラップを有効または無効にします [1->有効、0->無効]snmp community add|delete:クラスタ内のコミュニティを表示、追加、または削除するには、デフォルトの'public'コミュニティ(ro)があります。- 注記:読み取り専用コミュニティのみがサポートされています。また、最初のSNMPコミュニティエントリを削除するには、通知に使用されるトラップホストを削除する必要があります。
snmp traphost add|delete:クラスタ内のトラップホストを表示、追加、または削除するには、ホストが実行中の場合、クラスタ内で発生するすべてのトラップ(またはイベント)がこれらのホストに送信されますsnmptrapdoptions snmp.enable:クラスタ上でSNMPプロトコルを有効または無効にします [on=>有効、off=>無効]
以下は、クラスタ Data ONTAP システムで SNMP を設定するのに役立つ各 ZAPI の概要です。
snmp-enable:クラスタ上でSNMPプロトコルを有効にしますsnmp-disable:クラスタ上でSNMPプロトコルを無効にしますsnmp-trap-enable:トラップホストにトラップを送信できるようにしますsnmp-trap-disable:トラップホストへのトラップ送信を無効にしますsnmp-community-add:SNMPコミュニティを追加します。Data ONTAP 8.1 C-Modeでサポートされているのはroコミュニティのみですsnmp-community-delete:既存のコミュニティを削除しますsnmp-traphost-add:トラップホストを追加しますsnmp-traphost-delete:既存のトラップホストを削除しますsnmp-status:クラスタ上のSNMP設定の詳細(場所、連絡先、トラップ、トラップホスト、コミュニティの詳細など)を表示しますsnmp-get:APIへの入力としてOIDが与えられた場合に、そのオブジェクトの値を読み取ります(Unixユーティリティのsnmpgetに類似)snmp-get-next:OIDとして指定されたオブジェクトの次のオブジェクトの値を読み取ります(Unixユーティリティのsnmpgetnextに類似)Add/modify/view contact:クラスタの連絡先情報と所在地情報は、SNMP CLIを使用して追加または変更できます。連絡先や所在地情報を変更するための対応するAPIはありません。ただし、クラスタの詳細は、snmp[walk|get|getnext](または)snmp-statusを使用して読み取ることができます(snmpまたはZAPIを使用して変更することはできません)
例:
CLIを使用して追加/変更:
ZAPI呼び出しを使用して読み込む:
$> ontapi -x snmp-status
SNMP 呼び出しを使用して読み取る:
$> snmpwalk -c public -v [1|2c]
C-Mode システムで SNMPv3 を設定する方法:
- security login create CLIを使用して、クラスタ上にsnmpv3ユーザーを作成します。
- EngineIDを入力します(ローカルのEngineIDを使用します。デフォルトとして使用されます)。
- 認証プロトコルを入力し、指定したsnmpv3ユーザーのパスワードを入力します。
snmp[walk|get|getnext]をsnmpv3ユーザーに対して実行します。-v 3を指定し、ユーザー認証情報を提供します。
PDFの付録セクションには、snmpv3ユーザーを作成し、SNMP utilitiesをユーザーに対して実行する方法の例が記載されています。
SNMP トラップ:
エージェントからマネージャーへの非同期通知:これには現在のsysUpTime値、トラップの種類を識別するOID、およびオプションの変数バインディングが含まれます。トラップの宛先アドレスは、アプリケーション固有の方法で決定され、通常はMIB内のトラップ構成変数によって決定されます。SNMPv2ではトラップメッセージのフォーマットが変更され、PDUはSNMPv2-Trapと名称変更されました。
7-Mode および C-Mode Data ONTAP における SNMP とそのトラップ:
標準 SNMP トラップ:
RFC 1215によると、標準的なSNMPトラップは5種類あります:
- linkDown - このトラップは、稼働中のアクティブな物理ポートをダウンさせたときに生成されます(ifAdminStatusをupからdownに変更する必要があります/ifindex番号の情報はトラップメッセージに含まれていません。)
- linkUp - このトラップは、ダウンしている物理ポートを起動したときに生成されます(ifAdminStatusをdownからupに変更する必要があります/ifindex番号の情報はトラップメッセージに含まれていません。)
- warmStart - warmstartトラップは、通常の再起動を実行したときに生成されます
- coldStart - coldStartトラップは、送信プロトコルエンティティが、エージェントの設定またはプロトコルエンティティの実装が変更される可能性のある方法で自身を再初期化していることを示します
- authenticationFailure - authenticationFailureトラップは、ユーザーが誤った権限を使用してシステムにログインしようとしたときに生成されます
NetApp 組み込み SNMP トラップ:
NetAppは、SNMPユーザーの利便性を考慮して、多数の組み込みトラップを備えています。ファイル/mroot/etc/mib/netapp.mibには、組み込みトラップの一覧があります。各トラップには、固有の識別子またはトラップコードが付いています。組み込みトラップの例はvolumeOnlineで、そのトラップコードは276です。以下の情報は、netapp.mibファイルから取得したものです。
OIDの後にはNOTIFICATION-TYPEタグが続きます。これはトラップであることを示し、説明とトラップコード(この場合は276)に関連付けられています。
volumeOnline NOTIFICATION-TYPE
OBJECTS {productTrapData, productSerialNum}
STATUS current
DESCRIPTION Volume is online now. The string sent with trap specifies name of volume which is online now.
::= { netapp 0 276 }
ユーザー定義の SNMP トラップ:
これらは、ユーザーの要件に基づいて設定できるトラップです。NetAppにはいくつかの組み込みトラップがありますが、ユーザーは他の理由でイベントを生成したい場合もあります。7-Modeにはユーザー定義トラップをサポートするインフラストラクチャがありますが、Data ONTAP 8.1のC-Modeインフラストラクチャではユーザー定義トラップはサポートされていません。これらは計画されているUI(Data ONTAP 8.1以降)で、ユーザー定義トラップの設定に役立ちます:
- snmp-trap-list
- snmp-trap-set
- snmp-trap-delete
- snmp-trap-reset
- snmp-trap-load
EMS との連携:
トラップはEMSイベントに関連付けられています。SNMPイベントは、イベントCLIを使用して生成することもできます。
SNMPトラップホストリストに追加されたすべてのトラップホストは、トラップホストエントリの下にあるイベント宛先テーブルと呼ばれる別のテーブルに複製されます。
test-01::*> system snmp traphost show
TRAPHOST1
TRAPHOST2
test-01::*> event destination show -name traphost
Name: traphost
Mail Destination: -
SNMP Destination: TRAPHOST1
TRAPHOST2
Syslog Destination: -
Syslog Facility: -
SNMP Trap Community: public
Hide Parameter Values?: false
event * CLI を使用すると、以下の操作を実行できます:
イベント宛先作成CLIを使用して、新しいSNMPホストを追加できます。ホストがデフォルトのトラップホストリストに追加されると、SNMPトラップホストリストにも複製され、クラスタ システム内で発生したすべてのイベントがこのホストに送信されます。
csiqa-3170-6a1365754940::*> snmp traphost
-
csiqa-3170-6a1365754940::*> event destination show -name traphost
Name: traphost
Mail Destination: -
SNMP Destination: -
Syslog Destination: -
Syslog Facility: -
SNMP Trap Community: qwerty
Hide Parameter Values?: false
csiqa-3170-6a1365754940::*> snmp community
csiqa-3170-6a1365754940
ro qwerty
csiqa-3170-6a1365754940::*> event destination modify -name traphost -hide-parameters false -snmp 10.229.88.174 -snmp-community qwerty
csiqa-3170-6a1365754940::*> event destination show -name traphost
Name: traphost
Mail Destination: -
SNMP Destination: csiqa-labopt-rh5-003.gdl.englab.netapp.com
Syslog Destination: -
Syslog Facility: -
SNMP Trap Community: qwerty
Hide Parameter Values?: false
csiqa-3170-6a1365754940::*> snmp traphost
csiqa-labopt-rh5-003.gdl.englab.netapp.com (csiqa-labopt-rh5-003.gdl.englab.netapp.com) <10.229.88.174>
csiqa-3170-6a1365754940::*>
ただし、ユーザーが特定のイベントのみを受信するようにホストを設定したい場合は、イベントルーティングCLIを使用して、任意のイベントをその宛先にルーティングできます。イベントを一覧表示するには、以下の手順に従ってください:
csiqa-3070-591287556400::*> event route show
Freq Time
Message Severity Destinations Threshd Threshd
-------------------------------- -------------- -------------- ------- -------
EthrOutput.FamilyType.Err ERROR - 0 0
LUN.clone_snapshot_destroyed NOTICE - 0 0
LUN.destroy INFORMATIONAL - 0 0
LUN.space_reservation_not_honored
NOTICE - 0 0
LUN.volume_processing_failed_no_space
ERROR - 0 0
Nblade.DidNotInitialize ERROR - 0 0
Nblade.JunctionRootLookup WARNING - 0 0
Nblade.Nfs4IllegalDirentName ERROR - 0 0
Nblade.NfsRaidError ERROR - 0 0
対応するイベントを必要な宛先にマッピングします。
すべてのイベントがSNMPトラップで捕捉されるわけではありません。SNMPトラップに関連付けられているすべてのトラップを知るには、次のCLIを使用します:
csiqa-3070-591287556400::*> event route show -snmp-support true
Freq Time
Message Severity Destinations Threshd Threshd
-------------------------------- -------------- -------------- ------- -------
app.log.alert ALERT - 0 0
app.log.crit CRITICAL - 0 0
app.log.debug DEBUG - 0 0
app.log.emerg EMERGENCY - 0 0
app.log.err ERROR - 0 0
app.log.info INFORMATIONAL - 0 0
app.log.notice NOTICE - 0 0
app.log.warn WARNING - 0 0
asup.general.create ERROR - 0 0
asup.general.drop ERROR - 0 0
asup.general.drop.enqueue INFORMATIONAL - 0 0
SNMP トラップ - トラップの設定方法とイベントの生成方法
snmp traphost CLI を使用してトラップホストを追加します:
$> snmp traphost add
-OR-
$> snmp traphost add
注: トラップホスト名を解決するために、クラスタでDNSが設定されていることを確認してください。
ファイラで SNMP プロトコルが有効になっていることを確認します:
::> options -option-name snmp.enable onクラスタで SNMP トラップを有効にします。これは、次のいずれかの方法で実行できます:
次のコマンドを実行します:
Cluster::> snmp init 1
- または -
ZAPI を実行します:
$> ontapisnmp-trap-enable- イベントをトリガーして監視します。
traps.dat情報 - 参考:Burt # 460968
traps.datファイルは、特にユーザ定義トラップ用です。UDT サポートは、 Data ONTAP C-Mode ではまだサポートされていません( Data ONTAP 8.1.1 時点)。
traps.datファイル末尾に余分な「1」が付いているのは、テーブル内のOIDと末尾が0のOID(テーブル外)を区別するためです。テーブル内のOIDはトラップの対象とすべきではないため、追加の難読化は実際には無効なユーザー定義トラップを減らすのに役立ちます。
C-Mode OID情報 - 参考資料:Burt #460968
netapp.mibファイルに表示されるOIDはキーであり、実際の絶対OID値ではありません。これを把握する最良の方法は、最後の桁を削除して実際にsnmpwalkを実行することです。
例:
- [
rakeshc@cyclnb01 ~/p4]$ snmpwalk -v 1 -c public 10.10.10.10 .1.3.6.1.4.1.789.1.5.11.1.2 SNMPv2-SMI::enterprises.789.1.5.11.1.2.1026 = STRING: "aggr0"SNMPv2-SMI::enterprises.789.1.5.11.1.2.1030 = STRING: "aggr0_br3040n2_rtp"SNMPv2-SMI::enterprises.789.1.5.11.1.2.1034 = STRING: "n1_aggr1"SNMPv2-SMI::enterprises.789.1.5.11.1.2.1038 = STRING: "n2_aggr1"SNMPv2-SMI::enterprises.789.1.5.11.1.2.1050 = STRING: "coral_aggr"
これにより、上記5つの異なるOID(1026、1030、1034、1038、1050)が与えられ、その後、以下の処理が実行されます:
[rakeshc@cyclnb01 ~/p4]$ snmpwalk -v 1 -c public 10.61.76.140 .1.3.6.1.4.1.789.1.5.11.1.2.1026SNMPv2-SMI::enterprises.789.1.5.11.1.2.1026 = STRING: "aggr0"
さまざまな種類のトラップ/イベントを生成する詳細な手順は、以下の付録セクションに示されています:
SNMPを有効にして、SNMPユーティリティを実行します:
クラスタでsnmpwalk/snmpget/snpgetnext etc..を実行する方法とその設定手順
DOT_cluster::*> options snmp.enable
DOT_cluster
snmp.enable on
DOT_cluster::*> network interface show -vserver DOT_cluster
Logical Status Network Current Current Is
Vserver Interface Admin/Oper Address/Mask Node Port Home
----------- ---------- ---------- ------------------ ------------- ------- ----
DOT_cluster
cluster_mgmt up/up 10.238.44.38/18 node1 e0c true
DOT_cluster::*>
bash-3.2$ snmpwalk -c public -v 1 10.238.44.38 .1.3.6.1.4.1.789.1.5.11.1.2
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1026 = STRING: "aggr0"
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1030 = STRING: "aggr0_partnernode"
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1034 = STRING: "aggr_node1"
bash-3.2$
クラスタでsnmpwalk/snmpget/snpgetnext etc..を無効にする方法と、その設定手順
DOT_cluster::*> option snmp.enable off
(options)
1 entry was modified.
DOT_cluster::*> net int show -vserver DOT_cluster
(network interface show)
Logical Status Network Current Current Is
Vserver Interface Admin/Oper Address/Mask Node Port Home
----------- ---------- ---------- ------------------ ------------- ------- ----
DOT_cluster
cluster_mgmt up/up 10.238.44.38/18 node1 e0c true
DOT_cluster::*>
bash-3.2$ snmpwalk -c public -v 1 10.238.44.38 .1.3.6.1.4.1.789.1.5.11.1.2
Timeout: No Response from 10.238.44.38
bash-3.2$ snmpget -c public -v 1 10.238.44.38 .1.3.6.1.4.1.789.1.5.11.1.2.1026
Timeout: No Response from 10.238.44.38.
bash-3.2$ snmpgetnext -c public -v 1 10.238.44.38 .1.3.6.1.4.1.789.1.5.11.1.2.1026
Timeout: No Response from 10.238.44.38.
bash-3.2$
snmpv3プロトコルはsnmpv1|v2cと比較してセキュリティが強化されたプロトコルです。snmpv3ユーザーを設定してsnmpツールを実行するには、以下の手順が必要です
DOT_cluster::*> security login create -username snmpv3user -application snmp -authmethod usm
Enter the authoritative entity's EngineID [local EngineID]:
Which authentication protocol do you want to choose (none, md5, sha) [none]: sha
Enter the authentication protocol password (minimum 8 characters long):
Enter the authentication protocol password again:
Which privacy protocol do you want to choose (none, des) [none]: des
Enter privacy protocol password (minimum 8 characters long):
Enter privacy protocol password again:
DOT_cluster::*>
bash-3.2$ snmpwalk -v 3 -u snmpv3user -a SHA -A testing123! -l authPriv -x DES -X testing123! 10.238.44.38 .1.3.6.1.4.1.789.1.5.11.1.2
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1026 = STRING: "aggr0"
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1030 = STRING: "aggr0_partnernode"
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1034 = STRING: "aggr_node1"
bash-3.2$
NetApp の組み込みトラップは、netapp.mibファイルで定義されています。以下の手順は、トラップホストまたは SNMP 宛先にトラップを生成する方法を示しています。
DOT_cluster::*> snmp traphost
-
DOT_cluster::*> snmp traphost add 10.229.88.174
DOT_cluster::*> snmp traphost
10.229.88.174 (10.229.88.174) <10.229.88.174>
DOT_cluster::*> snmp init
1
DOT_cluster::*> options snmp.enable
DOT_cluster
snmp.enable on
DOT_cluster::*>
DOT_cluster::*> volume offline -volume testvol -vserver vs0
Volume "vs0:testvol" is now offline.
Volume modify successful on volume: testvol
DOT_cluster::*> volume online -volume testvol -vserver vs0
Volume "vs0:testvol" is now online.
Volume modify successful on volume: testvol
DOT_cluster::*>
2013-05-03 05:30:00 prakashl-vsim1.sim.eng.btc.netapp.in [10.238.44.36] (via UDP: [10.238.44.36]:161) TRAP, SNMP v1, community public
SNMPv2-SMI::enterprises.789 Enterprise Specific Trap (275) Uptime: 1:10:12.70
SNMPv2-SMI::enterprises.789.1.1.12.0 = STRING: "Volume testvol@vserver:17309c4f-b3d6-11e2-a9a8-123478563412 is offline. " SNMPv2-SMI::enterprises.789.1.1.9.0 = STRING: "1-80-000011"
2013-05-03 05:31:55 prakashl-vsim1.sim.eng.btc.netapp.in [10.238.44.36] (via UDP: [10.238.44.36]:161) TRAP, SNMP v1, community public
SNMPv2-SMI::enterprises.789 Enterprise Specific Trap (276) Uptime: 1:12:12.07
SNMPv2-SMI::enterprises.789.1.1.12.0 = STRING: "Volume testvol@vserver:17309c4f-b3d6-11e2-a9a8-123478563412 is online. " SNMPv2-SMI::enterprises.789.1.1.9.0 = STRING: "1-80-000011"
event generate CLI を使用してトラップを生成します:
イベント生成CLIを使用してトラップを生成することもできます。
DOT_cluster::*> event destination show
Hide
Name Mail Dest. SNMP Dest. Syslog Dest. Params
---------------- ----------------- ------------------ ------------------ ------
allevents - - - false
asup - - - false
criticals - - - false
pager - - - false
traphost - 10.229.88.174
- false
5 entries were displayed.
DOT_cluster::*> snmp traphost
10.229.88.174 (10.229.88.174) <10.229.88.174>
DOT_cluster::*> event generate -messagename wafl.dir.size.warning -values TEST_EVENT
DOT_cluster::*>
2013-05-03 05:33:01 prakashl-vsim1.sim.eng.btc.netapp.in [10.238.44.36] (via UDP: [10.238.44.36]:161) TRAP, SNMP v1, community public
SNMPv2-SMI::enterprises.789 Enterprise Specific Trap (485) Uptime: 1:13:17.57
SNMPv2-SMI::enterprises.789.1.1.12.0 = STRING: "Directory TEST_EVENT is approaching the maxdirsize limit. " SNMPv2-SMI::enterprises.789.1.1.9.0 = STRING: "1-80-000011"
追加情報
ここにテキストを追加してください。