1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonで監視・復旧の自動化システムを作ろう

Posted at

はじめに

こんにちは。テクノプロで組み込み開発エンジニアをしている神崎 一郎です。
SI(System Integration)のプラットフォームを開発しています。
今回は、Pythonで監視・復旧を行う自動化システム設計のポイントについて、書きたいと思います。

監視・復旧自動化システムの要件

    1. 監視(以下、「Master PC」と言う)PC:一台
    1. 監視対象PC:複数台(以下、「SI PC」と言う)
    1. 監視対象サービス:監視対象となるSIサービスとのことです
    1. SI PC(サービス)から異常、進捗等情報(以下、「eventと言う」)を送信される
    1. SI PC(サービス)の状態を自動的追跡し、自動的(障害対応等の)制御を行う
    1. ウェブ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で、自動化システムをしっかり作成出来ます。今回はソースコードを触れず、これで終わりですが、ご参考になればと思います。

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?