コネヒト開発者ブログ

コネヒト開発者ブログ

監視の民主化に向けて「モニタリングツール多くない?」という話をしました

こんにちは、サーバーサイドやっております 金城 (@o0h_)です。
最近の癒やしは「幸せカナコの殺し屋生活」です。仕事でも趣味でも何でもいいと思いますが、「私は生きているんだな!」という気持ちを抱えて育んでいくのが大事だな、と改めて気付かされます。

sai-zen-sen.jp

Tl;DR

  1. モニタリングツール増えがち問題; システムが複雑なんだ、しゃーない
  2. 「多すぎるツール」が監視ビギナーのハードルを上げていないかな。下げたい・・・!
  3. 「なぜ複数のツールが必要なのか」の肌感を共有したい
  4. まずは「最初の1つ目」のツールを習得して、次第に使えるツールを増やしていくのが良いのではないか

前置き

「殺し屋」の話をしたので「監視」の話をしたいのですが、コネヒトでは継続的に「監視をもっとできるよーにしよーね!」という取り組みを進めて行っております。
それにはどうしても他人を1人でも多く「巻き込んでいく」部分が必要で、上長とも相談をしながら、対社内に向けての発信を持続的に行っています。

これまでに表明した内容・実施した内容についても過去に当ブログで述べています。 tech.connehito.com

tech.connehito.com

こうした一連の取り組みの狙いの1つには、もちろん「チーム全体の啓蒙・意識付け」というニュアンスも多々ありますが、具体的な形式知化やインプットを通じて最終的には以下の状態の実現を目的としています。

f:id:o0h:20190630203821p:plain

そのためには、スキルやナレッジ的な「できる」とマインド的な「できる」の両方が揃っている必要があります。 「障害対応をできる」「監視=問題検知をできる」ためには、状況を分析する力・理解が欠かせません。
その前提に立つと「ツールを使いこなそう」というのは必須なのですが、同時に厄介な問題もはらんでいるように感じます。

  1. 「見たこともないツール」に対して、どのようにキャッチアップしていいかわからない
    • 能力的な意味での「できない」問題
  2. 他人が障害対応している様子を見ても、名前も知らない&何のためかも分からないツールが多数出てきて、何を学べばいいのかわからない
    • 態度的な意味での「できない」問題

一点目に関しては、個別的なツールのハンズオン形式等でのインプットを行うことでフォローしています。
二点目に関しては、これらを緩和するために「なぜ監視ツールは多いのか」という話を改めて噛み砕き、意味付けを行いました。それが今回の内容となります。

モニタリングツール多くない?問題

おそらく、うまくやっても「数が増える」ものだと思っています。 これは何故か?というと、そもそも「監視しようとしている対象が複雑」だからだと思っています。

モニタリングツールの目的は、大きく分けて

  • アラート用: 大まかな状態(=ヤバそうさ)を知る
  • 調査用: 事細かに情報を提供・享受する

の2種に分かれるのではないでしょうか。
そして、我々が日々向き合っている「システム」というのは、そもそもが複雑なものです。
大小様々なコンポーネントが、相互に絡み合ってできています。

f:id:o0h:20190701213703p:plain
前回の勉強会で利用した資料より、「Webサービスってこんなに複雑」の図
すると、「観察箇所」が増えてきますので、「適切な情報を取り出す」ために「必要な種類が増える」のは自然な事だとも言えます。

・・・そうはいっても、何でもかんでも道具が氾濫してきては、それを触れるようにするだけでも大変な苦労です。
現場に導入すべきツールは、どのくらいが適切か?「入門監視」の言葉を引用します。

f:id:o0h:20190701213646p:plain

ひっくり返して言えば、「必要な情報にアクセスするために必要なら、必要」「それがなくても困らないものは冗長」ということになるのではないでしょうか。

導入しているツールの棚卸しをする

