記録と計測
追えるだけの項目を決める
障害のとき、あとから追えるかどうかはログで決まります。
ただし全部書けばよいわけではありません。書きすぎたログは、量が多すぎて読めず、保存の費用もかかります。
1行に何を入れるかを先に決めます。席の予約サービスなら、要求の識別子・どの道筋か・結果・かかった時間・誰か、の5つです。
あとから絞れません。書いた時点で保存され、消すのは別の作業になります。
メールアドレスやカード番号を一度書けば、そのログを見られる人全員が見られます。「あとで消す」は、たいてい流出のあとになります。
個人情報は入り口で落とす
入れてよい項目を決めたら、それ以外は入れないという形にします。
危ないものを列挙して除くやり方だと、新しい項目が増えたときに素通りします。
Python
# 入れてよい5つだけを残す
# 知らない項目は落とすIDだけでは誰か分かりません。名前やメールと結び付けられる表は、別の場所にあります。
その表を見られる人と、ログを見られる人を分けておけば、ログ単体からは個人にたどり着けません。分けておくことで、IDを残せます。
演習
出来事の辞書を受け取り、入れてよい項目だけのログ1行と、落とした項目を返します。
要件
- 入れてよい項目は request_id / route / status / ms / user_id の5つ。ALLOWED に並んでいる
- line には、event にある項目だけを ALLOWED の並び順で入れる。event に無い項目は入れない
- dropped には、入れてよい項目に無かった名前を並べる。並びは名前の昇順
ヒント
編集 ゆめさく編集部