1000行を越えるようなテキストログを目検でチェックする毎日の作業があるとのことで、今回から当番メンバーに加わった。
やめてほしっ いや、エンジニアらしく解決していきたい。
当該サーバでしか確認できず、物理的に隔離されているため、チャットに飛ばすとかはできない。とりあえずPowerShellで軽くアプリでも作っていこう。
get-Host で 5.1以上であることは確認済み。
ログファイルは、次のように出力されている。
**スティンガードライブ \999.999.999.999\hoge のボリューム ラベルがありません。
ボリューム シリアル番号は DDDD-2233 です
\999.999.999.999\hoge\foo\bar のディレクトリ
2022/03/14 23:42 4,751,214,819 MON.ani
2022/03/11 22:39 19,785,568,256 FRI.ppk
2022/03/10 23:31 4,744,412,635 THU.ani
2022/03/09 23:34 4,737,405,976 WED.ani
2022/03/08 23:34 4,737,186,413 TUE.ani
10 個のファイル 38,756,050,207 バイト
0 個のディレクトリ 4,743,374,528,512 バイトの空き領域
・
これが1ブロックで、このような記述の塊がザっと100個くらい出てる。
チェックすることは、次のとおり。
①「**スティンガー」が各ブロックのキーで、ユニークである。先頭2文字は必ず**
②一番新しいファイル MON.ani が昨晩の日付で生成されていること。
③そのファイルのサイズが、前回比で ±100MB程度であること。
④前回比ってのは、多くの場合前日だけど拡張子が違う場合は比較対象にできず、前週の同じ曜日のデータと比較すること。
これまで何年もこれを目でやっていて、③に至っては明確な基準はなく”増えすぎてないか”というクソみたいな基準で確認していたらしいんだ。何を確認してたの?まあいい。
前置きが長くなった。とりあえずPowerShellアプリをVSCodeで開発できるよう環境を整えた。
(「powershell vscode」で検索すると公式ドキュメントが出てくるが、大抵はものすごくわかりづらくて、一般人がしゃべり口調で書いた紙芝居みたいな記事を見るとサクッとできる。この歴史をいつまで繰り返すのか。)
まずは、ファイルを検査して、**を探してブロックに分ける。
そのあとに出てくる最初の日時情報を最新ファイルと定義する。
次に出てくる情報を1世代前、次に出てくる情報を2世代前と定義する。
1ブロックの各世代を列に展開し、1行で表現していく。
ひとまずここまでで、随分と見やすいUIになった。
次に、前回世代との比較を実装していく。
これは小学生のときに習得した四則演算という技術を存分に活用していく。
最新ファイルから前回ファイルの差分を引き算で求めるんだ。
問題は、④の実装。このファイルに出力されていない、前週の同じ曜日のデータが必要。
毎日のチェックにおいて、一定期間のログをテキストファイルに出力しておくようにして、その情報との比較を実装することにする。(これだけは後日になりそうだ)
まぁ、業務の合間にやっておくよ。目検は二度と御免だから。