見出し画像

TWSNMP FCのポーリング辞典:SNMPの基本

TWSNMP FCのSNMPによるポーリングに関する基本について説明します。

SNMPポーリング設定

TWSNMP FCのSNMPポーリング設定の画面は

オリジナルのTWSNMPでは、

MIBGET:hrSystemNumUsers.0>-1:ABS

のような書式でSNMPのポーリングを設定していましたが、TWSNMP FCでは設定画面の項目を分けて設定できるようになっています。基本的には、種別にSNMPを選択します。モードにSNMPのアクセス方法を設定します。

SNMPポーリングモード

2023/2/10現在対応しているモードは、

sysUpTime
再起動監視に特化したモードです。パラメータは必要ありません。
SNMPのアクセスに失敗した場合は障害と判断します。
ifOperStatus
インターフェイス(LANポート)の状態監視に特化したモードです。パラメータに監視対象のifIndexの値を設定します。
count
テーブルなど複数のインスタンスがあるMIBの数を数えます。パラメータに取得するMIBのオブジェクト名、フィルターに取得値の条件、スクリプトに判定条件をJavaScriptで指定します。
process
プロセス監視に特化したモードです。フィルターに監視したいプロセス名を指定します。スクリプトに障害判定のためのJavaScriptを指定します。
ps
取得した数値型のMIBを監視対象のsysUpTimeで計算した単位時間値を使うポーリングモードです。パラメータに取得するMIBのオブジェクト名指定します。スクリプトに障害判定のためのJavaScriptを指定します。
delta
2回連続取得した数値型のMIBの差分でポーリングするモードです。パラメータに取得するMIBのオブジェクト名を指定します。スクリプトに障害判定のためのJavaScriptを指定します。
get
取得したMIBで判断するポーリングモードです。パラメータには、取得するMIBのオブジェクト名を指定します。スクリプトに障害判定のためのJavaScriptを指定します。
hrSystemDate
ホストリソースMIBのhrSystemDateを取得します。ポーリングを実施しているパソコンの時刻の差分も取得できます。
stats
複数数値データのMIBを取得して、最大、最初、平均を計算して判断します。hrProcessorLoadのすべて取得してCPU使用率の平均を計算するために使用できます。パラメータに取得したいMIBのオブジェクト名、スクリプトに障害の判定条件を指定します。
traffic
対象のifTableのMIBを取得して通信量を計算します。取得可能ならば64ビットのカウンター値を利用します。送受信のバイト数、パケット数、エラー数、それぞれの単位時間値を取得できます。パタメータに取得したいLANポートのifIndexを指定します。スクリプトに障害判定条件を指定します。

です。

再起動監視

sysUpTimeはSNMPのエージェントが起動してからの経過時間を1/100秒単位で示すMIBです。当然、時間とともに増えていきます。前回のポーリングで取得した値から減った場合は再起動したと判断できます。この監視を簡単に行うのがsysUpTimeモードです。

経過時間を32ビットの正数で表すので約500日程度経過すると0に戻る問題に対応する必要がありますが、今のところ対応していません。

インターフェイス状態

監視対象のインターフェイス(LANポート)の状態を監視するためには、ifOperStatus(動作状態)とifAdminState(設定)のMIBを利用します。ifAdminStateがUPでifOperStatusがUPが正常です。ifAdminStateがDOWNならばifOperStatusがDOWNでも有効にしてないポートなので正常です。ifAdminStateがUPでifOperStatusがDOWNは障害です。有効にしてもリンクがアップしない状態だからです。ケーブルが接続されていない、対向の機器がダウンしているなどが考えられます。TWSNMPでこの監視を行うには、ifOperStatusモードのポーリングを設定します。

このポーリングの設定にはインターフェイスのインデックスが必要です。自動発見で登録したポーリングは自動で設定しています。手動で設定する場合は、MIBブラウザーでifTableの取得して監視したいLANポートのインデックスを確認してください。

サンプルテンプレート

ここで説明したモードのサンプル定義です。

  {
    "Name": "SNMP再起動監視",
    "Type": "snmp",
    "Mode": "sysUpTime",
    "Level": "low",
    "Descr": "対象ノードの再起動を検知",
    "AutoMode": ""
  },
  {
    "Name": "インターフェイス監視",
    "Type": "snmp",
    "Mode": "ifOperStatus",
    "Params": "$i",
    "Level": "low",
    "Descr": "インターフェイスの状態を監視",
    "AutoMode": "index:ifIndex"
  },
 {
    "Name": "SNMP通信量測定",
    "Type": "snmp",
    "Mode": "traffic",
    "Params": "$i",
    "Level": "off",
    "Descr": "インターフェイスの通信量を測定",
    "AutoMode": "index:ifIndex"
  },
  {
    "Name": "プロセス起動数監視",
    "Type": "snmp",
    "Mode": "count",
    "Params": "hrSWRunName",
    "Filter":"プロセス名を指定",
    "Script":"count > 0",
    "Level": "low",
    "Descr": "プロセスの起動数の監視、フィルタでプロセス名を指定",
    "AutoMode": "disable"
  },
   {
    "Name": "プロセス再起動監視",
    "Type": "snmp",
    "Mode": "process",
    "Params": "", 
    "Filter": "プロセス名",
    "Script": "changed == 0",
    "Level": "low",
    "Descr": "監視対象のプロセスのPIDの変化を検知",
    "AutoMode": "disable"
  },
  {
    "Name": "TCP接続数",
    "Type": "snmp",
    "Mode": "get",
    "Params": "tcpCurrEstab.0",
    "Script": "tcpCurrEstab < 10000",
    "Level": "low",
    "Descr": "TCP接続数の監視",
    "AutoMode": ""
  },
  {
    "Name": "LANポート送受信",
    "Type": "snmp",
    "Mode": "ps",
    "Params": "ifInOctets.$i,ifOutOctets.$i",
    "Script": "Mbps=8*(ifInOctets_PS+ifOutOctets_PS)/1000000;Mbps < 1000",
    "Level": "low",
    "Descr": "LANポートの送受信の合計量をMbps単位で測定",
    "AutoMode": "index:ifIndex"
  },
 {
    "Name": "CPU平均使用率",
    "Type": "snmp",
    "Mode": "stats",
    "Params": "hrProcessorLoad",
    "Script": "avg < 90.0",
    "Level": "low",
    "Descr": "CPU平均使用率",
    "AutoMode": ""
  },
 

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。