時系列の応答時間データに対するpythonによるインタフェースを提供します。※課題対応
- ping応答の結果が記録されているCSVファイルを読み込んで、それに対して、応答がなかった期間のリストを取得したり、過負荷になっている期間のリストを取得できる機能を提供します。
- 入力ファイルフォーマット に記載されるフォーマットのping応答結果ファイルを用意してください。
- python3.10をインストールしてください。
- このリポジトリをcloneしてください。(以下、コマンド例)
git clone https://github.com/ngwork0301/response-time-interface.git- リポジトリをcloneしたフォルダにあるsrcフォルダで、python3コマンドをインタプリタモードで起動してください。
Python 3.10.1 (main, Jan 17 2022, 15:47:31) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> - 以下のように、ResponseTimesクラスをimportしてください。
>>> from response_times import ResponseTimes- 以下のように、引数に 準備 で用意したping応答結果ファイルへのパスを引数にして、ResponseTimesクラスのインスタンスを生成してください、
>>> resps = ResponseTimes('test.csv')- 以下の 機能 に記載する方法で故障状態や過負荷状態の情報を取得してください。
- ping応答が1度でもタイムアウトしたサーバの故障期間のリストを取得する方法
>>> resps.find_all_failure()
[{'address': '10.20.30.1/16', 'period': '20201019133324-20201019133326'}]- n回以上連続してping応答がタイムアウトしたサーバの故障期間のリストを取得する方法
>>> n = 2
>>> resps.find_all_failure(2)
[{'address': '10.20.30.1/16', 'period': '20201019133324-20201019133326'}]- 直近 m 回の平均応答時間が t ミリ秒を超えた場合に過負荷状態になっているとみなし、過負荷となっているサーバの期間のリストを取得する方法
>>> m = 3; t = 3
>>> resps.find_all_high_load(m, t)
[{'address': '10.20.30.1/16', 'period': '20201019133328-20201019133331'}]- サブネットの内のサーバが全て故障(ping応答がすべてn回以上連続でタイムアウト)しているサブネットの、故障期間のリストを取得する方法
>>> n = 2
>>> resps.find_all_subnet_failure(n)
[{'subnet': '10.20.0.0/16', 'period': '20201019133324-20201019133326'}]- カンマ区切りの形式で1行ずつ、サーバアドレスに対するping応答の応答結果が記録されたファイルです。
<確認日時>,<サーバアドレス>,<応答結果>
- 確認日時は、YYYYMMDDhhmmssの形式。ただし、年=YYYY(4桁の数字)、月=MM(2桁の数字。以下同様)、日=DD、時=hh、分=mm、秒=ssです。
- サーバアドレスは、ネットワークプレフィックス長付きのIPv4アドレスです。
- 応答結果には、pingの応答時間がミリ秒単位で記載される。ただし、タイムアウトした場合は"-"(ハイフン記号)です。
20201019133124,10.20.30.1/16,2
20201019133125,10.20.30.2/16,1
20201019133134,192.168.1.1/24,10
20201019133135,192.168.1.2/24,5
20201019133224,10.20.30.1/16,522
20201019133225,10.20.30.2/16,1
20201019133234,192.168.1.1/24,8
20201019133235,192.168.1.2/24,15
20201019133324,10.20.30.1/16,-
20201019133325,10.20.30.2/16,2
- 開発環境作成のメモは Wiki を参照