タイムリー開発を目指し、開発部門もシステムの稼働状況を常に把握する現場がある。障害に早く気付いて短時間で解決することで、本来の開発の時間を確保している。障害解決に役立つ情報を素早く収集する仕組みはツールで作れる。
オールアバウト
重大エラーの見逃しを防止
Fluentd、Elasticsearch、Kibana
システム障害の発生時、いかに早く気付けるか――。障害を短時間で解決するには、第一に必要なポイントだ。対策として、メンバー全員にメールでアラートを通知している現場は多い。しかし、軽微なエラーまで含めてメールを送り、件数が多くなれば、重要なエラーの通知を見落としやすくなる。どんなエラーが多いのかといった傾向も把握しにくい。
オールアバウトの寺門伸悟氏(システム部 開発4G マネジャー)らのチームは、DevOpsツールでこの問題を解決した。特に発生頻度が高いエラーを抽出し、ITチームで確実に共有・分析する仕組みを、2014年1月に作り上げた。寺門氏は「運用担当者だけでなく、開発担当者も重要なエラーを見逃さないようにし、障害の解決を早めるため」と狙いを語る。
収集・集計・視覚化ツールを活用
この仕組みは、OSSのログ収集ツール、集計ツール、視覚化ツールを組み合わせたものだ(図1)。
通常時、複数のアプリケーションサーバーのエラーログを8Mバイトごと、または1分置きに収集する。この処理には、ログ収集ツール「Fluentd」を使っている。
続いて、Fluentdで収集したログを、プラグインを介してオランダのElasticsearchのログ集計ツール「Elasticsearch」と、視覚化ツール「Kibana」を搭載するサーバーに転送する。これらのツールで、GUIを使ってログを分析できるようにしている。この仕組みを活用することで、「同じメッセージを含むログを収集し、その件数を短時間で集計できる」(オールアバウト システム部 システムG 大原和人氏)。
これにより、エラー発生件数の推移などを確認しながら、注意すべきエラーに対してサマリーを付けてチームメンバーにメールを送る、といった対応が取りやすい。また、緊急度、頻度とも低いエラーについては、メンバーには当面の間は通知しないという手が打てる。アラートのメールの数を絞り込めるようになり、重要なエラーの通知を見逃しにくくなった。
寺門氏らのチームはこの仕組みを整備する以前も、性能監視ツールを使ってエラーが発生するたびに開発担当者にメールで通知し、エラーログを分析できるようにしていた。ただし、エラーの重要度を区別せずにすべて通知していたため、多いときに1日当たり数百通に上り、どのエラーが重要なのかを識別しにくかった。結果、運用担当者が手作業で重要なエラーを通知して初めて、ログの分析に取りかかるケースが大半だったという。