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

Observabilityについて

 Observabilityについて

CloudNative Days Tokyo 2021 Co-located Event Handson

OCHa Cafe Presents★Kubernetes & オブザーバビリティ 入門ハンズオン スライド資料

oracle4engineer

November 01, 2021
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. 2 Copyright © 2021, Oracle and/or its affiliates Profile Name

    • Yutaka Ichikawa/市川 豊 Belong • Solutions Architect Role • Principal Cloud Solution Engineer SNS • Twitter/GitHub/Qiita:cyberblack28 Blog • https://cyberblack28.hatenablog.com/ Materials • https://speakerdeck.com/cyberblack28/ Community • CloudNative Days Tokyo #cndt • Cloud Native Bright Future #cnbfmeetup Certified • Certified Kubernetes Administrator • Certified Kubernetes Application Developer Publications 11/4-5 オンライン・参加費無料 https://event.cloudnativedays.jp/cndt2021/
  2. 3 Copyright © 2021, Oracle and/or its affiliates 本書では、アプリケーションエンジニア、インフラエンジニア、 オペレーションエンジニアの方々を対象に、これまでのアプリ

    ケーション開発とコンテナアプリケーション開発の違い、コン テナアプリケーション開発に必要となるDocker、 Kubernetesや自動化で必要となるCI/CD、コンテナア プリケーションの運用方法を基本から解説しています。 Dockerコンテナ開発・環境構築の基本 2021/7/27 発売
  3. Observability • そもそも監視って? • 背景 • What’s Observability ? •

    Telemetry Telemetry & Tool • Metrics • Logs • Traces Oracle’s Observability • Monitoring • Notifications • Application Performance Monitoring • Logging • 参考資料 • ハンズオン概要 4 Copyright © 2021, Oracle and/or its affiliates Agenda
  4. 7 Copyright © 2021, Oracle and/or its affiliates Observability Monitoring

    = 監視、観察して記録する そもそも監視って?
  5. 9 Copyright © 2021, Oracle and/or its affiliates Observability •

    サービスやアプリケーションの健全性を確認 • 障害やトラブルの原因調査 • キャパシティ分析 • サービス利用者の行動分析 技術、運用、ビジネスなどに多岐にわたる そもそも監視って?
  6. 10 Copyright © 2021, Oracle and/or its affiliates Observability そもそも監視って?

    サービスやシステムを利用するユーザに 影響を与えないため ユーザ体験を損なわないようにするため
  7. 12 Copyright © 2021, Oracle and/or its affiliates 監視の意義 •

    より良い方法で、システムの稼働状況を把握できている状態 • システム運用において、判断に必要となる情報を取得できている状態 • 迅速に障害やトラブルに対応できる状態 これまでもこれからも、こうした本質は変わらない Observability そもそも監視って?
  8. 14 Copyright © 2021, Oracle and/or its affiliates Observability 背景

    これまでのシステム 従来のWeb3層モデルのようなシンプルな構成のシステムであれば、比較的容易に障害を調査することが可能。 LB/Web/App/DBなど それぞれのコンポーネント を追いやすい
  9. 15 Copyright © 2021, Oracle and/or its affiliates Observability 背景

    分散システム 分散システムのような小さなサービスが疎結合するようなシステムでは、構成が複雑となり障害発生個所や原因追求が 困難であり、まして人の手で行うことは非現実的。 それぞれのコンポーネント を追うのは非現実的
  10. 16 Copyright © 2021, Oracle and/or its affiliates Observability 背景

    分散システム 右図にあるような分散システムでは、大量のサービスが連携して、 一つのシステムとして成り立っているため、障害が発生した際の検 知など、これまでのように容易にはいかない… 『Adoption of Cloud Native Architecture, Part 2: Stabilization Gaps and Anti-Patterns』 https://www.infoq.com/articles/cloud-native-architecture-adoption-part2/
  11. 18 Copyright © 2021, Oracle and/or its affiliates Observability What’s

    Observability ? Observabilityの意味 Observability might mean different things to different people. 可観測性は、人によって意味が異なる場合があります。 『 Distributed Systems Observability』 https://www.oreilly.com/library/view/distributed-systems-observability/9781492033431/ Observability = 可観測性 Observability(可観測性)は、人によってまたはシステムによって基準、観点、解釈の仕方が違うものなので 本セッションの内容も一例と捉えてください。
  12. 19 Copyright © 2021, Oracle and/or its affiliates Observability What’s

    Observability ? クラウドネイティブにおけるObservability Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil. クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実 行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがありま す。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変 更を最小限の労力で頻繁かつ予測どおりに行うことができます。 『 CNCF Cloud Native Definition v1.0』 https://github.com/cncf/toc/blob/main/DEFINITION.md クラウドネイティブの文脈では、Observability(可観測性)は、クラウドネイティブなシステムを実現する一要素
  13. 20 Copyright © 2021, Oracle and/or its affiliates Observability What’s

    Observability ? クラウドネイティブにおけるObservability クラウドネイティブ技術 速く、正確に高品質なサービスを提供して、 エンドユーザ様の満足度、企業収益、ビジネス価値の向上
  14. 21 Copyright © 2021, Oracle and/or its affiliates Observability What’s

    Observability ? クラウドネイティブにおけるObservability 提供だけではなく、常にユーザエクスペリエンスを損なうことが無いよう維持、 そして、障害やトラブルが発生した場合も速く、正確に対応できる体制も維持する!
  15. 22 Copyright © 2021, Oracle and/or its affiliates Observability What’s

    Observability ? クラウドネイティブにおけるObservability Kubernetes上のPod(コンテナ)を例に考えてみると、決められたNodeに決められたPod(コンテナ)が稼働するとは限らな いため、これまでの監視方法とは違うアプローチが必要となる。 OKE Virtual Machine Virtual Machine Virtual Machine Operator Node状況、Kubernetes Cluster状況(Podなど)、 アプリケーション、データベー スなど色々ある
  16. 23 Copyright © 2021, Oracle and/or its affiliates Observability What’s

    Observability ? 結局のところObservabilityとは? • 人またはシステムによって基準・観点は異なる • クラウドネイティブなシステムを実現するまたは支える一要素 • 従来のシステムとは異なるアプローチが必要(分散システム、コンテナなど) • より良い方法で、システムの稼働状況を把握できている状態 • システム運用において、判断に必要となる情報を取得できている状態 • 迅速に障害やトラブルに対応できる状態 この本質も不変!
  17. 25 Copyright © 2021, Oracle and/or its affiliates Observability Telemetry

    Observabilityを実現する3要素 Metrics Logs Traces Telemetry システムの状態を収集後、付加情報を 付与して数値に変換したもの 正常・異常動作など、システムにより 生成されるテキストデータ コンポーネント間を跨ぐイベントまたはトラン ザクションの因果連鎖の指標 Telemetryの各要素が連携して Observabilityを実現させることが重要
  18. 26 Copyright © 2021, Oracle and/or its affiliates Observability Telemetry

    Observabilityを実現する主なツール Metrics Logs Traces Jaeger Zipkin Grafana Loki Prometheus & Grafana EFK この他にもベンダー製品やクラウドベンダーの サービスもあります。 Open Telemetry
  19. 27 Copyright © 2021, Oracle and/or its affiliates Observability Telemetry

    Oracle Cloud Observability and Management Platform • KubernetesまたはDockerコン テナに展開されたマイクロサービ スからテレメトリを取り込み • 分散トレース向けの OpenTracingおよび OpenMetricsと互換性がある Cloud Native Feature
  20. 28 Copyright © 2021, Oracle and/or its affiliates Observability Telemetry

    The CNCF End User Technology Radar The CNCF End User Technology Radarは、CNCFエンドユーザーコミュニティに代わって、クラウドネイティブテクノロ ジーを評価するためのガイド 1.最も一般的に採用されているツールはオープンソース 最も「採用」票を獲得した3つのツール(Prometheus、Grafana、Elastic)と最 も合計票を獲得した5つのツール(Prometheus、Grafana、Elastic、Jaeger、 OpenTelemetry)はすべてオープンソースです。 2.可観測性の領域に統合はない 多くの企業が複数のツールを使用しています。企業の半数は5つ以上のツールを使 用しており、3分の1は10以上のツールを使用した経験があります。 3.PrometheusとGrafanaはほぼ一緒に利用 回答者の3分の2は、これら2つのツールを組み合わせて使用しています。これは当然 のことですが、高い相関関係は注目に値します。 『The CNCF End User Technology Radar Observability, September 2020』 https://radar.cncf.io/2020-09-observability
  21. 29 Copyright © 2021, Oracle and/or its affiliates Observability Telemetry

    3要素の調和が重要 Metrics Logs Traces Telemetry Telemetryの各要素が連携して Observabilityを実現させること が重要!! MetricsからLogsやTraces、 TracesからMetricsやLogsのよう に、1つの要素から別の要素を見 据える!!
  22. 32 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics What’s metrics ? • システムの状態を収集後、付加情報を付与して数値に変換したもの • 監視対象が経時的にどのような変化をするか統計的に予測するもの • Metrics自体では、単なる事実でしかないので、経時的に見て、予測につなげる • Metricsの数値を閾値として、アラート通知につなげる Use of metrics Example of metrics CPU・メモリの使用率 リクエスト数 ネットワーク通信料
  23. 33 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics 収集するメトリクス例 メトリクス監視を始める際に、収集するメトリクスを何にすべきか悩む場合の抽象化された例。 1.USE リソースをベースとしたメトリクス収集 Utilization リソースの単位時間あたりの使用率(例:CPU、メモリの使用率等) Saturation リソースの飽和状況(例:実行キューの長さ等) Error エラーイベントのカウント(例:ネットワーク、I/Oのエラーなどをカウント) 2.RED サービスをベースとしたメトリクス収集 Rate(Request) 秒間のリクエスト数 Error 失敗しているリクエスト数 Duration リクエストの処理に要した時間
  24. 34 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics 3.The Four Golden Signals 『SREサイトリライアビリティエンジニアリング』で述べられている4大シグナル Latency リクエストを処理するのに要した時間。正常なレスポンスと異常なレスポンスは分けるようにする。 Traffic システムに対するリクエスト量。リクエスト数やネットワークI/O、セッション数など。 Error 処理の失敗。 Saturation サービスが手一杯になっている状態。メモリ、ディスク、CPUやI/Oのなど。 https://www.oreilly.co.jp/books/9784873117911/ 収集するメトリクス例
  25. 35 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics Prometheus Prometheusは、Pull型のメトリクス監視システムで、Kubernetesとも親和性が高くサービスディスカバリ機能によって、 監視対象を自動的に見つけることが可能 主な特徴 • クラスタ全体のリソース監視 • PodごとのCPU、RAM、Network使用量の監視 • ラベルを利用したメトリクス管理 • メトリクス集約に特化した独自のクエリ言語(PromQL)を持つ
  26. 36 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics Prometheus Architecture What is Prometheus? | https://prometheus.io/docs/introduction/overview/#architecture Prometheus本体 • 各監視ターゲットからMetrics (メトリクス)を収集 • 収集したMetricsに対してクエリ を発行してMetrics情報を参照 • クエリを自動的に内部で定期的 に実行してアラートの管理 Service Discovery 監視対象の情報を自動的に取得 する仕組みで、監視対象のAPIを 利用して、インスタンス情報を収集 Exporter 取得したメトリクスをPrometheus が処理できるフォーマットに変換 Alerting Alertmanagerが通知に特化したコ ンポーネント PromQL PromQLを利用して、Metricsのラベ ルによるフィルタリング、集計、アラート 実行など幅広く利用できるクエリー言 語 Visualization Prometheusにおける可視化、専用 のWebUIによるクエリ実行、さらに Grafanaと連携してグラフ化など
  27. 37 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics Push型とPull型 PrometheusからExporterという軽量のHTTPサーバにリクエストを送ることで動的に変化する環境監視を可能にする 監視対象システム エージェント 監視システム 監視対象システム Exporter Prometheus Push型 Pull型 HTTP Request HTTP Response
  28. 39 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics Exporterについて Exporterは、ターゲットが持つ独自形式のメトリクスをExporterが取得して、Prometheusが処理できるフォーマット に変化する役割を担う Exporter Target ① メトリクスをリクエスト ② メトリクスを収集 メトリクスを取得 ③ 取得したメトリクスをPrometheusが処理できるフォーマットに変換 ④ メトリクスのレスポンス
  29. 40 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics Exporterについて Podデザインパターンの一つであるアダプタパターンを利用して取得することも可能 Pod MySQL Exporter MySQL 独自の形式でメトリクスを提供 Prometheusが処理できるフォーマットにメトリクスを変換
  30. 41 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics Exporterについて Prometheusは、Exporter経由ではなく、アプリケーションにクライアントライブラリを埋め込むことによってアプリケーショ ンから直接メトリクスを取得することもできます。 Application Pod Library
  31. 42 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics ラベルによるメトリクス管理 • Prometheusはメトリクスを区別するためにラベルを利用 • PromQLでラベルによる集約対象の絞り込みが可能 • ラベルはメトリクスを出力する際に付与 • サービスディスカバリの結果を付与したり、固定値として設定可能 ラベルについて メトリクスはメトリクス名・ラベルとその値・メトリクスの値で構成 http_requests_total {pod=“sample-web-service”, namespace=“default”} 2021 メトリクス名 ラベルとその値 メトリクスの値
  32. 43 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics PromQL PrometheusはPromQLというメトリクス集約に特化したクエリ言語があり、それを使用してメトリクスを集約が可能 (例)sample-web-serviceというPodが受けたリクエスト数の10分間の平均を求める場合 rate(http_requests_total{pod=”sample-web-service”}[10m]) PrometheusのWebUIを利用して、フォームに PromQLを入力、実行すると結果を表示可能 メトリクス名、ラベルフィルタリング、正規表現フィルタリ ング、関する利用など可能 ※左画像は、メトリクス名のみの例
  33. 44 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics Alertmanager • Alertmanagerは、通知に特化したコンポーネント • 収集したメトリクスにアラートとして発報するルールを設定可能 • ルールをPromQLで設定し、定期的に評価されて、条件を満たすとアラートがAlertmanagerに送信される仕組み • アラートは、メールやSlackなどへ通知可能 • 通知間隔、連続通知抑止、グルーピングなど管理可能 • アラート、通知に関するものはPrometheusでなくAlertmanagerで管理 Alertmanager Others アラート条件の評価、Alertmanagerへの通知 アラート通知
  34. 49 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Metrics Grafana Grafanaは、Prometheusと連携して監視データを高度に可視化するツールで、Webブラウザでグラフ化されたデータ をリアルタイムに確認可能
  35. セキュリティ監査 システム安定運用 52 Copyright © 2021, Oracle and/or its affiliates

    Telemetry & Tool Logs What’s logs ? 正常・異常動作など、システムにより生成されるテキストデータ、ファイル、標準出力、標準エラー出力として出力される もの • システム安定運用 「いつ、どこで、何が起きた」 • セキュリティ監査 「いつ、誰が、何をした」 Use of logs • システムログ • アプリケーションログ Examples of logs • イベントログ • 通信ログ • 監査ログ • 認証ログ
  36. 53 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Logs 取得するログの例 Kubernetes • アプリケーションログ ✓ Kubernetesクラスタ上で稼働しているコンテナアプリケーション • システムログ ✓ システムコンポーネント(kube-controller-manager、kubeletなど) ✓ システム準コンポーネント(CoreDNSやCNIなど) ✓ Kubernetes Node • 監査ログ ✓ Kubernetes APIへの接続情報 Kubernetesへの変更はシステムコンポーネントやエコシステムを含めて、すべてAPIサーバを介して行われるので、どのよ うなユーザがどのようなリクエストを送っているかを記録した監査ログはセキュリティ上重要
  37. 54 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Logs ログの取得方法 Kubernetes Logging Architecture | https://kubernetes.io/docs/concepts/cluster-administration/logging/
  38. 55 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Logs 1.アプリケーションログ 「重要度」、「ログ量」、「整形、フィルタリング有無」などによって、いくつかのパターンでログを取得・送信することが可能 a.DaemonSet Node単位でログを集約して、DaemonSetが一括にログを転送。コンテナランタイムが出力するログファイルのディレクトリ を監視して、ラベルなどの情報を付与して転送。 App Node App logs Log Agent DaemonSet Logging Backend • 個別フォーマットに整形不要、多少の遅延が許容でき る場合に有効 • DaemonSet Podが他のPodよりも先に削除されると 一部のログが欠損する
  39. 56 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Logs b.Sidecar アプリケーションコンテナのSidecarとして起動しているログエージェントが転送する。 App Pod Log Agent logs Logging Backend • 汎用的なログエージェントコンテナを作成すれば、他の システムでもSidecarとして利用できる • ログエージェントコンテナがアプリケーションコンテナよりも 先に停止した場合はログが欠損するため、コンテナの停 止タイミングに注意する必要がある Sidecar
  40. 57 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Logs c.Library アプリケーションからライブラリを利用して直接ログを転送する。 App Pod Logging Backend • アプリケーション側にログ転送先の設定が入ることで結 合度が高くなる • ログサービスに対する認証情報をアプリケーション側で持 つ必要がある App
  41. 58 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Logs 2.システムログ Kubernetesのシステムコンポーネント、準システムコンポーネントは主に以下の方法で稼働しているケースが多いので、 それに合わせた方法で取得 • Namespace 「kube-system」上にPodとして稼働 ➢ Podとして起動している場合は、基本的にDaemonSetによるログエージェントで取得 • Node上にsystemdとして稼働 ➢ Node側でログを取得 • ユーザが確認できないブラックボックスで稼働 ➢ マネージドサービスの場合、Control Planeのコンポーネントはユーザからアクセスできないので、サービス提供側 が提示する方法で取得
  42. 59 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Logs 3.監査ログ • 監査ログは、Kubernetes のシステムコンポーネント(kube-apiserver)に対してどこに出力するかを設定して取得 可能 • 監査ログの主な設定 • どのリソースに対する操作の監査 • 「リクエスト受信時」「レスポンス開始時」「レスポンス完了後」「エラー発生後」などのフェーズによる監査 • 「メタデータのみ」「リクエスト」「リクエストとレスポンス」などどの程度情報を記録するか 全ての監査ログを取得を試みるとログのデータ量が膨大に増えるので、注意が必要!
  43. 60 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Logs 3.監査ログ Auditing | https://kubernetes.io/docs/tasks/debug-application-cluster/audit/
  44. 61 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Logs Grafana Loki Grafana Labsが主体となって開発するスケールアウト・高可用性・マルチテナントといった特性を持つのログアグリゲー ションシステム 主な特徴 • Prometheusのようにラベルでログを絞り込んだり、grepのように文字列を絞り込むことが可能 • 書き込み、読み込み、アラーティング、データ圧縮など複数の役割を持った分散システム構成 • データストレージを持たないので、ローカルまたは外部ストレージと連携 • Grafanaと連携してダッシュボードでのログの可視化や検索可能
  45. 62 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Logs Loki Architecture Loki’s Architecture | https://grafana.com/docs/loki/latest/architecture/ Distributor • 受信したログをIngesterへ送信 • Ingesterへのルーティングには、Consistent Hashアルゴリズムの利用、Consulのデータを 参照 Ingester • ログをストレージに保存 • Distributorから受信したログのラベルセット/ テナントIDから対応するChunkにログを追加 • 対応するChunkが無い場合は新規作成 Querier • ログの検索処理 • Ingester、Chunkからログを取得 Chunk Store • 内部/外部ストレージ • Indexは、ログ検索のための置換インデックス • Chunkは、実際のログを保存 Query Frontend • 検索結果のキャッシュ • クエリキューイング Ruler • Querierにクエリを発行して、アラート処理 Compactor • Indexデータの圧縮処理 Consul • DistributorがIngesterへ送信する際に 参照するストア
  46. 65 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Traces What’s traces ? コンポーネント間を跨ぐイベントまたはトランザクションの因果連鎖の指標 トレースが必要となる背景 分散システム、マイクロサービスにおけるメトリクスとログの限界 • 1リクエストが複数のシステムやサービスを跨ぐ状況がある • リクエストがどのシステムまたはサービスのどのアプリケーションで稼働しているのか不明瞭 リクエスト、トランザクションのようなある範囲内のイベントを記録して、追跡を可能にする必要がある!
  47. 66 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Traces Trace & Span トレーシング(分散トレーシング)は、TraceとSpanを可視化して、問題個所を特定する A B E C D Trace Span Span Span Span Span 処理A 処理B 処理C 処理D 処理E Request OutPut Traceは、Spanの集合体 Spanは、各サービス内の処理 Request X Start Request X End
  48. 67 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Traces Jaeger Jaegerは、分散サービス間のトランザクションをトレースするためのオープンソース・ソフトウェア 主な特徴 • クライアント/バックエンドを提供 ✓ クライアント:アプリケーションからSpanを取得して送信 ✓ バックエンド:Spanを受け取り保存 • モダンなWebUI • 高可用性
  49. 68 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Traces Jaeger Architecture Architecture | https://grafana.com/docs/loki/latest/architecture/ jaeger-client • OpenTracing標準に準拠した各言語 のSDKを実装 • アプリケーションで指定されたサンプリング ポリシーに従ってTrace情報をjaeger- agentに送信 jaeger-agent • 受信したTrace情報のSpanをjaeger- collectorへ送信 jaeger-collector • 受信したSpanをストレージへ保存 jaeger-query • 保存されたSpanを取得および可視化 Storage • Cassandra、Elasticsearch、Kafkaに よるメッセージングをサポート
  50. 70 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Traces トレーシング(分散トレーシング)標準化について オブザバビリティの多様化に向けた標準化 OpenTracing • トレーシング(分散トレーシング)のためのAPI仕様およびフレームワーク • Jaeger、Zipkinなど様々なバックエンドに対応 • トレーシング(分散トレーシング)において、ベンダーニュートラルな仕様を規定 OpenCensus • トレーシング(分散トレーシング)のためのライブラリ群(多言語に対応) • Jaeger、Zipkinなど様々なバックエンドに対応
  51. 71 Copyright © 2021, Oracle and/or its affiliates Telemetry &

    Tool Traces トレーシング(分散トレーシング)標準化について OpenTracingとOpenSensusがOpenTelemetryに統合して、トレース、メトリクス、ログのようなテレメトリーデータの作 成及び管理するAPI、SKD、ツールを提供する方向へ、そして、基本的にバックエンドは持たない仕様 OpenTelemetry Merging OpenTracing and OpenCensus: Goals and Non-Goals | https://medium.com/opentracing/merging-opentracing-and-opencensus-f0fe9c7ca6f0
  52. アプリケーションの開発・運用を支援するマネージド・サービス Oracle’s Observability Copyright © 2021, Oracle and/or its affiliates

    73 Monitoring Events Streaming Observability + Messaging API Gateway Container Engine for Kubernetes Resource Manager Cloud Infrastructure Registry Functions Notifications Application Development + Operations Logging OCIが提供する性能、セキュリティ、 高可用性を兼ね備えたマネージド Kubernetesサービス (CNCF認証) コンテナイメージを格納する高可用 性なプライベート・コンテナ・レジストリ インフラリソース運用の自動化を可 能にするIaCプラットフォーム(オープ ンソースTerraformベース) REST APIの作成、運用、保護、 監視が可能なフルマネージドなAPI ゲートウェイサービス 実行時課金のフルマネージドな サーバーレス実行環境 (オープンソー スDocker/Fn Projectベース) OCI上の様々なリソースのメトリクス を監視、ダッシュボードで閲覧、通知 ホスト、アプリケーションのログ管理・ 検索・分析を行うプラットフォーム (オープンソースFluentdベース) 大量の宛先に通知可能なメッセージ 通知プラットフォーム 大量のデータストリームを処理するフ ルマネージドな分散メッセージング サービス (Kafka互換プラグインの提 供) OCI上のリソースの状態変化を捉え Oracle Functionsを始めとする サービス間の連携を実現
  53. OCI上の様々なリソースのメトリックを監視、ダッシュボードで閲覧、および通知 Oracle’s Observability Copyright © 2021, Oracle and/or its affiliates

    74 ▪ ユースケース OCI上のサービスやリソースの状態監視、アプリケーションの性能監視、リア ルタイムでの異常検出 ▪ 特徴 • 特別な設定は不要でOCI上の各サービスやリソースのメトリックを自動 的に取得(コンピュート・インスタンス/VNIC/ブロック・ボリューム/ロード バランサーなど) • 事前定義済のビジュアライゼーション・ダッシュボードの提供 カスタム・メトリックの定義も可能 • メトリックに対し、あらかじめ指定した条件にメトリックが合致 した場合にアラームを作成することも可能 ▪ 価格 カスタム・メトリックの取り込み: 最初の5億データポイントは無料、以降100万データポイントごとに¥0.3 分析メトリック: 最初の10億データポイントは無料、以降100万データポイントごとに¥0.18 ▪ 関連するOracle Cloud Service • Notifications(通知)、コンピュート、ネットワーク ストレージ、その他OCIサービス全般 Monitoring Oracle Cloud Infrastructure METRICS ALARMS CPU: 80 CPU: 90 CPU: 40 CPU: 50 Customer Applications, Services, Resources Oracle Cloud Infrastructure Console Customer Monitoring Tool Monitoring Notifications Monitoring (モニタリング)
  54. Copyright © 2021, Oracle and/or its affiliates 75 Oracle’s Observability

    サービス・メトリクス メトリック・エクスプローラー • ノード・ステータス OCI Computeサービスによって示されたコンピュー ト・ノードのステータス。 • Kubernetesのノード条件 Kubernetes API Serverによって示されたワー カー・ノードの条件。 APIServerRequestCount APIServerResponseCount UnschedulablePods
  55. Copyright © 2021, Oracle and/or its affiliates 76 ▪ ユースケース

    • アプリケーションの統合(アプリケーションと連携して通知処理を実施) • クラウド・ネイティブ・メッセージング(特定のイベントが発生した時に通知処理を実施) • メトリックと監視(Monitoringサービスと連携して通知処理を実施) Notifications ▪ 価格 • HTTPS配信:1か月あたり100万件までの配信操作 無料、以降100万件ごと 72.00円 • メール配信:1か月あたり1,000通までのメール送信 無料、以降1000通ごと 2.40円 • SMS配信:1か月あたり100件までのSMSメッセージ送信 無料、以降1件ごと(国ゾーン1)1.80円 ▪ 特徴 • エコシステムからのエンドポイントの選択(SMS、Slack、PagerDuty、HTTPSエンドポイントにメッセージを送信) • Events Serviceによるトリガー(様々なイベントに基づいて通知を実行) • サーバーレス・アプリケーションを簡単に実行 SMSはゾーン数で価格は変更となるので詳細は、こちらで確認。https://www.oracle.com/jp/devops/notifications/ OCIおよび外部でホスティングされているアプリケーションに対してメッセージをブロードキャスト Oracle’s Observability Notifications (通知)
  56. Copyright © 2021, Oracle and/or its affiliates 77 アプリケーションのパフォーマンスを可視化し、サーバーおよびユーザー・サイドからの問題の根本的原因を分析 Oracle’s

    Observability Application Performance Monitoring ▪ 特徴 • 分散トレーシング ✓マイクロサービスのアプリケーションのトレース情報の分析に特化 した分散トレーシング ✓OpenTracing、Open Telemetry互換 • エンドユーザー監視 ✓エンドユーザーのパフォーマンスを可視化するエンドユーザー監視 • 合成モニタリング ✓アプリケーションの死活監視を行う合成モニタリング • サーバー監視 ✓サーバの可用性、負荷、パフォーマンスを監視するサーバー監視 • ダッシュボード ✓O&Mの他のサービスのデータとAPMのデータを組み合わせて、 ダッシュボードを作成、カスタマイズすることが可能 ▪ 価格 • Tracing Data: 100,000 イベント ¥78(時間単位) • Synthetic usage: 10 モニター稼働 ¥2.4(時間単位)
  57. Copyright © 2021, Oracle and/or its affiliates 79 ▪ ユースケース

    • Oracle Cloud Infrastructureリソースへのアクセスを有効にして、問題のデバッ グとトラブル・シューティング。 • OCI、オンプレミス、または他社クラウド環境で実行されているアプリケーションからロ グの取り込み。 • Notifiationサービスと連携して通知したり、サーバーレスのfunctionを呼び 出して、アプリケーションの問題を復旧。 Logging ▪ 価格 • 1GBあたり¥6(時間単位) • 月額10GBの無料利用枠 ▪ 特徴 • ログエージェントにFluentd、データ形式にcloudevents、CNCFのオープンソース 標準仕様を採用 • 監査ログ、サービスログ、カスタムログの3種類のログを生成し、管理することが可能 • 監査ログは、最大365日間、サービスログとカスタムログは最大6か月間、 Loggingサービスに保持、それ以上保持したい場合はObject Storageに転送 保持が可能 • Logging Analyticsと連携して、高度なログ分析やアラート、ビジュアライゼーショ ンが可能 OCIのリソースからログにアクセス Oracle’s Observability Logging (ロギング) Logging 監査 VCN Flow Logs OSログ ロードバランサー オブジェクト ストレージ OCIネイティブサービス
  58. Copyright © 2021, Oracle and/or its affiliates 80 Oracle’s Observability

    カスタム・ログ 監査ログ OKEによって実行された操 作のログを表示 Kubernetes APIサーバーに よって実行された操作のログを 表示 ワーカーノード上で実行されているアプリ ケーション(Pod)の実行ログ
  59. 81 Copyright © 2021, Oracle and/or its affiliates まとめ 常にユーザエクスペリエンスを損なうことが無いよう維持、

    そして、障害やトラブルが発生した場合も速く、正確に対応できる体制も維持する! オブザバビリティは、クラウドネイティブシステムを支える
  60. 83 Copyright © 2021, Oracle and/or its affiliates 参考資料 Observabilityをはじめよう!(前編)

    〜Observabilityの背景と構成要素〜 https://knowledge.sakura.ad.jp/26395/ Observabilityをはじめよう!(後編) 〜Metrics/Logs/Tracesチュートリアル〜 https://knowledge.sakura.ad.jp/26409/ 今日から始めるPrometheusによるシステム監視(1) 〜Prometheusの特徴とアーキテクチャ〜 https://knowledge.sakura.ad.jp/27501/ 最短で理解して運用するGrafana Loki https://zenn.dev/taisho6339/articles/0654040691aaab クラウドネイティブ時代の分散トレーシング Distributed Tracing in a Cloud Native Age https://eventmarketing.blob.core.windows.net/decode2019-after/decode19_PDF_DT81.pdf Prometheus https://prometheus.io/ Grafana https://grafana.com/ Jaeger https://www.jaegertracing.io/ デモ資材 https://github.com/oracle-japan/ochacafe-s4-6 Ochacafe Youtube https://www.youtube.com/watch?v=1IGyUR_OIxM&list=PL8x2FJ pi0g-sDPoupp2pg6RP9P9JU2fHx&index=2 Ochacafe資料 https://speakerdeck.com/oracle4engineer/oracle-cloud-hangout- cafe-observabilityzai-ru-men
  61. ハンズオンの流れ ハンズオン概要 Copyright © 2021, Oracle and/or its affiliates 86

    『Oracle Container Engine for Kubernetes(OKE)でサンプルマイクロサービスアプリケーションをデプロイしてオブ ザバビリティツールを利用してみよう』 (https://oracle-japan.github.io/ocitutorials/cloud-native/oke-for-advances/) 上記サイトにある手順を一緒に進めます。以下オプションについては、概要説明はしますが、本ハンズオンでは行いません。 5.OCI MonitoringのメトリクスをGrafanaダッシュボードを利用して確認してみよう【オプション】 6.OCI APMを利用してトレーシングしてみよう【オプション】
  62. 全体概要 ハンズオン概要 Copyright © 2021, Oracle and/or its affiliates 87

    Virtual Machine Virtual Machine Virtual Machine Sample Apps
  63. 88 Copyright © 2021, Oracle and/or its affiliates ハンズオン概要 Istio

    Architecture https://istio.io/latest/docs/ops/deployment/architecture/ Istio Control Plane • トラフィックをルーティングするためにプロキシの設定やポリ シーを管理する • Control Planeは単一のバイナリ(istiod)として稼働 • Istiodは、Pilot、Cltadel、Galleyの3コンポーネント Istio Data Plane • Proxyが、サービスメッシュ内の全サービスのインバウンド、 アウトバンドトラフィックを仲介 • Proxyは、Envoyが利用されているが、仕様を満たして いれば差し替えも可能
  64. OKEクラスタの構築・サービスメッシュとオブザバビリティ環境構築 ハンズオン概要 Copyright © 2021, Oracle and/or its affiliates 89

    Virtual Machine Virtual Machine Virtual Machine ① OKEクラスタの構築 ② サービスメッシュとオブザバビリティ環境構築 • Istio(addon: Prometheus, Grafana, Jaeger, Kiali)インストール • Grafana Loki インストール • Grafana Lokiのセットアップ • node exporterのインストール
  65. 90 Copyright © 2021, Oracle and/or its affiliates ハンズオン概要 node

    exporterのインストール・Prometheus WebUIからPromQLの実行 Virtual Machine Virtual Machine Virtual Machine Node Exporter node exporter Service prometheus Service node-exporterを利用して、各ノードの空きメモリ量、直近3分での各ノードの空 きメモリ量、3ノードの空きメモリ量の合計をPromQLで検索
  66. 91 Copyright © 2021, Oracle and/or its affiliates node_memory_MemAvailable_bytes 各ノードのメモリの空き容量

    ハンズオン概要 node exporterのインストール・Prometheus WebUIからPromQLの実行
  67. 92 Copyright © 2021, Oracle and/or its affiliates node_memory_MemAvailable_bytes[3m] 直近3分での各ノードのメモリ空き容量

    ハンズオン概要 node exporterのインストール・Prometheus WebUIからPromQLの実行
  68. 93 Copyright © 2021, Oracle and/or its affiliates sum without

    (instance, kubernetes_node) (node_memory_MemAvailable_bytes) 3ノードの空き容量サイズ合計 ハンズオン概要 node exporterのインストール・Prometheus WebUIからPromQLの実行
  69. 94 Copyright © 2021, Oracle and/or its affiliates ハンズオン概要 node

    exporterのインストール・Prometheus WebUIからPromQLの実行
  70. OKEクラスタの構築・サービスメッシュとオブザバビリティ環境構築 ハンズオン概要 Copyright © 2021, Oracle and/or its affiliates 95

    Virtual Machine Virtual Machine Virtual Machine ① OKEクラスタの構築 ② サービスメッシュとオブザバビリティ環境構築 • Istio(addon: Prometheus, Grafana, Jaeger, Kiali)インストール • Grafana Loki インストール • Grafana Lokiのセットアップ • node exporterのインストール Sample Apps ③ サンプルアプリケーションでObservabilityを体験 してみよう • サンプルアプリケーションのビルドとデプロイ • Grafana Lokiを利用したログ監視 • Jaegerを利用したトレーシング • Kialiを利用したService Meshの可視化 ④ Istioを利用したカナリアリリース • カナリアリリース
  71. サンプルアプリケーションでObservabilityを体験してみよう ハンズオン概要 Copyright © 2021, Oracle and/or its affiliates 96

    HelidonとOracle JavaScript Extension Toolkit(Oracle JET)ベースの サンプルマイクロサービスアプリケーション
  72. サンプルアプリケーションでObservabilityを体験してみよう ハンズオン概要 Copyright © 2021, Oracle and/or its affiliates 98

    サンプルアプリケーションのビルドとデプロイ OKEクラスタ上にアプリケーションをデプロイ Virtual Machine Virtual Machine Virtual Machine istio- ingressgateway frontend- app backend-app V1-V3 datasource-app V1 V2 V3 manifest $ kubect apply
  73. サンプルアプリケーションでObservabilityを体験してみよう ハンズオン概要 Copyright © 2021, Oracle and/or its affiliates 99

    Grafana Lokiを利用したログ監視 Virtual Machine Virtual Machine Virtual Machine V1 V2 V3 Log Podが出力するログをGrafana Lokiで監視
  74. サンプルアプリケーションでObservabilityを体験してみよう ハンズオン概要 Copyright © 2021, Oracle and/or its affiliates 100

    Jaegerを利用したトレーシング istio-ingressgatewayを経由してルーティングされたトラフィックの流れと各レイテンシを見る Virtual Machine Virtual Machine Virtual Machine istio- ingressgateway frontend- app backend-app V1-V3 datasource-app V1 V2 V3
  75. サンプルアプリケーションでObservabilityを体験してみよう ハンズオン概要 Copyright © 2021, Oracle and/or its affiliates 101

    Kialiを利用したService Meshの可視化 バージョンごとにトラフィックがルーティングされていることを可視化 Virtual Machine Virtual Machine Virtual Machine istio- ingressgateway frontend- app backend-app V1-V3 datasource-app V1 V2 V3
  76. サンプルアプリケーションでObservabilityを体験してみよう ハンズオン概要 Copyright © 2021, Oracle and/or its affiliates 102

    Istioを利用したカナリアリリース トラフィックの80%をv1に、15%をv2に、5%をv3にルーティングする流れをKialiで可視化 Virtual Machine Virtual Machine Virtual Machine V1 V2 V3 5% 15% 80%