# 運用・管理 / トリガー

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

表 1
種類 | 説明
CPUトリガー | CPUの使用率がしきい値を越えたときに起動される
インターフェーストリガー | インターフェースのリンクステータスが変化したときに起動される
メモリートリガー | メモリーの使用率がしきい値を越えたときに起動される
定期実行トリガー | 一定の間隔（たとえば1時間ごと）で繰り返し起動される
Pingポーリングトリガー | Pingポーリングの監視対象機器への到達性が喪失または回復したときに起動される
再起動トリガー | システム起動（再起動）時に起動される
定時トリガー | 決められた時刻に起動される
AMFノードトリガー | AMFネットワークにAMFノードが参加、離脱したときに起動する
AMFゲストノードトリガー | AMFネットワークにAMFゲストノードが参加、離脱したときに起動する
ログメッセージトリガー | 指定した文字列（正規表現）を含むnoticesレベル以上のログメッセージが出力されたときに起動される

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

## 基本設定

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

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

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

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

      AT-AMF-app(config)# trigger 2
      AT-AMF-app(config-trigger)# type interface eth1 down
      AT-AMF-app(config-trigger)# script 1 flash:/linkdown.scp

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

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

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

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

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

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

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

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

  Note

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

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

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

  Note

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

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

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

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

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

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

      AT-AMF-app(config)# trigger 14
      AT-AMF-app(config-trigger)# type log something \\d+\\.\\d+\\.\\d+ happened
      AT-AMF-app(config-trigger)# script 1 flash:/somehpns.scp

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

      2017 Oct 10 15:47:20 user.notice awplus XXXX[xxxx]: XXXX something 1.0.3 happened.

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

    AT-AMF-app# trigger activate 1

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

    AT-AMF-app(config)# trigger 2
    AT-AMF-app(config-trigger)# script 2 flash:/2nd.scp

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

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

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

    AT-AMF-app(config)# trigger 2
    AT-AMF-app(config-trigger)# no script 3

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

    AT-AMF-app(config)# no trigger 2

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