A社の監視システムでは、監視対象となる複数台のサーバに対して一定間隔でping応答確認を行っており、
確認結果は以下に示すカンマ区切りの形式で1行ずつ監視ログファイルに追記される。
<確認日時>,<サーバアドレス>,<応答結果>
確認日時は、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
設問1
監視ログファイルを読み込み、故障状態のサーバアドレスとそのサーバの故障期間を出力するプログラムを作成せよ。
出力フォーマットは任意でよい。
なお、pingがタイムアウトした場合を故障とみなし、最初にタイムアウトしたときから、次にpingの応答が返るまでを故障期間とする。
設問2
ネットワークの状態によっては、一時的にpingがタイムアウトしても、一定期間するとpingの応答が復活することがあり、
そのような場合はサーバの故障とみなさないようにしたい。
N回以上連続してタイムアウトした場合にのみ故障とみなすように、設問1のプログラムを拡張せよ。
Nはプログラムのパラメータとして与えられるようにすること。
設問3
サーバが返すpingの応答時間が長くなる場合、サーバが過負荷状態になっていると考えられる。
そこで、直近m回の平均応答時間がtミリ秒を超えた場合は、サーバが過負荷状態になっているとみなそう。
設問2のプログラムを拡張して、各サーバの過負荷状態となっている期間を出力できるようにせよ。mとtはプログラムのパラメータとして与えられるようにすること。
設問4
ネットワーク経路にあるスイッチに障害が発生した場合、そのスイッチの配下にあるサーバの応答がすべてタイムアウトすると想定される。
そこで、あるサブネット内のサーバが全て故障(ping応答がすべてN回以上連続でタイムアウト)している場合は、
そのサブネット(のスイッチ)の故障とみなそう。
設問2または3のプログラムを拡張して、各サブネット毎にネットワークの故障期間を出力できるようにせよ。
pythonで実装できる方、至急教えてください。