コネヒトでは、ママリに関するモニタリング・データトラッキング等の用途で、様々なツールが導入されています。
主目的はシステム監視ではないが「困ったときに役に立つ」くらいのものまで含めると、こんな一覧ができます*1

f:id:o0h:20190701214554p:plain

これらをすべて完全に理解し、全く別の目的で・・・「なにかしようと思ったときの絶対的な正解はコレ!」と使い分けていくのは、大変に難しいことです。
監視や障害対応に慣れていないメンバーからすると、この「なんかムッチャあるぞ」という事自体が、1つの嫌な壁にもなると思います。
「どのような目的のものか」「どのような立ち位置にあるのか」をイメージしやすくするだけでも、支援になるのではないか?と考えました。

f:id:o0h:20190701214501p:plain

このように「立ち位置」「分析観点」でざっくりとマッピングしてみました。
・・・我ながら、ものすごく強引で語弊があるなぁ〜と思います。
この図表の目的は、「正しさ」よりも「ツールって位置づけがあるのね」という体感を皆に得てもらう事にありました。
「得意分野」が違うツールを組み合わせることで、置かれている状況をより立体的に捉えることができる。そういう理解へ繋ぐための足がかりとして、「扱っている情報や、その内容の扱い方が違う」ということだけを訴えられれば、ひとまずOKです。

ツールは組み合わせて使うもの

入門監視では、監視を組むにあたって「アラートはユーザー視点での監視をしよう」ということを訴えていました。
これは、例えば「CPUの利用率がどのくらいか」という情報よりも「リクエストを送ってから画面表示が完了するまでに0.5秒遅い」のような、end-to-endで「困ったことになっていないか」を主軸にして動こうということになります。

例えば「Mixpanel」「Google Analytics」といった「ユーザー行動のトラッキング」というのは、極めて「ユーザー視点」に近いものと言えます。*2
これらのツールがどうして役に立つか?は、入門監視の第5章「ビジネスを監視する」を覗いてみてください。

さて、実際の現場では「ユーザーの投稿が減ったから、何かしないと!」という情報だけでは困るわけです。背景にある「なぜ」を迅速に正しく切り分けていく必要があります。
そのようなときに、Cloud WatchやDBレイヤーの監視ツールなどが役に立って来るわけです。

f:id:o0h:20190701215632p:plain

どうしても、複数のツールをうまく組み合わせて行かないと障害時の対応や情報収集は頓挫してしまいます。
「問題箇所の特定」は、経験値から来る嗅覚に頼ってドライブしていく部分も大いにあると思います。そのハンディを埋める=「経験の差」を埋めるために「複数のレイヤーのツールに馴染んでおく」というのは効果的なのではないか?というのが個人的な意見です。

総括: ツールたくさんあるけど頑張ろうね!

f:id:o0h:20190701220125p:plain

システムの「複雑」さに合わせて監視も「複雑」になっていくのは、ある程度は已むを得ない・・といった話もしました。
しかしながら、パラドックスのような言い方ですが、個々のツールの組み合わせが「複雑である」システムに対して「単純に・明瞭に」現状を分析することを後押しするのです。
必ずしも「全部のツールを抑える」といった必要は全く無いので、もし「監視ってちょっとわからないな〜」という人がいたら、まずは「1つ目のツール」と仲良くなってみてください。
すると、「何がわかって・何がわからないか」という事がわかってくるはずです。
そうやって一歩一歩踏み出していくことで、いつの間にか「いろんなツールを自然に使える」ようになっているのではないかな〜!と思います。 チーム内の熟練者が、メンバーの一歩目二歩目を後押ししてあげられると良いですよね!

幸せカナコの殺し屋生活 1 (星海社COMICS)

幸せカナコの殺し屋生活 1 (星海社COMICS)

*1:それでも一部ですが・・

*2:スライド中はCloudWatchを1次情報として思考を深めていますが、実際には、より「エンド」からのアラートが出来るのが理想だと思います