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

監視・ログ分析を最初から始めるイマドキの事情と理由・その1(混乱編)

 監視・ログ分析を最初から始めるイマドキの事情と理由・その1(混乱編)

Seigo Watanabe

July 03, 2020
Tweet

More Decks by Seigo Watanabe

Other Decks in Technology

Transcript

  1. 後回しに しない ❗ 1 監視・ログ分析を最初から始める イマドキの事情と理由・その 〜 俯 瞰 混

    乱 編 〜 渡辺聖剛 ソリューションアーキテクト AWS事業本部 パートナーアライアンス部 2020.07.03
  2. 4 Agenda まえおき - 前提となる話 50:50 - SREの話 SかMか -

    監視の話 3-4-3 - 可観測性(o11y)の話 それから? →以下、その2へ続く
  3. 9 自己紹介 渡辺聖剛 ( Seigo Watanabe ) • クラスメソッド株式会社 AWS

    事業本部 パートナーアライアンス部 • 前職までは 所謂インフラエンジニア • 運用・監視(Monitoring) • 好きな AWS サービス ◦ ACM, Route 53 ◦ AWS Systems Manager https://dev.classmethod.jp/author/watanabe-seigo/
  4. 14 アーキテクチャとコンピュート能力 モノリシックからマイクロサービスへ - Container, k8s, FaaS ... コンピュート性能の爆発的向上 -

    計算・I/O性能、ストレージコストは低減 - 超高速ネットワーク - 仮想化技術などの技術革新 Software Defined X (SDx) - X = Network, Infrastructure ... - 従来ハードウェアだったものがソフトウェアで 置き換えられていく
  5. 19 SREってなんぞ Site Reliability Engineering(または 〜Engineer) 技術であり、そのためのエンジニアロール SREの目的は「信頼性の向上」 - 変化し続けるサイト(システム)を前提に、

    そのサイトで安定的に「サービスを提供すること」 - サイトを「安定稼働させること」ではない ちゃんと動いているかどうかを知ることが必要 従来との違い → SREは攻めの運用
  6. 21 GoogleにおけるSRE(cont.) • 仕事の半分はコードを書くこと ◦ 自動化、Infrastructure as Code ◦ 必要なメトリックを収集する仕組みの組み込み

    ◦ プルリク ◦ その他「信頼性をあげる」ために必要なこと • 残りの半分で、 チケット、オンコール、手作業といった運用業務 観念ではなく、明確に工数を分ける
  7. CALMS - DevOpsの哲学のキーポイント - Culture - Automation - Lean -

    Measurement - Sharing DevOpsにとってMeasurementは 重視されるべきもの 23 DevOpsの文化 https://www.oreilly.co.jp/books/9784873119137/
  8. 32 辞書的な定義 monitorもsurveillanceもobserveもsuperviseも、 日本語にするとみんな「監視」になる 一方で、日本語の「監視」には「S」な意味合いが強い • 監視カメラ : Video surveillance,

    CCTV • 監視社会 : surveillance society, watchdog society • PCモニタのことを「監視装置」とは訳さない https://pixnio.com/ja/ https://flic.kr/p/3iapit
  9. 33 トラディショナルな監視の定義 Nagiosまではそんなに違和感なかった • チェック監視 = Nagios リソース監視 = Cacti

    • Zabbixは両方できる ◦ 当時はそれが画期的でもあった ◦ そのあたりから混乱が始まってる感 (個人の感想です) 可観測性までくると違いが際立ってくる https://commons.wikimedia.org/
  10. 35 一方で、 • ソフトウェアでは「ちゃんと作る」と時間がかかる • 不具合のないソフトウェアを作ることはもはやムリ • 仮に「ちゃんと出来」たとしても、 あっという間に古くなる •

    検知にだけ注目すると、単純な閾値チェックで 事足りる -> コンテキストが失われる 複雑化したモダンアプリにおいて、 「S」な監視を行っていては追いつかない https://torange.biz/jp/fx/background-modular-modern-blue-abstract-arrows-creative-215352
  11. 36 monitorの意味 “to watch and check something over a period

    of time in order to see how it develops, so that you can make any necessary changes.” - Oxford Learner's Dictionary 「必要な変更を加えることが出来るように、ある期間に わたって、それがどのようにして発展したかを把握する 目的で、見て、そしてチェックすること」 https://www.oxfordlearnersdictionaries.com/definition/english/monitor_1?q=monitor
  12. 37 つまり:M(Monitoring)な監視では 計測結果が対処とワンセットに ◦ 「まず世に出してから修正する」には こっちがハマる “Done is better than

    perfect” ◦ Mark Elliot Zuckerberg, CEO of Facebook, Inc. ◦ 「完全なものなどないという前提のもと、完全に近づく ために細かな継続的改善・反復が重要だ」ということ ◦ 現状の把握(Monitoring)なしでは為しえない https://medium.com/@amachino/done-is-better-than-perfect-%E3%81%AE%E6%84%8F%E5%91%B3-dc2c74069ece https://commons.wikimedia.org/wiki/File:Mark_Zuckerberg_F8_2018_Keynote.jpg
  13. 38 古典「推測するな、計測せよ」 Notes on Programming in C “ルール1: (略)どこがボトルネックなのかをはっきり させるまでは、推測を行ったり、スピードハックをして

    はならない” “ルール2: 計測すべし。計測するまでは速度のための調 整をしてはならない。(後略)” - Robert "Rob" C. Pike https://ja.wikipedia.org/wiki/UNIX%E5%93%B2%E5%AD%A6 http://www.lysator.liu.se/c/pikestyle.html
  14. 45 Failure mode, SLI, SLO ENT308-S - Build your next

    microservices application with modern AWS services https://youtu.be/msxD0bTFu2A?t=2505 https://dev.classmethod.jp/articles/201912-report-reinvent-2019-ent308/
  15. 46 Failure mode, SLI, SLO (cont.) failure mode SLI SLO

    SLA 何をもって 故障とするか それの重要度 (RRN)はどの くらいか 何を使ったら それが測れる か それが具体的 にどんなとき に「正常」と するのか それをどう 顧客と約束す るか・しない か(見せるか 見せないか) 例) サイトの 表示が遅い 表示速度の p95 99%が 7秒以下 99.99% https://youtu.be/msxD0bTFu2A?t=2505 https://dev.classmethod.jp/articles/201912-report-reinvent-2019-ent308/
  16. 51 The Three Pillars of Observability Metrics(数値、低コンテキスト) Event Logs(含メタデータ、高コンテキスト) Tracing(事象の関連性・分散トレーシング)

    - Distributed Systems Observability https://www.oreilly.com/library/view/distributed-systems-observability/9781492033431/ch04.html
  17. 52 The Four Golden Signals Latency (パフォーマンス・遅延) Traffic (トラフィック量) Errors

    (エラー発生率) Saturation (利用率、キャパシティ) - SREサイトリライアビリティエンジニアリング https://landing.google.com/sre/sre-book/chapters/monitoring-distributed-systems/
  18. 53 Three dimensions Functionally (その機能が正しく動いているか) Availability (その機能が使えるか) Speed (遅くないか) -

    Best Practices for Monitoring E-Commerce Performance https://newrelic.com/resources/tutorials/best-practices-for-monitoring-ecommerce-performance
  19. 54 雑な関連 Metric 数値 Event Log 高コンテキスト Trace 関連性 Latency

    遅延 Traffic 流量 Errors エラー Saturation キャパシティ Functionally 機能の正常性 Availability 可用性 Speed 速度・性能 何を取得するか シグナル 観点 ※線がないから取れない・関係がない、というわけではありません 遅すぎる⇔使えない 情報量の違い
  20. 57 MTTRも気にしよう Mean Time To Repair = 復旧までの最小平均時間 Mean Time

    To Resolution = 解決までの最小平均時間 SLO 99.9% = 毎月30〜40分止まっても許される? ◦ 「1回の停止は5分以内」のような定義も必要 ◦ SLOを日単位、時間単位でも設定する ▪ 99.9%/day = 8.64sec.
  21. 59 可観測性 = 広義の「可視化」その性能 見えなかったものを見えるようにする - つながり・連続性の可視化 = (分散)トレース -

    数値表現から図示・グラフ化 = ダッシュボード 可観測性(Observability) = そのシステムがそなえている性質・性能 - Availability, Capability, Scalability ...
  22. 65 そもそも「ログ」とは トラディショナルなイメージ • 取りあえず出力されるもの • /var/log/ほげほげ • ほっとくとディスクを食い潰す •

    たまにエラーが吐かれてて気をつけなきゃならない • デバッグログが大量に出ているが放置 https://help.sumologic.com/01Start-Here/Quick-Start-Tutorials/Set-Up-Sumo-Logic-Tutorial
  23. 67 Event Log(Events)? • メタデータが正規化されたログ、 あるいはコンテキスト豊富なメトリック • 一方で、メトリックにメタデータを付与するような 動きもあり ◦

    Prometheus, OpenMetrics(後述) • 境界がグレーになってきている ◦ メトリックとイベントの境、イベントとログの境 ◦ 厳密なものではなく、感覚で捉えていいと思う
  24. 71 長期保存と中・短期保存 長期 = アーカイブ、記録や監査のため ◦ 日単位、数年単位 ◦ 何かあったときに掘り起こせれば良い 中期

    = 傾向の把握(短期との比較) ◦ 時間単位、数日〜1週間〜数ヶ月、13ヶ月 ◦ シーズナルな影響をどうみる? 短期 = 「いま」何が起きているか ◦ 分単位、〜数日 ◦ 時代は準リアルタイム(秒単位)へ
  25. 74 前提:監視とは “監視とは継続的なテストである” - 監視とは継続的なテストである、という話 (もしくは cronlog とテストスクリプトを組み合わせた監視手法につい て) -

    https://planet.mysql.com/entry/?id=23085 “監視とは、あるシステムやそのシステムのコンポーネ ントの振る舞いや出力を観察しチェックし続ける行為で ある。” - 入門「監視」
  26. 77 いつから取り始めればよい?(cont.) 予め「取れるだけとっておく」ことが大切 ◦ あとから「あれを見ておけばよかった」となった時のこ とを考えておく ◦ 観測コストも保存コストも、年々安くなっている ◦ ※法的な保存期間についての議論はまた別の話

    それが判断できるのはいつか?本番稼働後でいい? ◦ 開発段階でも有効な情報が得られるのでは? ◦ そもそも、運用と開発を明確なフェーズに分けられる時 代じゃないですよね? →可観測性を高めるため、計測できる状態に作り上げる
  27. 85