はじめに
こんにちは。テクノプロで組み込み開発エンジニアをしている神崎 一郎です。
SI(System Integration)のプラットフォームを開発しています。
今回は、Pythonで監視・復旧を行う自動化システム設計のポイントについて、書きたいと思います。
監視・復旧自動化システムの要件
-
- 監視(以下、「Master PC」と言う)PC:一台
-
- 監視対象PC:複数台(以下、「SI PC」と言う)
-
- 監視対象サービス:監視対象となるSIサービスとのことです
-
- SI PC(サービス)から異常、進捗等情報(以下、「eventと言う」)を送信される
-
- SI PC(サービス)の状態を自動的追跡し、自動的(障害対応等の)制御を行う
-
- ウェブUIを備え、UIから操作可能
コンポーネント割り当て
- Djangoの部
- UI
- REST-API:異常、進捗等情報等の受信
- Python Nativeの部
- コア:状態の追跡
- 制御:SI PC(サービス)の制御を行う
- PostGreSQL データベース
+ データのやりとりは、データベースにて行う
実装について検討
UI
- HandsontableのようなOSSを利用すれば、Excelに似たUIは作成出来る
REST-API
- DjangoのREST-API Pluginを利用すると良いでしょう
コア:状態の追跡
- PC(サービス)毎に、メモリ上で一つのHSM(階層型ステートマシン)を設ける
- HSMは、transitions OSSを使うと良いでしょう
- event をHSMに与えることで、状態を遷移させる
- 状態の遷移に伴い、CallBackにて、状態をデータベースに格納する
- 状態の遷移に伴い、CallBackにて、制御コマンドを生成し、データベースに格納する
制御
- SI PC制御のスクリプトを作成する
- Celeryにて、リモート制御を行う
データベース設計
下記のような感じとなるでしょう。
- Host Table
- Service Table
- Event仕様Table
- 受信Event Table
- Host状態Table
- Service状態Table
- 制御コマンドTable
動的構造(プロセス構成)
Django
T.B.D(Diango ウェブ構成)
コア
メインプロセス×1
- 初期処理:SI PC(サービス)個数分のHSMを作成する
- scheduler OSSにて、ポーリングを行い、Eventをチェックする
- Event(PC・サービス)N個を受信される
- Joblib OSSにて、N個のプロセスを作成し、Event処理を起動する
制御
メインプロセス×1
- scheduler OSSにて、ポーリングを行い、コマンドをチェックする
- Command M個を取得される
- M個のプロセスを作成し、コマンドを実行させる
終わりに
いかがでしたか。割り込み等細かい課題は残っていますが、概ね、Python OSSで、自動化システムをしっかり作成出来ます。今回はソースコードを触れず、これで終わりですが、ご参考になればと思います。