Cluster Server 7.3.1 エージェント開発者ガイド - AIX、Linux、Solaris、Windows

Last Published:
Product(s): InfoScale & Storage Foundation (7.3.1)
  1. 概要
    1.  
      VCS エージェントについて
    2. エージェント関数
      1.  
        エージェントフレームワークについて
      2.  
        IMF(Intelligent Monitoring Framework)について
      3.  
        リソースの種類の定義
      4.  
        エージェント関数(エントリポイント)について
      5.  
        on-off、on-only、persistent リソースについて
      6. 属性について
        1.  
          属性のデータ型
        2.  
          属性値の種類
        3.  
          システムにまたがる属性の範囲: グローバル属性とローカル属性
        4.  
          属性の有効期間: 一時属性
      7.  
        アプリケーションの Intentional Offline について
    3. エージェントの開発について
      1.  
        アプリケーションに関する注意事項
      2. エージェント開発プロセスの高度な概要
        1.  
          タイプ定義ファイルの作成
        2.  
          エントリポイントの開発
        3.  
          エージェントの作成
        4.  
          エージェントのテスト
  2. エージェントのエントリポイントの概要
    1. エージェントのエントリポイントについて
      1.  
        サポートされるエントリポイント
      2.  
        エージェントフレームワークがエントリポイントと相互作用するしくみ
    2. エージェントエントリポイントの説明
      1.  
        open エントリポイントについて
      2.  
        monitor エントリポイントについて
      3.  
        online エントリポイントについて
      4.  
        offline エントリポイントについて
      5.  
        clean エントリポイントについて
      6. action エントリポイントについて
        1.  
          action エントリポイントの戻り値
      7. info エントリポイントについて
        1.  
          info エントリポイントの戻り値
        2.  
          ResourceInfo 属性について
        3.  
          info エントリポイントの呼び出し
      8.  
        attr_changed エントリポイントについて
      9.  
        close エントリポイントについて
      10.  
        shutdown エントリポイントについて
      11.  
        imf_init エントリポイントについて
      12.  
        imf_register エントリポイントについて
      13.  
        imf_getnotification エントリポイントについて
      14.  
        migrate エントリポイントについて
      15.  
        meter エントリポイントについて
    3.  
      エントリポイントの戻り値
    4. C++ またはスクリプトエントリポイントの使用上の注意事項
      1. VCSAgStartup ルーチンについて
        1.  
          スクリプトを使ってエントリポイントを実装する場合
        2.  
          C++ ですべてまたは一部のエントリポイントを実装する場合
        3.  
          例: C++ とスクリプトを使用する VCSAgStartup エントリポイント
    5. エージェント情報ファイルについて
      1. エージェント情報ファイルの例(UNIX)
        1.  
          エージェント情報
        2.  
          属性の引数の詳細
      2.  
        エージェント XML 情報ファイルの実装
    6. ArgList 属性と ArgListValues 属性について
      1.  
        V50 以降として登録されたエージェントの ArgListValues 属性
      2. 名前と値のタプル形式の概要
        1.  
          スカラー属性形式
        2.  
          ベクトル属性形式
        3.  
          キーリスト属性形式
        4.  
          アソシエーション属性形式
      3.  
        異なるエージェントバージョンの ArgListValues 属性
      4.  
        エントリポイントのタイムアウトについて
  3. C++ でのエントリポイントの作成
    1. C++ でのエントリポイントの作成について
      1.  
        この章で使うエントリポイントの例
    2.  
      データ構造
    3. C++ のエントリポイントの構文
      1.  
        C++ VCSAgStartup の構文
      2.  
        C++ monitor の構文
      3. C++ info の構文
        1.  
          resinfo_op
        2.  
          info_output
        3.  
          opt_update_args
        4.  
          opt_add_args
        5.  
          例: C++ での info エントリポイントの実装
      4.  
        C++ online の構文
      5.  
        C++ offline の構文
      6.  
        C++ clean の構文
      7.  
        C++ action の構文
      8.  
        C++ attr_changed の構文
      9.  
        C++ open の構文
      10.  
        C++ close の構文
      11.  
        C++ shutdown の構文
      12.  
        C++ migrate の構文
      13.  
        C++ meter の構文
    4. エージェントフレームワークの基本関数
      1.  
        VCSAgGetMonitorLevel
      2.  
        VCSAgGetFwVersion
      3.  
        VCSAgGetRegVersion
      4.  
        VCSAgRegisterEPStruct
      5.  
        VCSAgSetCookie2
      6.  
        VCSAgRegister
      7.  
        VCSAgUnregister
      8.  
        VCSAgGetCookie
      9.  
        VCSAgStrlcpy
      10.  
        VCSAgStrlcat
      11.  
        VCSAgSnprintf
      12.  
        VCSAgCloseFile
      13.  
        VCSAgDelString
      14.  
        VCSAgExec
      15.  
        VCSAgExecWithTimeout
      16.  
        VCSAgGenSnmpTrap
      17.  
        VCSAgSendTrap
      18.  
        VCSAgLockFile
      19.  
        VCSAgInitEntryPointStruct
      20.  
        VCSAgSetStackSize
      21.  
        VCSAgUnlockFile
      22.  
        VCSAgValidateAndSetEntryPoint
      23.  
        VCSAgSetLogCategory
      24.  
        VCSAgGetProductName
      25.  
        VCSAgMonitorReturn
      26.  
        VCSAgSetResEPTimeout
      27.  
        VCSAgDecryptKey
      28.  
        VCSAgGetConfDir
      29.  
        VCSAgGetHomeDir
      30.  
        VCSAgGetLogDir
      31.  
        VCSAgGetSystemName
      32.  
        VCSAG_CONSOLE_LOG_MSG
      33.  
        VCSAG_LOG_MSG
      34.  
        VCSAG_LOGDBG_MSG
      35.  
        VCSAG_RES_LOG_MSG
    5. コンテナサポートのためのエージェントフレームワーク基本関数
      1.  
        VCSAgIsContainerUp
      2.  
        VCSAgGetContainerTypeEnum
      3.  
        VCSAgExecInContainer2
      4.  
        VCSAgIsContainerCapable
      5.  
        VCSAgExecInContainerWithTimeout
      6.  
        VCSAgGetUID
      7.  
        VCSAgIsPidInContainer
      8.  
        VCSAgIsProcInContainer
      9.  
        VCSAgGetContainerID2
      10.  
        VCSAgGetContainerName2
      11.  
        VCSAgGetContainerBasePath
      12.  
        VCSAgGetContainerEnabled
  4. スクリプトでのエントリポイントの作成
    1. スクリプトでのエントリポイントの作成について
      1. スクリプトのエントリポイント使用上のルール
        1.  
          UNIX プラットフォームの場合
      2.  
        スクリプトのエントリポイントのパラメータと値
      3.  
        ArgList 属性
      4.  
    2. スクリプトエントリポイントの構文
      1.  
        monitor スクリプトの構文
      2.  
        online スクリプトの構文
      3.  
        offline スクリプトの構文
      4.  
        clean スクリプトの構文
      5.  
        action スクリプトの構文
      6.  
        attr_changed スクリプトの構文
      7.  
        info スクリプトの構文
      8.  
        open スクリプトの構文
      9.  
        close スクリプトの構文
      10.  
        shutdown スクリプトの構文
      11.  
        imf_init スクリプトの構文
      12.  
        imf_register スクリプトの構文
      13.  
        imf_getnotification スクリプトの構文
      14.  
        migrate スクリプトの構文
      15.  
        meter スクリプトの構文
    3. エージェントフレームワークの基本関数
      1.  
        VCSAG_GET_MONITOR_LEVEL
      2.  
        VCSAG_GET_AGFW_VERSION
      3.  
        VCSAG_GET_REG_VERSION
      4.  
        VCSAG_SET_RES_EP_TIMEOUT
      5. VCSAG_GET_ATTR_VALUE
        1.  
          キーリスト属性のキーの数と引数リストの属性のインデックスを取得するには
        2.  
          キーリストとベクトル属性の特定のキーを取得するには
        3.  
          アソシエーション属性でキーの数を、引数リストで属性のインデックスを取得するには
        4.  
          アソシエーション属性の特定のキーまたは値を取得するには:
      6.  
        VCSAG_SET_RESINFO
      7.  
        VCSAG_MONITOR_EXIT
      8.  
        VCSAG_SYSTEM
      9.  
        VCSAG_SU
      10.  
        VCSAG_RETURN_IMF_RESID
      11.  
        VCSAG_RETURN_IMF_EVENT
      12.  
        VCSAG_BLD_PSCOMM
      13.  
        VCSAG_PHANTOM_STATE
      14.  
        VCSAG_SET_ENVS
      15.  
        VCSAG_LOG_MSG
      16.  
        VCSAG_LOGDBG_MSG
      17.  
        VCSAG_SQUEEZE_SPACES
    4. コンテナをサポートするエージェントフレームワーク基本関数
      1.  
        VCSAG_GET_CONTAINER_BASE_PATH
      2.  
        VCSAG_GET_CONTAINER_INFO
      3.  
        VCSAG_IS_PROC_IN_CONTAINER
      4.  
        VCSAG_EXEC_IN_CONTAINER
    5. スクリプトのエントリポイントの例
      1.  
        FileOnOff の online エントリポイント
      2.  
        FileOnOff の monitor エントリポイント
      3.  
        intentional offline での monitor エントリポイント
      4.  
        FileOnOff の offline エントリポイント
      5.  
        基本監視(レベル 1)と詳細監視(レベル 2)を持つエージェントのエントリポイントの監視
  5. エージェントメッセージのログ
    1.  
      エージェントメッセージのログについて
    2. C++ とスクリプトのエントリポイントでのログ
      1. エージェントメッセージ: 書式
        1.  
          Timestamp
        2.  
          ニーモニック
        3.  
          重大度(Severity)
        4.  
          UMI
        5.  
          メッセージテキスト
      2.  
        VCS エージェントのエントリポイントのログ統合
    3. C++ のエージェントのログ用 API
      1.  
        C++ エントリポイントのエージェントアプリケーションログ用マクロ
      2.  
        C++ エントリポイント用のエージェントデバッグログ記録マクロ
      3.  
        C++ マクロの重要度引数
      4.  
        VCSAG_LOG_INIT を使った function_name の初期化
      5.  
        ログカテゴリ
      6.  
        C++ エージェントで使用されるログ用 API の例
    4. スクリプトのエントリポイントのログ記録関数
      1.  
        スクリプトでの関数の使用
      2. VCSAG_SET_ENVS
        1.  
          VCSAG_SET_ENVS の例 - シェルスクリプトのエントリポイント
        2.  
          VCSAG_SET_ENVS の例 - Perl スクリプトのエントリポイント
        3.  
          VCSAG_SET_ENVS の例 - Python スクリプトのエントリポイント
      3. VCSAG_LOG_MSG
        1.  
          VCSAG_LOG_MSG の例 - シェルスクリプトのエントリポイント
        2.  
          VCSAG_LOG_MSG の例 - Perl スクリプトのエントリポイント
        3.  
          VCSAG_LOG_MSG の例 - Python スクリプトのエントリポイント
      4. VCSAG_LOGDBG_MSG
        1.  
          VCSAG_LOGDBG_MSG の例 - シェルスクリプトのエントリポイント
        2.  
          VCSAG_LOGDBG_MSG の例 - Perl スクリプトのエントリポイント
        3.  
          VCSAG_LOGDBG_MSG の例 - Python スクリプトのエントリポイント
      5.  
        スクリプトエージェントで使用するログ用関数の例
  6. カスタムエージェントの作成
    1. エージェント開発で使用するファイル
      1.  
        スクリプトベースのエージェントバイナリ
      2.  
        C++ ベースのエージェントバイナリ
    2. カスタムエージェントのためのタイプ定義ファイルの作成
      1.  
        タイプ定義ファイルの命名規則
      2.  
        例: FileOnOffTypes.cf
      3.  
        例: intentional offline をサポートするカスタムエージェントのためのタイプ定義
      4.  
        agentTypes.cf ファイル作成の必要条件
      5.  
        設定へのカスタムタイプ定義の追加
    3. UNIX でのカスタムエージェントの作成
      1.  
        スクリプトを使用したエントリポイントの実装
      2.  
        例: UNIX でのスクリプトエントリポイントの使用
      3.  
        例: UNIX での VCSAgStartup() およびスクリプトエントリポイントの使用
      4.  
        C++ を使用したエントリポイントの実装
      5.  
        例: UNIX での C++ エントリポイントの使用
      6.  
        例: UNIX での C++ およびスクリプトエントリポイントの使用
    4.  
      カスタムエージェントのインストール
    5. カスタムリソースタイプに対するリソースの定義
      1. サンプルリソース定義
        1.  
          FileOnOff エージェントが設定情報を使用する方法
    6.  
      エージェントフレームワークのバージョンの詳細
  7. スクリプトベースの IMF 対応カスタムエージェントの作成
    1.  
      スクリプトベースの IMF 対応カスタムエージェントの作成について
    2.  
      AMF プラグインのスクリプトエージェントとのリンク
    3. オンラインおよびオフライン状態監視用にリソース登録を行う AMF プラグインで必要な XML ファイルの作成
      1.  
        オンラインの監視に対する AMF とのプロセスベースのリソースの登録に対する amfregister.xml の例
      2.  
        オフライン監視のためにプロセスベースリソースを AMF に登録するための amfregister.xml の例
      3.  
        所定のプロセスに対するオンラインおよびオフラインの IMF 監視の amfregister.xml の例
      4.  
        amfregister.xml に RepearName タグを追加する例
    4.  
      設定への IMF および IMFRegList 属性の追加
    5.  
      IMF 統合なしの監視
    6.  
      IMF を使用しない LevelTwo 監視頻度での監視
    7.  
      IMF 統合を使用した監視
    8.  
      IMF を使用した LevelTwo の監視頻度での監視
    9.  
      スクリプトベースの IMF 対応のカスタムエージェントのインストール
  8. エージェントのテスト
    1.  
      テストエージェントについて
    2. デバッグメッセージの使用
      1.  
        エージェント関数(エントリポイント)のデバッグ
      2.  
        エージェントフレームワークのデバッグ
    3. AdvDbg 属性を使ったデバッグ
      1. AdvDbg 属性の動作
        1.  
          pstack アクションの動作
        2.  
          core アクションの動作
      2.  
        AdvDbg の属性によるエントリポイントの既存の機能への影響
    4. エンジンプロセスを使用したエージェントのテスト
      1.  
        テストコマンド
  9. 静的タイプ属性
    1. 静的属性について
      1.  
        静的タイプ属性の無効化
    2. 静的タイプ属性の定義
      1.  
        ActionTimeout
      2. AdvDbg
        1.  
          AdvDbg 属性の設定と個別のキーの形式
        2.  
          monitor エントリポイントの AdvDbg 属性を設定するための推奨される手順
      3.  
        AEPTimeout
      4.  
        AgentClass
      5.  
        AgentDirectory
      6.  
        AgentFailedOn
      7.  
        AgentFile
      8.  
        AgentPriority
      9.  
        AgentReplyTimeout
      10.  
        AgentStartTimeout
      11.  
        AlertOnMonitorTimeouts
      12. ArgList
        1.  
          ArgList 参照属性
      13.  
        AttrChangedTimeout
      14.  
        AvailableMeters
      15.  
        CleanRetryLimit
      16.  
        CleanTimeout
      17.  
        CloseTimeout
      18.  
        ContainerOpts
      19.  
        ConfInterval
      20.  
        EPClass
      21.  
        EPPriority
      22.  
        ExternalStateChange
      23.  
        FaultOnMonitorTimeouts
      24.  
        FaultPropagation
      25.  
        FireDrill
      26.  
        IMF
      27.  
        IMFRegList
      28.  
        InfoInterval
      29.  
        InfoTimeout
      30.  
        IntentionalOffline
      31.  
        LevelTwoMonitorFreq
      32.  
        LogDbg
      33.  
        LogFileSize
      34.  
        LogViaHalog
      35.  
        ManageFaults
      36.  
        Meters
      37.  
        MeterControl
      38.  
        MeterRegList
      39.  
        MeterRetryLimit
      40.  
        MeterTimeout
      41.  
        MonitorInterval
      42.  
        MonitorStatsParam
      43.  
        MonitorTimeout
      44.  
        MigrateTimeout
      45.  
        MigrateWaitLimit
      46.  
        NumThreads
      47.  
        OfflineMonitorInterval
      48.  
        OfflineTimeout
      49.  
        OfflineWaitLimit
      50.  
        OnlineClass
      51.  
        OnlinePriority
      52.  
        OnlineRetryLimit
      53.  
        OnlineTimeout
      54.  
        OnlineWaitLimit
      55.  
        OpenTimeout
      56.  
        Operations
      57.  
        RegList
      58.  
        RestartLimit
      59.  
        ScriptClass
      60.  
        ScriptPriority
      61.  
        SourceFile
      62.  
        SupportedActions
      63.  
        SupportedOperations
      64.  
        ToleranceLimit
  10. 状態の遷移図
    1.  
      状態遷移
    2.  
      ManageFaults 属性に関する状態の遷移
  11. 国際化されたメッセージ
    1.  
      国際化されたメッセージについて
    2. SMC ファイルの作成
      1.  
        SMC の書式
      2.  
        SMC ファイルの例
      3.  
        SMC ファイルの形式
      4.  
        SMC ファイルと BMC ファイルの名前
      5.  
        メッセージ例
      6.  
        書式指定子の使用
    3. SMC ファイルから BMC ファイルへの変換
      1. BMC ファイルの格納
        1.  
          VCS サポート言語
      2.  
        BMC ファイルの内容の表示
    4. BMC マップファイルの使用
      1.  
        BMC マップファイルの場所
      2.  
        BMC マップファイルの作成
      3.  
        BMC マップファイルの例
    5.  
      BMC ファイルの更新
  12. First Failure Data Capture(FFDC)を使用した VCS リソースの予期しない動作のトラブルシューティング
    1.  
      VCS リソースの予期しない動作をトラブルシューティングするための FFDC(First Failure Data Capture)の強化
  13. 付録 A. 5.0 より前の VCS エージェントの使用
    1. 5.0 以前の VCS エージェントの使用と V50 以降への登録
      1.  
        V40 エージェントから V50 以降のエージェントへの変更手順の概要
      2.  
        V40 と V50 以降のスクリプト例
      3.  
        ag_i18n_inc モジュールをスクリプトエントリポイントに参照元として登録
    2.  
      VCS 4.0 以前のエージェントを使用するためのガイドライン
    3. VCS 4.0 以前のエージェントのログメッセージ
      1.  
        ログタグ(VCS 4.0 以前)のログ重要度(VCS 4.0)へのマッピング
      2.  
        VCS 4.0 以上での VCS 4.0 以前のメッセージの表示
      3.  
        VCS 4.0 以前の API および VCS 4.0 ログ用マクロ
    4. VCS 4.0 以前のメッセージ API
      1.  
        VCSAgLogConsoleMsg
      2.  
        VCSAgLogI18NMsg
      3.  
        VCSAgLogI18NMsgEx
      4.  
        VCSAgLogI18NConsoleMsg
      5.  
        VCSAgLogI18NConsoleMsgEx

