【GUI & CLI ランチャー】

はじめに

SOCKET-MANAGER Framework をベースに構築された、クロスプラットフォーム対応のサービス管理ランチャーです。GUIモードとCLIモードの両方に対応し、柔軟な運用と高い可視性を提供します。 GUIモードではWebSocketサーバーを内蔵しており、ブラウザから直接接続可能。CLIモードでは軽量なランタイムライブラリを用いて、スクリプトや自動化にも適応します。

設計方針

GUIモードとCLIモードの両対応

利用シーンに応じて切り替え可能。GUIはブラウザベース、CLIはコマンドライン操作に最適化

SOCKET-MANAGER Framework による実装

以下ライブラリの融合的な実装。
CLIモード:常駐型アプリ開発用の RuntimeManager ライブラリ
GUIモード:ネットワークサーバー開発用の SocketManager ライブラリ

SOCKET-MANAGER Framework推奨構成への親和性

プロセスの絶対数によるマルチサーバー管理に最適化

軽量設計

最小限の依存関係でランチャー自身が負荷を及ぼさないよう配慮

CPUリソースの明示的な割り当て機能

論理CPUへの配置指定とプロセス状態の可視化
CPUの割り当てを適切に行う事によってサービス間の競合を抑制

ログ収集と運用透明性の両立

アクション単位での追跡・監視・記録機能を実装

サービス種別の柔軟な対応

コマンドライン起動型であれば Framework 製以外のサービスにも対応可能

グループ単位でのサービス管理

任意のサービス群に対して一括操作・監視が可能な柔軟なグルーピング機能を搭載

クロスプラットフォーム対応

Windows/Linux環境で共通の操作性と機能性を提供します。特にWindows環境ではWSLなどの仮想層に依存せず、ネイティブAPIを用いてCPU/メモリ/ディスクなどのリソースを直接管理・監視しています。これにより、USB接続のリムーバブルディスクの抜き差しなどにもリアルタイムで対応可能です。

GUI モードの特徴


< 画面 イメージ >

GUI モード画面

特 徴

WebSocketサーバー内蔵
Webサーバーや中継サーバーが不要で、ブラウザから直接ランチャーに接続可能

スケールアウト対応
複数の物理サーバーへ同時接続し、統合管理が可能

簡易サーバー監視機能
CPU・メモリ・ディスクの使用率をグラフで可視化
warn / alert / critical の3段階閾値で色分け・メール通知に対応
閾値やメール通知先は各リソースごとに設定ファイルで指定可能

サービス管理機能
単体 / 全体 / グループ単位でのボタンによる起動・停止制御
サービス単位で CPU / メモリ などのリソース使用率のリアルタイムな可視化
サービス制御ログの一覧表示
ブラウザ上でのサービス設定編集(追加・編集・削除)
編集内容の保存・JSON形式でのダウンロード

設定ファイルのロード機能
編集前の状態に戻したい場合や、バックアップファイルの適用が可能

論理CPUの割り当て
論理CPU単位の稼働率グラフを見ながら負荷状況に応じた割り当てが可能

カスタムモニタリング機能
サービス側から任意のモニタリングデータをUDPで送信することで、GUIランチャー上にカスタムパーツとしてリアルタイム表示可能
ユーザー数や接続状況など、運用に合わせた独自指標を柔軟に可視化できます

チャット機能
管理者間のコミュニケーションに対応。通常メッセージとプライベートメッセージをサポート

レスポンシブデザイン
PC・タブレット・スマートフォンなど、画面サイズに応じて最適化
モバイル端末からの接続ではWebサーバーが必要になります(静的HTMLが解釈できないため)

ログ追跡
ログレベル/アクション/オペレーター単位での複合フィルタリング機能

CLI モードの特徴


< 画面 イメージ >

CLI モード画面

特 徴

サービス管理機能
単体 / 全体 / グループ単位での起動・停止制御
サービス単位で status アクションによる CPU / メモリ などのリソース使用率の可視化
設定ファイルによるサービス設定編集(追加・編集・削除)

論理CPUの割り当て
cpuinfo アクションで表示される論理CPU番号を使って設定ファイルにて割り当てが可能

自動再起動
サービス停止を検知した際に自動起動。設定ファイルでON/OFF制御可能

ログ保存
ログレベル/アクション単位などで追跡可能。設定ファイルで daily / monthly の保存形式を選択可能

インストールと起動方法

以下の composer コマンドでインストールできます。
> composer create-project socket-manager/launcher <インストール先のディレクトリ名>
                    

インストールが終わったらプロジェクトのルートディレクトリで php worker app:cli コマンドを入力し、以下のように Usage が表示されれば正常にインストールされています。
> php worker app:cli

以下のいずれかを指定して下さい。
start <サービス名> or <group:グループ名>
startall
stop <サービス名> or <group:グループ名>
stopall
restart <サービス名> or <group:グループ名>
restartall
status <サービス名> or <group:グループ名>
statusall
cpuinfo
shutdown
                    

GUI モードで確認する時は以下のコマンドを入力してください。
> php worker app:gui
                    

コマンド実行後 app/client/launcher.html のファイルをブラウザで開き、ランチャーを起動している「ホスト名(デフォルトはlocalhost)」や「ポート番号(デフォルトは5000ポート)」と「オペレータ名」を入力してから「接続」ボタンを押すと画面が表示されます。

※初期状態のサービス設定ファイル setting/service.json.sample にはサンプルが定義されています。内容を定義後はファイル名をデフォルトの service.json にしてからお使い下さい。ファイル名は設定ファイルで変更可能です。

おわりに

本プロジェクト環境は、フレームワークのDevOps環境(紹介ページ)でも触れている通り、DevOps用途としても活用できます。また、通信アプリ開発や常駐型アプリ開発の新規プロジェクト環境としても利用可能です。導入手順は以下のページをご参照ください。
本環境にはGUIランチャーとCLIランチャーが含まれます。CLIランチャーは RuntimeManager(主に runtime コマンド)を用いた常駐型アプリ開発の参考実装として、GUIランチャーは SocketManager(主に craft コマンド)を用いたソケット通信アプリ開発の参考実装としてご利用ください。