見出し画像

TWSNMP FC:ポーリングログをSTL分析する機能を組み込んだ

昨日の夜、猫に「2時とか3時はやめて、せめて4時に起こして」とお願いしておいたので今朝は4時ピッタリに起こしてくれました。梅雨で猫は毎日大好きな雨水を舐めています。
さて、昨日時間切れになったポーリングログをSTL分析する機能の続きです。
昨日、時間切れになった理由は、データの集計間隔やTWSNMP FCやポーリング対象の機器を停止していたりしてログがない期間のデータをどうするかという問題に悩んでいたからです。STLで分析するためには一定間隔で集計したデータが必要です。とりあえず間隔は1時間単位で集計、停止期間は0で埋める方法で作りましたが処理がおかしくて0と正しい値を繰り返すようなデータになっていました。この問題を修正してもなんとなくSTL分析でノイズ成分が異常に大きいおかしな結果になりました。ポーリングしていない期間のデータを0にするのがよくないようでした。そこでポーリングしていない期間のデータを補完する方法を調べました。「時系列データに関する補間手法」

といわかりやすい説明を見つけました。いろいろ手法があるようです。0で埋めるのは固定値補間ということで間違ってはいなかったようです。線形とかスプライン補間は作るのが面倒なので最近傍の値を使った補間のような方法を試してみました。かなり改善されました。
STL分析できたので次に結果をグラフ表示する機能を作りました。

のサンプルを参考にエリアチャートをスタック(積み重ねる)グラフにしました。

画像1

のような感じです。赤い矢印はグラフを画像ファイルに保存するボタンです。サンプルコードを見ていたら、

    toolbox: {
     feature: {
       saveAsImage: {},
     },
   },

だけグラフの設定に追加すれば表示できることがわかったので付けてみました。うまく機能するので他のグラフでも対応しようと思っています。

なかなか使えそうです。
例えば、

画像2

のようなPINGの応答時間のグラフをみても、時々、応答時間が遅い時があるぐらいにしか見えません。凡例のResidをクリックして非表示にすると

画像3

のようなグラフになります。Residは残差と説明に書いてありましたが、突発的なノイズのようなものだと思います。これを除くとSeasonal(季節的、周期的)な要素とTrend(傾向)が残ります。そうすると何となく赤い矢印の時期から応答時間が短くなったような傾向が見えてきます。
そう言えばApple TV をネットワーク接続を変更したのがこの時期だったように思います。
このグラフを動画でみると、

画像4

のような感じです。
昨日と今日の開発は、

です。
明日は、FFTによる周期性の分析機能をつけようと思っています。
明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。