オンラインおよびオフライン状態監視用にリソース登録を行う AMF プラグインで必要な XML ファイルの作成

オンラインおよびオフライン状態の監視に対して AMF にプロセスベースのリソース登録を行うために、imf_register エントリポイントで使用されている amfregister.xml ファイルを作成します。 imf_register エントリポイントはオンラインおよびオフライン状態の監視に対してリソースを登録するために異なるエージェントによって使用される汎用のスクリプトであるため、amfregister.xml を用いて特定のタイプのリソースに対して登録すべき内容を指定する必要があります。 amfregister.xml で使われるタグについて詳しくは、次の表の説明を参照してください。

表: amfregister.xml ファイルの共通タグ

タグ名

説明

RegType

このタグを使って、登録のタイプを指定します。このタグは、PRON と PROFF に特有のタグ間で共通です。

プロセスオフライン監視に対して、AMF にリソース登録を行うために PROFF に設定します。

プロセスオンライン監視で、AMF にリソース登録を行うために PRON に設定します。

ReaperName

エージェントの reaper 名(型名)を格納します。エージェントは、IMF 通知のモジュールにこの名前で登録されます。

表: PRON 固有のタグ

タグ名

説明

ProcPattern

プロセスベースのリソースがプロセステーブルにどのように表示されるかを指定します。指定された ProcPattern がプロセステーブルで検索され、対応する pid がオンラインの監視に対して AMF に登録されます。

