【ランチャーの機能設定】

はじめに

SOCKET-MANAGER Framework のランチャーは、setting/launcher.php に定義された機能設定ファイルを基盤として動作します。
このファイルでは、標準出力の制御や自動再起動の有無、ログ保存期間、サービス設定ファイルの参照先に加え、GUIモードで利用するリソース監視(CPU・メモリ・ディスク)の閾値や通知設定を定義できます。
運用環境に合わせて適切に調整することで、安定したサービス稼働と効率的な監視が可能になります。
return [

    /**
     * 標準出力制御の設定(true:標準出力有り、false:標準出力無し、'auto':自動判別)
     * 
     * 自動判別時、CLIモードではtrue、GUIモードではfalseになります
     */
    'stdout_enabled' => 'auto',

    /**
     * 自動再起動の設定(true:自動再起動有り、false:自動再起動無し)
     * 
     * プロセスが停止していたら自動で再起動します。GUIモードでは常にfalseになります
     */
    'auto_restart' => false,

    /**
     * ログ保存期間の設定(logs/launcher内に保存)
     * 
     * ファイル単位での保存期間を指定します('daily' or 'monthly')
     */
    'log_cycle' => 'daily',

    /**
     * ランチャー用ログファイルのパス
     */
    'log_path_for_launcher' => './logs/launcher',

    /**
     * チャット用ログファイルのパス
     */
    'log_path_for_chat' => './logs/chat',

    /**
     * サービス設定ファイルのパス
     * 
     * 初期状態のサービス設定ファイル setting/service.json.sample にはサンプルが定義されています。
     * 内容を定義後はファイル名を service.json にしてからお使い下さい。
     * 
     * ※複数のサービスを起動する場合、サービス設定ファイルに定義されている並び順が実行順になります。
     * 
     * 以下はサービス設定ファイル内で定義が必要な項目の内訳です。
     * 
     * cores    割り当てるCPUコア番号のリスト(配列形式)⇒cpuinfoアクションを実行する事で割り当て可能なコア番号が確認できます
     * name     サービス名(ユニークにする必要があります)
     * group    グループ名(null or 空文字 で指定なし)
     * path     実行パス(絶対 or 相対)
     * command  コマンド文
     */
    'services_path' => './setting/services.json',


    //--------------------------------------------------------------------------
    // GUIモード用
    //--------------------------------------------------------------------------

    // 各種リソース設定
    'resources' => [

        // CPUリソース
        'cpu' => [

            // 警告レベルの設定
            'warn' => [

                // 閾値(設定値以上で通知)
                'threshold' => 50,

                // 通知メール設定(全てnullで無効設定)
                'email' => [
                    'to' => null,
                    'from_address' => null, // Fromヘッダを指定する時は必須
                    'from_name' => null,
                    'reply_to' => null
                ]
            ],

            // アラートレベルの設定
            'alert' => [ 'threshold' => 75, 'email' => null /* 'email'がnullでも無効設定 */ ],

            // クリティカルレベルの設定
            'critical' => [ 'threshold' => 90, 'email' => null ]
        ],

        // メモリリソース
        'memory' => [

            // 警告レベルの設定
            'warn' => [ 'threshold' => 50, 'email' => null ],

            // アラートレベルの設定
            'alert' => [ 'threshold' => 75, 'email' => null ],

            // クリティカルレベルの設定
            'critical' => [ 'threshold' => 90, 'email' => null ]
        ],

        // [Linux用]ディスクリソース
        'disk_linux' => [

            // ルート
            '/' => [

                // ディスクラベル
                'label' => 'ルート',

                // 警告レベルの設定
                'warn' => [ 'threshold' => 50, 'email' => null ],

                // アラートレベルの設定
                'alert' => [ 'threshold' => 75, 'email' => null ],

                // クリティカルレベルの設定
                'critical' => [ 'threshold' => 90, 'email' => null ]
            ],

            // ホーム
            '/home' => [

                // ディスクラベル
                'label' => 'ホーム',

                // 警告レベルの設定
                'warn' => [ 'threshold' => 50, 'email' => null ],

                // アラートレベルの設定
                'alert' => [ 'threshold' => 75, 'email' => null ],

                // クリティカルレベルの設定
                'critical' => [ 'threshold' => 90, 'email' => null ]
            ],

            // ログ
            '/var' => [

                // ディスクラベル
                'label' => 'ログ',

                // 警告レベルの設定
                'warn' => [ 'threshold' => 50, 'email' => null ],

                // アラートレベルの設定
                'alert' => [ 'threshold' => 75, 'email' => null ],

                // クリティカルレベルの設定
                'critical' => [ 'threshold' => 90, 'email' => null ]
            ]
        ],

        // [Windows用]ディスクリソース
        'disk_windows' => [

            // Cドライブ
            'C:' => [

                // ディスクラベル
                'label' => 'Cドライブ',

                // 警告レベルの設定
                'warn' => [ 'threshold' => 50, 'email' => null ],

                // アラートレベルの設定
                'alert' => [ 'threshold' => 75, 'email' => null ],

                // クリティカルレベルの設定
                'critical' => [ 'threshold' => 90, 'email' => null ]
            ],

            // Dドライブ
            'D:' => [

                // ディスクラベル
                'label' => 'Dドライブ',

                // 警告レベルの設定
                'warn' => [ 'threshold' => 50, 'email' => null ],

                // アラートレベルの設定
                'alert' => [ 'threshold' => 75, 'email' => null ],

                // クリティカルレベルの設定
                'critical' => [ 'threshold' => 90, 'email' => null ]
            ],

            // Eドライブ
            'E:' => [

                // ディスクラベル
                'label' => 'Eドライブ',

                // 警告レベルの設定
                'warn' => [ 'threshold' => 50, 'email' => null ],

                // アラートレベルの設定
                'alert' => [ 'threshold' => 75, 'email' => null ],

                // クリティカルレベルの設定
                'critical' => [ 'threshold' => 90, 'email' => null ]
            ]
        ]
    ]
];
                    

