Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[SRE NEXT 2022]KaaS桶狭間の戦い 〜Yahoo! JAPANのSLI/SLOを用いた統合監視〜

667ad57b416187cb22589158805603b4?s=47 srenext
May 21, 2022

[SRE NEXT 2022]KaaS桶狭間の戦い 〜Yahoo! JAPANのSLI/SLOを用いた統合監視〜

SRE NEXT 2022
https://sre-next.dev/2022/

[Speaker]
ヤフー株式会社: 中村 昭太

[Description]
現在ヤフーのKubernetes as a Service(以下KaaS)では1000を超えるKubenetesクラスタを取り扱っており、Kubernetesクラスタの利用者が円滑に開発を行えるように、LoadBalancerの機能や社内の他プラットフォームとの連携機能といったクラスタのコアとなる機能をたった25名ほどのメンバーが管理と運用をしています。
少数のメンバーであろうと、Kubernetes上で障害が起きた時にプラットフォームを運用する側としては、何が?いつから?どの影響範囲で?を即座に判断できなければなりません。
この度、我々KaaS運用チームは、この膨大なクラスタが全部正常稼働しているかを即座に判断できる監視システムを作りました。SREの重要な概念であるSLI/SLOを武器に用いれば、43万ものコンテナを動かす1000を超えるKubernetesクラスタの軍勢に、たった25名で立ち向えるということを紹介いたします。

667ad57b416187cb22589158805603b4?s=128

srenext

May 21, 2022
Tweet

More Decks by srenext

Other Decks in Technology