PronOptions

ProcPattern 照合に対して追加のオプションを指定します。 IGNORE_ARGS に設定されている場合、ProcPattern に指定されている値はプロセスパスとして見なされます。 プロセステーブルエントリに対して照合されている間は、プロセスパスだけが ProcPattern に対して照合されます。照合プロセスの pid が AMF に登録されます。

PronOptions が IGNORE_PATH に設定されている場合、ProcPattern に記述されている値はプロセス args が後に続くプロセス名として見なされます。 プロセステーブルエントリに対して照合されている間は、プロセスパスのベース名とプロセス args だけが ProcPattern に対して照合されます。照合プロセスの pid が AMF に登録されます。

PronOptions が IGNORE_ARGS IGNORE_PATH に設定されている場合、ProcPattern に記述されている値は単にプロセス名として見なされます。 プロセステーブルエントリに対して照合されている間は、プロセスパスのベース名だけが ProcPattern に記述されているプロセス名に対して照合されます。プロセスの引数は、考慮されてません。 照合プロセスの pid が AMF に登録されます。

表: PROFF 固有のタグ

タグ名

説明

Owner

このプロセスを実行するのはユーザーです。 このユーザーの UID と GID は、AMF による PROFF イベントの登録に使用されます。

Path

バイナリの完全なパス。

