# 運用・管理 / トリガー

トリガー機能は、決められた時刻や特定のイベントが発生したときに、任意のスクリプトを自動実行する機能です。この機能を利用すれば、時間帯によって設定内容を変えたり、再起動時にメールで管理者に通知したりすることができます。
トリガーには次の種類があります。

表 1
種類 | 説明
CPUトリガー | CPUの使用率がしきい値を越えたときに起動される
インターフェーストリガー | インターフェースのリンクステータスが変化したときに起動される
メモリートリガー | メモリーの使用率がしきい値を越えたときに起動される
定期実行トリガー | 一定の間隔（たとえば1時間ごと）で繰り返し起動される
Pingポーリングトリガー | Pingポーリングの監視対象機器への到達性が喪失または回復したときに起動される
再起動トリガー | システム起動（再起動）時に起動される
スタックディセーブルマスタートリガー | VCSグループの構成メンバーがディセーブルマスター（Disabled Master：全スイッチポートを無効にしている一時的なマスター状態）になったときに起動される
スタックマスターフェイルトリガー | VCSグループのマスター切り替えが発生したときに起動される
スタックメンバートリガー | VCSグループの構成メンバーが変化（参加・離脱）したときに起動される
スタックリンクトリガー | スタックポート（stackportコマンドにて設定した任意のスタックポート）のリンクステータスが変化したときに起動される
定時トリガー | 決められた時刻に起動される
USBメモリートリガー | USBメモリーの挿入または取り外しが起こったときに起動される
AMFノードトリガー | AMFネットワークにAMFノードが参加、離脱したときに起動する
AMFゲストノードトリガー | AMFネットワークにAMFゲストノードが参加、離脱したときに起動する
ログメッセージトリガー | 指定した文字列（正規表現）を含むnoticesレベル以上のログメッセージが出力されたときに起動される
リンク監視プローブトリガー | 監視中の回線の状態判定が変化したときに起動される
環境センサートリガー | 環境センサーの状態変化、またはセンサーのしきい値を超えたときに起動される

各トリガーには複数のスクリプトを関連付けることができます。また、トリガーの実行回数に制限を設けることも可能です（たとえば、5回実行されたらトリガーを無効にするなど）。

## 基本設定

トリガーを作成するには、triggerコマンドで番号を割り当て、各種typeコマンドで種類を指定し、scriptコマンドで自動実行するスクリプトファイルを指定します。以下、トリガーの種類ごとに例を示します。

- CPU使用率が80%を超えたら、flash:/cpuwarn.scpを実行するCPUトリガー「1」を作成。これにはtype cpuコマンドを使います。

      awplus(config)# trigger 1
      awplus(config-trigger)# type cpu 80 up
      awplus(config-trigger)# script 1 flash:/cpuwarn.scp

- スイッチポート1.0.1がリンクダウンしたら、flash:/linkdown.scpを実行するモジュールトリガー「2」を作成。これにはtype interfaceコマンドを使います。

      awplus(config)# trigger 2
      awplus(config-trigger)# type interface port1.0.1 down
      awplus(config-trigger)# script 1 flash:/linkdown.scp

- メモリー使用率が70%を超えたら、flash:/memwarn.scpを実行するメモリートリガー「3」を作成。これにはtype memoryコマンドを使います。

      awplus(config)# trigger 3
      awplus(config-trigger)# type memory 70 up
      awplus(config-trigger)# script 1 flash:/memwarn.scp

- 3時間に一回flash:/patrol.scpを実行する定期実行トリガー「4」を作成。これにはtype periodicコマンドを使います。

      awplus(config)# trigger 4
      awplus(config-trigger)# type periodic 180
      awplus(config-trigger)# script 1 flash:/patrol.scp

- Pingポーリング設定「1」の監視対象機器への到達性が失われたらflash:/pingdown.scpを実行するPingポーリングトリガー「5」を作成。これにはtype ping-pollコマンドを使います。

      awplus(config)# trigger 5
      awplus(config-trigger)# type ping-poll 1 down
      awplus(config-trigger)# script 1 flash:/pingdown.scp

- システム再起動後にflash:/rebooted.scpを実行する再起動トリガー「6」を作成。これにはtype rebootコマンドを使います。

      awplus(config)# trigger 6
      awplus(config-trigger)# type reboot
      awplus(config-trigger)# script 1 flash:/rebooted.scp

  Note

  再起動トリガーはシステム起動後、60秒以内に実行されます。

- VCSグループのマスター切り替えが発生したときにflash:/stkfail.scpを実行するスタックマスターフェイルトリガー「7」を作成。これにはtype stack master-failコマンドを使います。

      awplus(config)# trigger 7
      awplus(config-trigger)# type stack master-fail
      awplus(config-trigger)# script 1 flash:/stkfail.scp