Transcript

  1. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. ©2022

    Yahoo Japan Corporation All rights reserved. ~Yahoo! JAPANのSLI/SLOを⽤いた統合監視~ KaaS桶狭間の戦い ヤフー株式会社 システム統括本部 中村 昭太
  2. ©2022 Yahoo Japan Corporation All rights reserved. ヤフー株式会社 システム統括本部 •

    2019年新卒⼊社 • KaaS運⽤チームに配属されて3年⽬ • 運⽤上のイケてないとこを解消していくのが好き 2 中村 昭太
  3. ©2022 Yahoo Japan Corporation All rights reserved. このセッションについて はじめに、ヤフーのKubernetes as

    a Service (以下KaaS) をご紹介し、少数のメン バーで膨⼤な数のKubernetesの機能の信頼性を担保する上で発⽣した課題について お話しします。 次に、その課題を解決するために構築したSLI/SLOの計測・監視システムについて と、SLI/SLOを活⽤し始めたことで新たに⽣じた課題への対処⽅法を共有します。 3
  4. ©2022 Yahoo Japan Corporation All rights reserved. アジェンダ 1. ヤフーのKaaSについて

    2. KaaSの運⽤における課題 3. SLI/SLOの計測・監視を活⽤した運⽤ 4. SLI/SLOを活⽤し始めたことで新たに⽣じた課題 5. まとめと今後の展望 4
  5. ©2022 Yahoo Japan Corporation All rights reserved. アジェンダ 1. ヤフーのKaaSについて

    2. KaaSの運⽤における課題 3. SLI/SLOの計測・監視を活⽤した運⽤ 4. SLI/SLOを活⽤し始めたことで新たに⽣じた課題 5. まとめと今後の展望 5
  6. ©2022 Yahoo Japan Corporation All rights reserved. ヤフーのKaaS 1.ヤフーのKaaSについて 6

    • Z Labで開発されたKaaSソフトウェアを、ヤフーのKaaSチームが運⽤ • ヤフーのサービス開発チームに、Kubernetesクラスタを提供 Ϡϑʔ ,BB4ӡ༻νʔϜ 43&$3& Ϡϑʔ αʔϏε։ൃνʔϜ
  7. ©2022 Yahoo Japan Corporation All rights reserved. Kubernetesクラスタの利⽤状況の遷移 1.ヤフーのKaaSについて 7

    $MVTUFST $MVTUFST  $MVTUFST  $MVTUFST  $MVTUFST      • Kubernetesクラスタ数: 1000+ • Node(VM)数: 33000+ • コンテナ数: 550000+ • 利⽤チーム数: 220+  $MVTUFST 
  8. ©2022 Yahoo Japan Corporation All rights reserved. KaaS運⽤チームの業務の概要 1.ヤフーのKaaSについて 8

    Ϡϑʔ ,BB4ӡ༻νʔϜ ਺໊ ,VCFSOFUFT $MVTUFS "11σϓϩΠ Ϡϑʔ αʔϏε։ൃ νʔϜ ,BB4σϓϩΠ ,T$MVTUFSσϓϩΠ ΫϥελΞυΦϯσϓϩΠ ,T$MVTUFS؂ࢹ ,TόʔδϣϯΞοϓ ໰͍߹ΘͤରԠ ໰୊ௐࠪ ,VCFSOFUFT $MVTUFS ,VCFSOFUFT $MVTUFS
  9. ©2022 Yahoo Japan Corporation All rights reserved. KaaSの運⽤や、これまで直⾯してきた課題と解決法について詳細は… 1.ヤフーのKaaSについて 9

    IUUQTXXXTMJEFTIBSFOFUUFDICMPHZBIPPLVCFSOFUFT BTBTFSWJDFQSPEVDUJPOZKUDJOTIJCVZBBZKUD  IUUQTXXXTMJEFTIBSFOFUUFDICMPHZBIPPLTKQ ಈը൛IUUQTXXXZPVUVCFDPNXBUDI WXC",F%;:
  10. ©2022 Yahoo Japan Corporation All rights reserved. 10 今回は 「ヤフーのKaaS運⽤チームが各種機能の信頼性を担保できているのか︖」

    という点についてフォーカスします
  11. ©2022 Yahoo Japan Corporation All rights reserved. アジェンダ 1. ヤフーのKaaSについて

    2. KaaSの運⽤における課題 3. SLI/SLOの計測・監視を活⽤した運⽤ 4. SLI/SLOを活⽤し始めたことで新たに⽣じた課題 5. まとめと今後の展望 11
  12. ©2022 Yahoo Japan Corporation All rights reserved. 信頼性とは… 1.ヤフーのKaaSについて 12

    “[システムが]求められる機能を、定められた条件の下で、定められた期間 にわたり、障害を起こすことなく実⾏する確率” 0DP10$POOPSBOE",MFZOFS ʮ1SBDUJDBM3FMJBCJMJUZ&OHJOFFSJOHʯ UIFEJUJPO8JMFZ  
  13. ©2022 Yahoo Japan Corporation All rights reserved. これまでの監視 2.KaaSの運⽤における課題 13

    ͋ʔ͜ͷίϯςφ͕ མͪͯΔͳΒɺ LVCFDUMͰ ૢ࡞Ͱ͖ͳ͍ΑͶ ೝՄγεςϜ ࿈ܞ༻ίϯςφ "MFSU ,BB4ӡ༻νʔϜ
  14. ©2022 Yahoo Japan Corporation All rights reserved. 監視の課題1 – 機能が正常かは部分的な監視のみでは不⼗分である

    2.KaaSの運⽤における課題 14 ΞϥʔτඈΜͰ͖ͯͳ͍ʂ ؾ෇͚ͳ͔ͬͨʜ ೝՄγεςϜ ࿈ܞ༻ίϯςφ αʔϏε։ൃνʔϜ LVCFDUM࢖͑ͳ͍Μ Ͱ͚͢Ͳʁ • 原因: kube-apiserverの不調, NW, マシンリソース, 認可システムDown, etc… ✨ ✨ ,BB4ӡ༻νʔϜ
  15. ©2022 Yahoo Japan Corporation All rights reserved. 監視の課題1 – 機能が正常かは部分的な監視のみでは不⼗分である

    2.KaaSの運⽤における課題 15 Ξϥʔτى͖ͯΔ͚Ͳ ͜ΕͰԿͷػೳ͕࢖͑ ͳ͘ͳΔΜͩʜ ,BB4ӡ༻νʔϜ ೝՄγεςϜ ࿈ܞ༻ίϯςφ "MFSU • kubectlを使えない。本当にそれだけ…︖
  16. ©2022 Yahoo Japan Corporation All rights reserved. 監視の課題2 – 具体的な影響範囲・MTTR(平均修復時間)の特定が難しい

    2.KaaSの運⽤における課題 16 ͍͔ͭΒෆௐͩͬͨΜͩʜ ͲͷΫϥελͰ໰୊͕ൃੜ ͍ͯ͠ΔΜͩʜ αʔϏε։ൃνʔϜ ͏͕ͪ࢖͍ͬͯΔ Ϋϥελ͸Өڹ ͋Γ·͔͢ʁ 🔥 🔥 ,BB4ӡ༻νʔϜ
  17. ©2022 Yahoo Japan Corporation All rights reserved. 監視の課題2 – 具体的な影響範囲・MTTR(平均修復時間)の特定が難しい

    2.KaaSの運⽤における課題 17 • 障害対応後、再発防⽌のためにポストモーテムを作成する • 影響範囲・MTTRを特定できないと、具体的なダメージコントロールの改善策を打ち 出せない ো֐ൃੜ࣌ؒ ো֐Өڹൣғ ΑΓ୹͘ ΑΓڱ͘
  18. ©2022 Yahoo Japan Corporation All rights reserved. 監視の課題3 – 多発するアラートの対応にコストがかかる

    2.KaaSの運⽤における課題 18 ,BB4ӡ༻νʔϜ "MFSU "MFSU "MFSU • 1000クラスタもあればアラートの数も… 🔥 🔥 🔥
  19. ©2022 Yahoo Japan Corporation All rights reserved. どうやって監視の課題を解決するのか︖ 2.KaaSの運⽤における課題 19

    「機能が正常かは部分的な監視のみでは不⼗分である」 「具体的な影響範囲・MTTRの特定が難しい」 ֤,VCFSOFUFTΫϥελͰ4-*Λܭଌ͠ɺ ू໿ͯ͠4-0ͷҧ൓Λ؂ࢹͰ͖Ε͹Αͦ͞͏ʂ 「多発するアラートの対応にコストがかかる」
  20. ©2022 Yahoo Japan Corporation All rights reserved. アジェンダ 1. ヤフーのKaaSについて

    2. KaaSの運⽤における課題 3. SLI/SLOの計測・監視を活⽤した運⽤ 4. SLI/SLOを活⽤し始めたことで新たに⽣じた課題 5. まとめと今後の展望 20
  21. ©2022 Yahoo Japan Corporation All rights reserved. SLI (Service Level

    Indicator) とは︖ 3.SLI/SLOの計測・監視を活⽤した運⽤ 21 その機能が正常に動作するのかを測定したもの • エラー率、レイテンシなどをメトリクスとして扱う • 従来の監視と違い「機能の⼀部分」ではなく「機能(UX)⾃体」を⾒ている
  22. ©2022 Yahoo Japan Corporation All rights reserved. SLO (Service Level

    Objective) とは︖ 3.SLI/SLOの計測・監視を活⽤した運⽤ 22 サービスレベルの⽬標値。特定の期間で期待された指標 • SLOを下回る → サービスレベルを維持できてない。障害 • KaaS運⽤チームでは1週間で設定 • 統合監視した時のサンプル数が多すぎない • 1週間単位での振り返りがしやすい
  23. ©2022 Yahoo Japan Corporation All rights reserved. ヤフーのKaaSにおけるSLOの定義の例 3.SLI/SLOの計測・監視を活⽤した運⽤ 23

    機能 SLO アプリケーションが動作できる 99.99% kubectlの操作が⾏える 99.5% アプリケーションのログを転送できる 99.5% 外部ストレージで永続ボリュームを 作成・削除できる 99% 外部ストレージで永続ボリュームの 読み込み・書き込みができる 99.9%
  24. ©2022 Yahoo Japan Corporation All rights reserved. SLI/SLOを計測・統合監視することでの課題の解決 3.SLI/SLOの計測・監視を活⽤した運⽤ 24

    「機能が正常かは部分的な監視のみでは不⼗分である」 • 計測対象の機能のどこか⼀部分が壊れたらサービスレベルは低下をするため、 何の機能が正常か異常かの判断が即座に可能 「具体的な影響範囲・MTTRの特定が難しい」 • SLIを集約して統合的に監視できれば、影響範囲やMTTRが明確にわかる • ⻑期で運⽤すればMTTF(平均故障時間)もわかる 「多発するアラートの対応にコストがかかる」 • アラートを機能ごとにまとめ、アラート設定でSLOを閾値を利⽤可能
  25. ©2022 Yahoo Japan Corporation All rights reserved. SLI/SLOを計測・統合監視することでの課題の解決 3.SLI/SLOの計測・監視を活⽤した運⽤ 25

    「機能が正常かは部分的な監視のみでは不⼗分である」 • 計測対象の機能のどこか⼀部分が壊れたらサービスレベルは低下をするため、 何の機能が正常か異常かの判断が即座に可能 「具体的な影響範囲・MTTRの特定が難しい」 • SLIを集約して統合的に監視できれば、影響範囲やMTTRが明確にわかる • ⻑期で運⽤すればMTTF(平均故障時間)もわかる 「多発するアラートの対応にコストがかかる」 • アラートを機能ごとにまとめ、アラート設定でSLOを閾値を利⽤可能 ۩ମతʹͲ͏΍ͬͯ΍Δͷʁ
  26. ©2022 Yahoo Japan Corporation All rights reserved. SLIの測定 - Cloudprober

    3.SLI/SLOの計測・監視を活⽤した運⽤ 26 • Google謹製のOSS、実装はGo • 定期的にプローブを実⾏し、 特定の操作が 期待通りに実⾏できるかを計測できる • 実⾏回数、成功回数、レイテンシなどをメトリクス として出⼒する IUUQTHJUIVCDPNDMPVEQSPCFSDMPVEQSPCFS
  27. ©2022 Yahoo Japan Corporation All rights reserved. Cloudprober の external

    probe 3.SLI/SLOの計測・監視を活⽤した運⽤ 27 KaaSで提供する機能について実⾏させれば SLIを測定できる 外部のプログラムを定期実⾏し、その結果をメトリクスとして出⼒する
  28. ©2022 Yahoo Japan Corporation All rights reserved. external probe によるSLI測定の実践例

    3.SLI/SLOの計測・監視を活⽤した運⽤ 28 「KaaS 利⽤者は、外部ストレージで永続ボリュームを作成・削除できる」 下記の⼀連の動作を定期実⾏させる • kubectl applyでPersistentVolumeを作成 • kubectl deleteでPersistentVolumeを削除
  29. ©2022 Yahoo Japan Corporation All rights reserved. external probe によるSLI測定の実践例

    3.SLI/SLOの計測・監視を活⽤した運⽤ 29 「KaaS 利⽤者は、外部ストレージで永続ボリュームを作成・削除できる」 $MPVEQSPCFS • 各Kubernetesクラスタで実⾏ • メトリクスとして出した結果を 同クラスタのPrometheusが取得 17 17 FYUFSOBM@QSPCF
  30. ©2022 Yahoo Japan Corporation All rights reserved. SLI/SLOの統合監視 - Prometheusによるfederation

    3.SLI/SLOの計測・監視を活⽤した運⽤ 30 ,BB4؀ڥ FBTU ,BB4ӡ༻νʔϜ༻,VCFSFOUFT $MPVEQSPCFS 4-*ͷϝτϦΫε ͷΈू໿ ֤छϝτϦΫεू໿ FYQPSUFS ɾ ɾ ɾ ,BB4؀ڥ XFTU $MPVEQSPCFS FYQPSUFS ɾ ɾ ɾ  $MVTUFST
  31. ©2022 Yahoo Japan Corporation All rights reserved. 信頼性を担保していくための仕組み - SLI/SLOを使ったアラーティング

    3.SLI/SLOの計測・監視を活⽤した運⽤ 31 Error Budget と Burn Rate • Error BudgetはSLOに基づき許容する損失可能な信頼性 • Burn RateはError Budgetを消費する速度 #VSO3BUF "MFSU
  32. ©2022 Yahoo Japan Corporation All rights reserved. 信頼性を担保していくための仕組み - SLI/SLOを使ったアラーティング

    3.SLI/SLOの計測・監視を活⽤した運⽤ 32 Multiple Burn Rate で複数アラートルールを設定する • 複数の期間におけるBurn Rateの⾼まりを検知し、アラートを出す • Error Budgetを急激に消費する場合とゆるやかに消費する場合を検知し、それぞれ の場合で対応⽅法を決められる (PPHMF 4JUF3FMJBCJMJUZ&OHJOFFSJOH IUUQTTSFHPPHMFXPSLCPPLBMFSUJOHPOTMPT
  33. ©2022 Yahoo Japan Corporation All rights reserved. 信頼性を担保していくための仕組み - SLI/SLOを使ったアラーティング

    3.SLI/SLOの計測・監視を活⽤した運⽤ 33 メリット • 閾値としてSLOを扱え、コントロールがしやすい • 機能についての異常を検知でき、MTTD(平均検出時間)の削減が可能
  34. ©2022 Yahoo Japan Corporation All rights reserved. 信頼性を担保していくための仕組み - SLI/SLO統合監視⽤ダッシュボード

    3.SLI/SLOの計測・監視を活⽤した運⽤ 34 メリット • 1ダッシュボードを⾒るだけで全Kubernetesクラスタの各機能が正常かがわかる • 障害時の影響範囲やMTTRが明らかにわかる
  35. ©2022 Yahoo Japan Corporation All rights reserved. SLI/SLOの監視システムを活⽤した運⽤ 3.SLI/SLOの計測・監視を活⽤した運⽤ 35

    SLI/SLOを使ったアラーティング •アラートが発⽣したらSeverityに応じて対応 SLI/SLO統合監視⽤ダッシュボード • 毎朝チームで確認 • リリース後や、新規にKubernetesクラスタを提供したときに確認 • 障害が発⽣したときの影響の調査
  36. ©2022 Yahoo Japan Corporation All rights reserved. SLI/SLOの監視システムを活⽤することで改善したこと 3.SLI/SLOの計測・監視を活⽤した運⽤ 36

    従来の監視の3つの課題を解決するだけでなく、付加価値も⽣まれた • リリース後・クラスタ作成後のQuality Assurenceにでき、⼿動での確認⼯数を削減できる • マネージャー層の⽅々が、プロダクトの品質を保てているのかを確認できるようになった
  37. ©2022 Yahoo Japan Corporation All rights reserved. アジェンダ 1. ヤフーのKaaSについて

    2. KaaSの運⽤における課題 3. SLI/SLOの計測・監視を活⽤した運⽤ 4. SLI/SLOを活⽤し始めたことで新たに⽣じた課題 5. まとめと今後の展望 37
  38. ©2022 Yahoo Japan Corporation All rights reserved. 課題1 – 異常は起きていないのに低下したサービスレベルがノイズになる

    4.SLI/SLOを活⽤し始めたことで新たに⽣じた課題 38 • 特定の機能が動かないように特別な設定がされているKubernetesクラスタでは、 SLIの計測が常に失敗し続けるような状態になる • 可視化するとダッシュボードが真っ⾚になり、アラートも鳴ってしまう • KaaS運⽤チームは異常が発⽣しているのか、意図的に機能が無効化されている のかが判断できなくなる ͜ͷΫϥελͷϩάసૹͷ4-*௿͍ʂ Կ͔ى͖ͯΔʁ ͦͷΫϥελɺϩάసૹແޮԽ ͯ͠ΔΒ͍͠Ͱ͢Α
  39. ©2022 Yahoo Japan Corporation All rights reserved. 課題1への対策 – sli-silencerの導⼊

    4.SLI/SLOを活⽤し始めたことで新たに⽣じた課題 39 • 特定のクラスタで特定の機能が無効化されて いることをメトリクスで出す • 可視化やアラートルールに渡す前にそれらを 含まないようにする ,BB4ӡ༻νʔϜ༻,VCFSFOUFT TMJTJMFOFS ແޮԽͷઃఆ
  40. ©2022 Yahoo Japan Corporation All rights reserved. 課題2 – SLIの測定で関係システムへ⾼負荷を与えてしまった

    4.SLI/SLOを活⽤し始めたことで新たに⽣じた課題 40 SLIの定期測定で⾼頻度にオペレーションを実⾏すると、 関連システムへの⾼負荷を与えてしまう • 外部ストレージに負荷をかけすぎ、新規に ボリューム を作成できない状態に陥ってしまった $MPVEQSPCFS 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
  41. ©2022 Yahoo Japan Corporation All rights reserved. 課題2への対策 – SLI計測間隔の調整

    4.SLI/SLOを活⽤し始めたことで新たに⽣じた課題 41 • Cloudproberではinterval_msecの設定 • 計測間隔を⻑くすることで、頻度を下げ、関係システムへの負荷を軽減できた • 間隔が⻑すぎると計測の精度が落ちるためため、関係システムの管理者と相談し、 丁度いい間隔に調整が必要
  42. ©2022 Yahoo Japan Corporation All rights reserved. • 1000+クラスタで各種SLIを計測し、それをPrometheusのクエリを使って計算し、 可視化したらダッシュボードの表⽰が完了するのに1分以上かかってしまった

    課題3 – ダッシュボードが重すぎて使い物にならない 4.SLI/SLOを活⽤し始めたことで新たに⽣じた課題 42
  43. ©2022 Yahoo Japan Corporation All rights reserved. 課題3の対策 – Prometheus,

    Grafanaのチューニング 4.SLIを活⽤し始めたことで新たに⽣じた課題 43 • Recording Ruleで予め計算を実⾏しておく • Subqueryを使わない 表⽰完了まで1分以上 → 5秒以内 まで縮まった • SinglestatパネルはInstant化 • GraphでResolu_onを⼩さくして表⽰する データ量を減らす
  44. ©2022 Yahoo Japan Corporation All rights reserved. アジェンダ 1. ヤフーのKaaSについて

    2. KaaSの運⽤における課題 3. SLI/SLOの計測・監視を活⽤した運⽤ 4. SLI/SLOを活⽤し始めたことで新たに⽣じた課題 5. まとめと今後の展望 44
  45. ©2022 Yahoo Japan Corporation All rights reserved. まとめ 5.まとめと今後の展望 45

    • SLI/SLOを活⽤した統合監視をすることで、信頼性を保つための体制を整えた • 20数名しかいないKaaS運⽤チームが、1000+のクラスタの機能を監視できるよ うになった • SLI/SLOを活⽤し始めると様々な課題も発⽣するため、注意が必要
  46. ©2022 Yahoo Japan Corporation All rights reserved. 今後の展望 5.まとめと今後の展望 46

    • SLIの測定ができてないKaaSの機能について測定できるようにし、従来の監視を 抜け出す • 新機能のGA要件に「SLIの測定ができていること」を加えていきたい • エラーバジェットの活⽤ • CI/CDで」リリースしたら⾃動でSLI/SLOチェックし、サービスレベルの低下を確 認したら⾃動でロールバックできるようにしたい
  47. ©2022 Yahoo Japan Corporation All rights reserved. 47 ご清聴ありがとうございました。