2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
Masahiro Hattori 氏:そういう条件があって、いいメトリックがとれたと。では、あとはアラートを設計、監視の設計です。そこまでで、ある程度理想論になってしまうんですが、判断の軸みたいなものをDatadogでは長らく言っています。
それが監視データを分類する考え方なんですけれども、この3つがありまして、左からWork Metrics、Resource Metrics、Eventsです。1つずつご説明します。
監視データでざっくりやって、それをアラート設計していくと、感覚的にどこが重要かというのももちろんありますが、その感覚的なところを補強できるような材料になれば幸いという感じです。
まずWork Metricsを、ドーナツ工場に例えて考えてみます。
工場で5、6個ずつ油から揚がっていって、どんどん砂糖のなかに投げていくとします。その時にドーナツが毎秒5個流れていくとするとそれはスループットで、そのなかの廃棄率とかがあったりするとSucsess、Errorレートになります。それについて、サービスそのものの状況を見るような指標がWork Metricsという感じです。
ですので、どちらかというとApplication Metrics寄りだったり、DBのいわゆるリクエストレートだったりレイテンシというところが、だいたいWork Metricsに当たるところなのかなと思います。
Performanceというのは、ドーナツでいうと毎秒5個揚げられるとか製品化できるとか、毎秒5個だったのが6個になったりですね。
Resource Metricsというのは、CPU使用率、メモリ使用率、ネットワーク利用率みたいなものがAvailability、稼働率やアップタイムみたいなところがResource Metricsになります。砂糖が今どれぐらいあって、どれぐらい使っているかみたいなところです。
最後はEventsです。
そのままドーナツの例でいくと、テレビで紹介されたとかCMが打たれたとか、National Doughnut Dayみたいな大きいイベントがあるのでめちゃくちゃはけるとか、システム上でいうCode ChangesやAlertsが発生しているとか、スケジュールメンテナンスが発生しているとかというのがここに当たります。
ここはいわゆるグラフ化するようなものとは違うんですけれども、メトリックの変化などを説明する材料になってくると思います。
そしてここがキモでして、そういったものをある程度仕分けたら、今度はそこから、各会社さんなりサービスのなかで、それをWork、Resources、Eventsというのを構造化していきます。
こんなにきれいにはいきませんが、例えばサービスのレスポンスやパフォーマンスという指標は、いくつかのDBのリソースに影響を受けていて、そのDBの1つというのはフェイルオーバーしたとかイベントがトップラインで今書いているようなところです。
ただリソースとして書いているDB自体も、DBとしての主要な指標は実はDBにとってはWork Metrics、DB自体の生産性を示すような指標だったりします。
そこに対して2段目、Work、Resources、Eventsと並んでいるのは、DBに対してDBのリソースであるディスクとかになっていくので、そこを構造化していって、どこが一番重要なのかを、できるだけことが起こる前に明らかにしていくことが必要です。
そういう作業までやると、ある程度同じようにアラート、例えばCPU使用率がサチると、それはそれで危ない状況にはなり得るんですけれども、本当に危ないところがどれなのか、全体の認識として共通化しやすいです。少し再帰的な構造みたいな感じなんですが、こういったところをやってもらいます。
こういったかたちでメトリック自体ボーダーにあると言ったあとにこんなことを言っているので、すごい作業になりそうなんですが、全体像としてこういったことを踏まえた上でアラート設計をやっていくと、オオカミ少年は減らせます。実はもう鳴っているだけでスルーしているような、ここでいうとトップじゃなくて最下層のWork、Resources、Eventsだったりすると思うんです。
そのあたりを共通認識としてどこに一番対応しないといけないかを当たりやすくするという感じになります。
これをもう少し実務的な話をすると、例えば平均復旧時間(MTTR)みたいなもののメトリックに対して考えます。
例えばMTTRというものがあったとすると、監視ツールとして前半の検知するまでの時間に労力が割かれがちなんですが、解決までの時間、トラブルシュートの時間もすごく重要で、この2つを足したところでサービスとして損失が生まれてくるのでこういう分け方をしますが、まずは検知してアラートを出すというところになるのかなと。
さっきのかたちに戻って、あの構造のなかでどこに問題が発生した時に電話するのかと。
アメリカでは電話のことをページャーと言ったりします。じゃあどういう時に電話を鳴らすのかなんですけれども、左側が症状に対して電話しましょうと。おもにはWork Metricsからわかる、明らかな問題の症状に対して電話しましょう。
右側は分析や調査なんですが、Work MetricsとかResource MetricsとかEventsというのは調査用のデータとして残しておくんですけれども、電話する対象やアラートするものではないと。
いったんここでは言い切る感じなんですが、割と強い意志で分けていくという感じになります。ある程度理想的な部分もあります。
ただ、お子さんをおもちの方だとわかると思いますが、1歳ぐらいの子どもだとけっこうすぐに熱が出たりして、38度ぐらいとかになるんですけれども、お医者さんに行くと、機嫌がよかったらほっといて、みたいなことがよくあります。
大人の場合は悪寒が発生したりすると、これは病院に行かないとまずいとすぐにわかりますが、子どもだとそれがわからないので機嫌が悪くなるという明らかな症状が発生するんですけれども、どちらかというと悪寒が発生する、子どもだったら機嫌が悪くなるというのが左側です。それはすぐに病院に行きましょうと。
右側にあるのは、38度を超えたらすぐに病院に行ったり救急車を呼ぶかといったらそうではないと思うので、本当に今すぐ処置しなければいけないものは何なのか判断を分けましょうと。
ただ、それはかなり理想的な話になりがちです。形式的に理想的な話をしてしまうところがあるんですけれども、もちろんWork Metricsでアラートをするのがわかったら、トップレベルでアラートをしましょう。
でもそこのResource MetricsはやはりどこかのResource Metricsなので、それもアラートしないといけません。
結果的にこれを書いたとしても、全部アラートしないといけないというのが当然の疑問なので、そこに対して、Datadogには誰にアラートするのかいう考え方があります。
Leadershipの人たちの場合は、全社的な緊急事態ですよね。サービスでトップレベルでパフォーマンスが落ちていたら、もうサービスダウンとかだと全員がそれを知って、エンジニアだけではなくて広報とかも動くでしょうし、お客さんの先に行く営業部隊も動くでしょう。
1段階下の部分であれば開発者とか。
その下だとデータベースチームとか、
最後は運用チーム、SREというところ。
ですので、そういうかたちでどこまで、誰にアラートするのかを、ある程度切り分けるための指標になるのがこの構造化の話です。
このように、これからの時代のメトリックの仕組みも考えつつ、それで得られたメトリックをさらに構造的に考えていって、よりオオカミ少年的なアラートをなくしましょうという話でございます。
ここまでアラートがスマートに決まると、あとは解決までの時間です。
原因分析とか調査、修復というところになるんですけれども、修復のところはすごく個別的な話になるので、いい加減こういうアラートはやめましょう。
とりあえずアラートが来たことだけはわかるアラートみたいな。DBが壊れたということだけがわかって、実際どうしようというのはいろいろ調べないとわからないと。
そこに対して、Datadogではアクショナブルアラートと言ったりしますが、アクション可能なアラートをつくりましょう。
アラートのなかにこれを書く意味なんですが、何が起こったのか、なぜそれが重要なのか、問題箇所を確認して応急手当てがあるとか、分析する時はこれを使いましょうとか、最終的に連絡先とか手順書みたいなところを、こんな感じで書きます。
そうすると、もらったほうの動きとしては全然違いますよね。「コーポレートサイトのレスポンスが3秒を超えています」というのがアラートのタイトルなんですけれども、実際は5秒以上かかっています。
「5秒経つとお客さまが離脱しますよ」という実際の行動まで書いていてわかりやすい。そして直し方として、キャパシティを増やすならダッシュボードでこれを確認してくださいとか、jenkinsジョブを走らせることでリソースを増やせますよとか、もっと分析するんだったらこういうwikiを見て、そのフローを見てくださいとか、行き詰ったら私まで電話してくださいね、みたいな感じでSREのマネージャーさんの電話番号を書くかもしれませんが、そういう使い方をします。
このようにうまく構造的にモニタリングを扱うというかたちで、これから爆発的に複雑化するシステムを、単純にAzure Monitorで大丈夫です、Zabbixと連携させてやりますではなく、もちろんPrometheusでやっていくのでも構わないので、考え方をごろっと変えて、複雑化必須の前提でモニタリングを再考しましょう。
あと3分だけあるので、少しだけその複雑化の1つの解として、タグの何がうれしいのかというところを少しデモします。例えばPrometheusでも同じ考え方なのでいいんですけれども、Datadogならこんな感じというのをお見せします。3分なので超短縮版で。
これはDatadogのホストマップという一番有名な可視化ツールなんですが、一つひとつの六角形がサーバーでして、現在7,000サーバー、ほとんどスポットなんですが、赤いほどCPU使用率が高いです。
タグは何がいいかという話なんですけれども、例えばここでenv:stagingと入れると、7,000台ぐらいから1,000台ぐらいまでステージング環境に絞り込みます。
さらにここでroleというタグを入れると、役割ごとにタグでサーバーを絞り込むと。
今7,000台からタグ2つで50台ぐらいまで絞り込んでいるんです。今までの監視ツールですと、どうしてもサーバー単位で考えるので、サーバーごとのグループとか役割とかサービスという2、3軸ぐらいでしか切り口が持てないんですけれども、とくに流動的なインフラになったり、コンテナ化するとそれが難しくなりますよね。
なので、Datadogでは、Prometheusも確かそうですが、サーバー登録という作業はありません。
Azureでもそうですけれども、クラウドの属性情報を自動的に引っ張ってきてタグにしてしまいます。Chefのroleとかもそうです。
あるいは自分でタグを入れ込むということももちろんできるんですけれども、そういったものを使って柔軟に対象を見ると。
もちろんサーバーだけではなくて、今度はコンテナです。
一つひとつの四角がコンテナです。
例えばここで、タグを検索する画面なんですけれども、kubeと入れるとdeamon_setとかnamespaceとか。
namespaceはあまり数が多くならないと思うので、例えばdeploymentとか入れると、deploymentの単位ごとにコンテナを分けてみますとかという見方です。
仮に例えばこれで、nginx- deploymentでhostと入れると、一応そのサーバーごとに分けて見れたりもします。
もちろんその理由としては、KubernetesとかDockerコンテナの属性情報を、ひたすらタグとして盛り込んでいます。こういったものを使ってもいいですし、エージェントで指定するオリジナルのカスタムタグとかも使って、見たい粒度で見たい場所をバシッととると。
それがタグというメタデータを使う以上は、別にそのサーバーが流動的になろうがオーケストレータでばんばん上げたり下げたりしようが、タグという範囲でくくられているのであれば、自動的にアラートにするし可視化にするし、管理性が全然違います。よいメトリックの3番目ですけれども、タグでフィルタするみたいなところが非常に効いてくるということでご紹介させていただきました。
アラートもこのタグでパチパチと当てていくだけなので、慣れてしまえばある程度簡単にできるところがメリットなんですけれども、このツールならではというところをご紹介させていただきました。
以上になります。ご清聴ありがとうございました。
(会場拍手)
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05