- VCSグループに新規メンバーが参加したときにflash:/stkjoin.scpを実行するスタックメンバートリガー「8」を作成。これにはtype stack memberコマンドを使います。

      awplus(config)# trigger 8
      awplus(config-trigger)# type stack member join
      awplus(config-trigger)# script 1 flash:/stkjoin.scp

- スタックポートがリンクアップしたときにflash:/stklnkup.scpを実行するスタックリンクトリガー「9」を作成。これにはtype stack linkコマンドを使います。

      awplus(config)# trigger 9
      awplus(config-trigger)# type stack link up
      awplus(config-trigger)# script 1 flash:/stklnkup.scp

- 毎日夜11時にflash:/nightgrd.scpを実行する定時トリガー「10」を作成。これにはtype timeコマンドを使います。

      awplus(config)# trigger 10
      awplus(config-trigger)# type time 23:00
      awplus(config-trigger)# script 1 flash:/nightgrd.scp

  Note

  定時トリガーは、type timeコマンドで設定したトリガーの起動時刻と、設定時点におけるシステム時刻の差が少ないと動作しません。定時トリガー設定時には、トリガーの起動時刻とシステム時刻の差が40秒以上になるように設定してください。

- USBメモリーの挿入が起こったときにflash:/usb.scpを実行するUSBメモリートリガー「11」を作成。これにはtype usbコマンドを使います。

      awplus(config)# trigger 11
      awplus(config-trigger)# type usb in
      awplus(config-trigger)# script 1 flash:/usb.scp

- AMFネットワークに新規ノードが参加したときにflash:/amf.scpを実行するAMFノードトリガー「12」を作成。これにはtype atmf nodeコマンドを使います。

      awplus(config)# trigger 12
      awplus(config-trigger)# type atmf node join
      awplus(config-trigger)# script 1 flash:/amf.scp

- AMFネットワークに新規ゲストノードが参加したときにflash:/amfguest.scpを実行するAMFノードトリガー「16」を作成。これにはtype atmf guestコマンドを使います。

      awplus(config)# trigger 16
      awplus(config-trigger)# type atmf guest join
      awplus(config-trigger)# script 1 flash:/amfguest.scp

- メッセージ本文に `port数値.数値.数値 now for` のパターンにマッチする文字列を含む notices レベル以上のログメッセージが出力されたときに flash:/portforw.scp を起動するログメッセージトリガー「14」を作成。これにはtype logコマンドを使います。

      awplus(config)# trigger 14
      awplus(config-trigger)# type log port\\d+\\.\\d+\\.\\d+ now for
      awplus(config-trigger)# script 1 flash:/portforw.scp

  このトリガーを起動するログメッセージの例。
  プログラム名とプロセスIDを表す XXXX[xxxx]: の後からが本文となり、緑色の部分がパターンにマッチします。

      2017 Oct 10 15:47:20 user.notice awplus XXXX[xxxx]: XXXX port1.0.3 now forwarding, propagating TC to other ports

- リンク監視プローブ PROBE1 とリンク性能プロファイル PROF1 によって監視している回線の状況判定が「good」に変化したときに flash:/good.scp を起動するリンク監視プローブトリガー「15」を作成。これにはtype linkmon-probeコマンドを使います。

      awplus(config)# trigger 15
      awplus(config-trigger)# type linkmon-probe PROBE1 PROF1 good
      awplus(config-trigger)# script 1 flash:/good.scp

- 環境センサーが「true」に変化したときに flash:/true.scp を起動する環境センサートリガー「17」を作成。これにはtype env-sensorコマンドを使います。

      awplus(config)# trigger 17
      awplus(config-trigger)# type env-sensor node 1 resource 2 sensor 1 state true

テストなどのため、トリガーを手動で起動するにはtrigger activateコマンドを使います。

    awplus# trigger activate 1

トリガーにスクリプトを追加するには、scriptコマンドを使います。たとえば、トリガー「2」の2番目のスクリプトとしてflash:/2nd.scpを追加するには、次のようにします。

    awplus(config)# trigger 2
    awplus(config-trigger)# script 2 flash:/2nd.scp

scriptコマンドでは、複数のスクリプトを一度に指定することもできます。たとえば、前述のトリガー「2」に対し、3番目のスクリプトとしてflash:/3rd.scpを、4番目のスクリプトとしてflash:/4th.scpを追加するには次のようにします。

    awplus(config)# trigger 2
    awplus(config-trigger)# script 3 flash:/3rd.scp 4 flash:/4th.scp

トリガーからスクリプトを削除するには、scriptコマンドをno形式で実行します。たとえば、トリガー「2」から3番目のスクリプトを削除するには、次のようにします。

    awplus(config)# trigger 2
    awplus(config-trigger)# no script 3

トリガーを削除するには、triggerコマンドをno形式で実行します。

    awplus(config)# no trigger 2

トリガーの情報を確認するには、show triggerコマンドを使います。