本記事では、launcher.php の各設定項目を整理し、運用時にどのように活用できるのかを解説します。

基本設定項目

まずはランチャー全体に共通する基本的な設定です。
'stdout_enabled'       => 'auto',
'auto_restart'         => false,
'log_cycle'            => 'daily',
'log_path_for_launcher'=> './logs/launcher',
'log_path_for_chat'    => './logs/chat',
                    

  • stdout_enabled
    標準出力の制御を行います。true で常に出力、false で出力なし、auto の場合は CLI モードでは出力あり、GUI モードでは出力なしとなります。

  • auto_restart
    プロセスが停止した際に自動再起動するかどうかを制御します。CLI モードでは有効にできますが、GUI モードでは常に false になります。

  • log_cycle
    ログの保存期間を指定します。daily で日単位、monthly で月単位のローテーションが行われます。

  • log_path_for_launcher
    ランチャー用ログファイルの保存先を指定します。ディスク容量や権限設定に注意が必要です。

  • log_path_for_chat
    チャット用ログファイルの保存先を指定します。ディスク容量や権限設定に注意が必要です。

サービス設定ファイルの指定

サービスの起動定義は、以下の設定で指定されたファイルに記述します。
'services_path' => './setting/services.json',
                    

  • 初期状態では setting/service.json.sample が用意されており、必要に応じて内容を編集し、service.json にリネームして利用します。

  • 複数サービスを起動する場合は、定義された順番で実行されます。

  • サービス定義に必要な主な項目は以下の通りです。

  • cores:割り当てる CPU コア番号のリスト(cpuinfo アクションで確認可能)

  • name:サービス名(ユニークである必要あり)

  • group:グループ名(任意)

  • path:実行パス(絶対または相対)

  • command:実行コマンド

GUIモード用リソース監視設定

GUI モードでは、CPU・メモリ・ディスクの使用率を監視し、閾値を超えた場合に通知を行う仕組みがあります。
'resources' => [
    'cpu' => [
        'warn'     => [ 'threshold' => 50, 'email' => null ],
        'alert'    => [ 'threshold' => 75, 'email' => null ],
        'critical' => [ 'threshold' => 90, 'email' => null ]
    ],
    'memory' => [
        'warn'     => [ 'threshold' => 50, 'email' => null ],
        'alert'    => [ 'threshold' => 75, 'email' => null ],
        'critical' => [ 'threshold' => 90, 'email' => null ]
    ],
    'disk_linux' => [...],
    'disk_windows' => [...]
]
                    

  • CPU / メモリ
    warnalertcritical の3段階で閾値を設定できます。通知メールを有効化する場合は email に送信先を設定します。

  • ディスク(Linux / Windows)
    Linux では /, /home, /var などのマウントポイント単位、Windows では C:, D:, E: といったドライブ単位で監視対象を設定できます。
    各項目にラベルを付けることで、GUI 上での識別が容易になります。

実運用での注意点

  • stdout_enabled の挙動
    auto 設定時は CLI と GUI で動作が異なるため、ログ収集の仕組みに応じて調整が必要です。

  • auto_restart の制約
    GUI モードでは常に false となるため、サービスの安定稼働は監視と手動対応に依存します。

  • リソース監視の通知設定
    email を有効化する場合は、送信元アドレスやリレー環境の設定を忘れずに行う必要があります。

  • ディスク監視の対象範囲
    Linux と Windows で設定方法が異なるため、環境に応じて適切に定義してください。

おわりに

setting/launcher.php は、ランチャーの動作と監視機能を制御する重要な設定ファイルです。
  • 基本設定で標準出力や自動再起動、ログ保存を制御

  • サービス設定ファイルを指定して起動順序を管理

  • GUI モードでは CPU・メモリ・ディスクのリソース監視を実施
これらを適切に設定することで、運用環境に最適化された安定したサービス管理と障害検知が実現できます。