python3.7.4
testlog.log 監視ログのファイルです。全ての設問に対応するためにいくつかログを追加しました。
question1.py
python question1.py testlog.log
10.20.30.1/16 1.0
10.20.30.1/16 1.0
10.20.30.1/16 1.0
10.20.30.1/16 2.0
10.20.30.2/16 2.0
192.168.1.2/24 1.0
192.168.1.2/24 2.0
192.168.1.2/24 1.0
192.168.1.1/24 1.0
192.168.1.2/24 -
- log_list : 各ログが要素の配列
- error_time : 故障期間(タイムアウトしたログの次のログの時刻 - タイムアウトしたログの時刻)
出力:故障期間はマイクロ秒を含むトータルの秒数です。
設問にない仕様:最後尾のログは次に ping の応答が返るまでの故障期間を算出できないので、文字列'-'で置き換えています。
question2.py
python question2.py testlog.log N
N は連続回数のパラメータ
N=3 で実行
10.20.30.1/16 0:00:01
10.20.30.1/16 -
192.168.1.2/24 0:00:02
- each_server_logs : キーがサーバーアドバイス、バリューがそのサーバーのログの配列になった辞書
- timeout_count : そのサーバーにおいて連続でタイムアウトした回数
設問にない仕様:サーバーごとに連続回数 N の判定を行っています。そのため出力はサーバーごとにソートされています。
設問2のコードを拡張
question3.py
python question3.py testlog.log N m t
N、m、t は設問の各パラメータ
N=3,m=3,t=1 で実行
10.20.30.1/16 0:00:01
10.20.30.1/16 -
10.20.30.2/16 1.5
10.20.30.2/16 3.0
10.20.30.2/16 2.6666666666666665
10.20.30.2/16 3.0
192.168.1.1/24 9.333333333333334
192.168.1.2/24 0:00:02
192.168.1.2/24 5.0
- last_m_list : あるログから見て、直近 m 回のログの応答時間が要素の配列(タイムアウト('-')したログは除く)
- return_time_avg : 直近 m 回のログの平均応答時間(last_m_list の値の合計 / last_m_list の length)
出力:サーバーアドレスと過負荷状態となっている期間(ミリ秒)を出力します。
設問にない仕様:過去 m 回の内にタイムアウト('-')が混ざっている場合はそれ以外の残りのログで計算します。(例:m=3 で、 1/3 がタイムアウトの場合は残り 2 つで平均応答時間を算出) なお、ping がタイムアウト('-')の場合は直近 m 回の平均応答時間は計算されません。(何も出力しません)
設問2のコードを拡張
question4.py
python question4.py testlog.log N
N は連続回数のパラメータ
10.20.30.1/16 0:00:01
10.20.30.1/16 0:00:02
10.20.30.2/16 0:00:02
192.168.1.2/24 0:00:01
192.168.1.1/24 0:00:01
- each_subnet_logs : キーがネットワーク部、バリューがそのサブネットのサーバーのログの配列になった辞書
- network_len : ネットワーク部の長さ
- network_area : ネットワーク部に該当するアドレス