arg0

バイナリが実行される名前。 絶対パスとともに実行される場合、これは指定する必要はありません。

arg0flag

これは、arg0 の照合動作をさらに絞り込むために使用されます。 arg0 で指定した文字列(例: 文字列 A)は、照合するプロセスの arg0 の中で検索されます(例: 文字列 PA)。 これは次の値を取ることができます。

  • FREE: 自由な部分文字列の一致操作を使って、文字列 PA 中の文字列 A を見つけます。

  • BOUNDLEFT: 左詰めの部分文字列の一致操作を使って、文字列 PA 中の文字列 A を見つけます。

  • BOUNDRIGHT: 右詰めの部分文字列の一致操作を使って、文字列 PA 中の文字列 A を見つけます。

  • EXACT: 文字列 A は文字列 PA と正確に一致する必要があります。

    arg0flag を指定しない場合、arg0flag のデフォルト値は EXACT と見なされます。

    メモ:

    BOUNDLEFT と BOUNDRIGHT は、スペースで区切って一緒に指定できます。BOUNDLEFT と BOUNDRIGHT を一緒に指定することは、EXACT と同じではありません。

args

バイナリが実行される引数。 これは、プロセステーブル内でプロセスを検索する際の照合に使用されます。 ここでは、完全一致を検索します。

