Skip to content

ngwork0301/response-time-interface

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

response-time-interface

時系列の応答時間データに対するpythonによるインタフェースを提供します。※課題対応

概要

  • ping応答の結果が記録されているCSVファイルを読み込んで、それに対して、応答がなかった期間のリストを取得したり、過負荷になっている期間のリストを取得できる機能を提供します。

使い方

準備

  1. 入力ファイルフォーマット に記載されるフォーマットのping応答結果ファイルを用意してください。
  2. python3.10をインストールしてください。
  3. このリポジトリをcloneしてください。(以下、コマンド例)
git clone https://github.com/ngwork0301/response-time-interface.git

Pythonをインタプリタモードで実行

  1. リポジトリを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.
>>> 
  1. 以下のように、ResponseTimesクラスをimportしてください。
>>> from response_times import ResponseTimes
  1. 以下のように、引数に 準備 で用意したping応答結果ファイルへのパスを引数にして、ResponseTimesクラスのインスタンスを生成してください、
>>> resps = ResponseTimes('test.csv')
  1. 以下の 機能 に記載する方法で故障状態や過負荷状態の情報を取得してください。

機能

サーバの故障期間を取得 : (find_all_failureメソッド)

  • 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'}]

サーバの過負荷期間を取得 : (find_all_high_loadメソッド)

  • 直近 m 回の平均応答時間が t ミリ秒を超えた場合に過負荷状態になっているとみなし、過負荷となっているサーバの期間のリストを取得する方法
>>> m = 3; t = 3
>>> resps.find_all_high_load(m, t)
[{'address': '10.20.30.1/16', 'period': '20201019133328-20201019133331'}]

サブネットの故障期間を取得 : (find_all_subnet_failureメソッド)

  • サブネットの内のサーバが全て故障(ping応答がすべてn回以上連続でタイムアウト)しているサブネットの、故障期間のリストを取得する方法
>>> n = 2
>>> resps.find_all_subnet_failure(n)
[{'subnet': '10.20.0.0/16', 'period': '20201019133324-20201019133326'}]

入力ファイルフォーマット(CSV)

  • カンマ区切りの形式で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 を参照

About

時系列の応答時間データに対するpythonによるインタフェースを提供する。※課題対応

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages