見出し画像

エラーを見逃す私たちという存在

機械は壊れ、人間はミスを犯す

普段スマホやパソコンで様々なサービスを使っていると忘れがちなこと — 「機械は壊れ、人間はミスを犯す。そして、ささいなエラーは見逃されがちだ。」ということだ。

画像1

あるシステムだが、猛烈にメッセージが出ていた。このシステムを管理していた誰もが他人ごとだと思い、どんどん出てくるメッセージも、メッセージを記録してどんどん大きくなるログファイルも無視していた。テキストファイルひとつで 1.4TBもあって、1,900万行のメッセージ。99.8%がおなじエラーメッセージという状況だった。エラーを記録すること自身がシステムの性能に影響するところまでになり、私の手元に大きなファイルたちがやってくることになったのだった。

このシステムを運用していた人たち、決して頭が悪いわけではない。
なぜこんな風に放置されたのか?

エラーを見逃す私たち

エラーがなぜ見逃されがちかと言えば、例えエラーであっても、おなじことが続くと、人間はなれてしまうからだ。また、人間は面倒くさがりだ。実害がなければよくメッセージを読みもせずにOKをタップするし、注意をうながすメッセージを無視する。そんなことが続くと、あまり注意を払わなくなってしまう。

このシステムの場合も、あるメッセージが何ヶ月もひょっとすると何年も出力されていた。

エラーとは「正常」「異常」と綺麗に切り分けられるわけではなく、メッセージには3種類ある。

(1) 正常時のみに観測されるメッセージ。
(2) 正常時にも異常時にも観測されるメッセージ。
(3) 異常時のみに観測されるメッセージ。

画像2

本来 3 だけ明快に見つけられるのであれば、エラーを見逃すことはないはずだ。問題は、「正常」を人間が決めることがあると言うことだ。

人間がメッセージを見た場合、正常か異常かを判断する。メッセージが障害を意味するものでも、時には「メンテナンス中だから」といった理由で「正常」と一時的に分類することがある。また、作業履歴と組み合わせて、「この時間帯にこのエラーが出るのは正常」とすることもある。

人間の脳は、無駄を省くのに長けている。おなじ刺激にはなれ、反応しなくなる。このため、あるメッセージがずっと正常に分類されつづけると、たとえ、字面が障害を意味するメッセージだとしても、正常として注意を払わなくなる。。古い言葉だが、「多くの人は、見たいと欲する現実しか見ていない」(ユリウス・カエサル)というのはシステムの運用管理にも当てはまるのだ。

「ダブルチェックします!」

「担当者の注意力不足でした。以降ダブルチェックを励行します!」というのは、もはやテンプレート感すらある対応策だ。異なる角度からの確認であれば、意味があるかもしれないが、エラーの見落としが「人間が無駄を省くという傾向」に起因する以上、担当者の慣れによる見落としはいかようにもしがたい。

クラウドという言葉が存在する以前から、大量のログから意味のある情報を引き出すことに苦労し、刻々と変化するシステムの構成や状況を勘案しながら、全体としてきちんと動いていると判断するのがシステムの運用担当者だ。クラウドの時代になり、随時生まれては消えるインスタンス、圧倒的に数が多くなる監視対象にその負荷は高くなるばかりだ。

「可観測性」

「大量のログや統計情報から意味のある情報を取り出す」には単なる監視(monitoring)のみではダメで、可観測性(observability)ということを考える必要がある。

・どのように観測された情報を発信するのか?
・どのように必要な情報だけ目立たせるのか?
・どのように大量の情報をさばくのか?

発生している事象が観測することが出来ないということは、発生していないことと等価である。まずは、管理/監視対象から必要な情報を発信させる必要がある。

次に必要な情報だけをどの様に目立たせるのか?何もかも一度に表示するのではなく、欲しい情報を欲しい粒度でみれるツールが必要である。ZFS Storage の Analytics も統計情報と言うことでは、これを目指したわけだが、例えば、syslog の情報に関しては、RFC3164の範囲をでておらず、受け取り側のツールに任されている。

現実の運用では、対象が多い場合に、どの様にデータを保管し、素早く目的のデータを参照できるようにするのかというもの大きな問題である。

この分野では、いくつものオープンソースのツールがある。例えば、Grafana, Loki, Prometheus といったツールたちである。Time Series Databaseという言葉をご覧になったことがある方もあるだろう。

一方で、ログ自身の解析と言うことでは、ログからシステムの状況を割り出す手法や異常値の発見で様々な手法が検討されている。

次回以降、もう少し具体的な手法やツールに触れられたらと思う。

この記事はここまでです。 最後まで読んでいただいてありがとうございます。 気に入っていただいたなら、スキを押していただいたり、 共有していただけるとうれしいです。 コメントや感想大歓迎です!