ArgsSubString

引数のデフォルトの完全一致とは別として、照合されているプロセスの引数リストに表示される必要がある部分文字列のリストを指定できます。

ArgsSubString タグを使用して、1 つの部分文字列を指定できます。 このような部分文字列を最大 8 個指定できます。

メモ:

ArgsSubString が指定されている場合、args を指定しないでください。

ArgsSubStringFlag

指定されたそれぞれの部分文字列に対して、追加のフラグを指定して、照合動作を制御できます。指定された各部分文字列(たとえば、ストリング SS)は、照合されているプロセスの args 内を検索されます(たとえば、ストリング PA)。

  • FREE: 自由な部分文字列の一致操作を使って、文字列 PA 中の文字列 SS を見つけます。

  • BOUNDLEFT: 左詰めの部分文字列の一致操作を使って、文字列 PA 中の文字列 SS を見つけます。

  • BOUNDRIGHT: 右詰めの部分文字列の一致操作を使って、文字列 PA 中の文字列 SS を見つけます。

    すべての ArgsSubString には、対応する ArgsSubStringFlag が必要です。 ArgsSubStringFlag を指定しない場合、デフォルトのフラグは FREE です。

ArgsFlag

このタグは、全体的な部分文字列照合の動作を制御するために使用されます。

次の値が含まれます。

  • MATCH_ALL: 指定されたすべての部分文字列を照合します。

  • MATCH_ANY: 指定された任意の部分文字列を照合します。

  • IGNORE_ARGS: 完全に args を無視します。ArgsSubString または args タグが指定されていない場合、これは指定しないでください。

    一連のゼロまたは追加の ArgsSubString と ArgsSubStringFlag タグの後に、オプショグ ArgsFlag を挿入できます。ArgsFlag を指定しない場合、MATCH_ALL がその ArgsFlag のデフォルト値として見なされます。