Slide 1

Slide 1 text

Observability再入門 Oracle Cloud Hangout Cafe – Season 4 #6 Yutaka Ichikawa Solutions Architect Oracle Corporation Japan SEP 08, 2021

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

3 Copyright © 2021, Oracle and/or its affiliates 本書では、アプリケーションエンジニア、インフラエンジニア、 オペレーションエンジニアの方々を対象に、これまでのアプリ ケーション開発とコンテナアプリケーション開発の違い、コン テナアプリケーション開発に必要となるDocker、 Kubernetesや自動化で必要となるCI/CD、コンテナア プリケーションの運用方法を基本から解説しています。 Dockerコンテナ開発・環境構築の基本 2021/7/27 発売

Slide 4

Slide 4 text

Observability • そもそも監視って? • 背景 • What’s Observability ? • Telemetry Telemetry & Tool • Metrics • Logs • Traces Observability Practice • Istio + Prometheus + Grafana + Kiali + Jaeger + Loki • Oracle’s Observability • 参考資料 4 Copyright © 2021, Oracle and/or its affiliates Agenda

Slide 5

Slide 5 text

Copyright © 2021, Oracle and/or its affiliates 5 Observability そもそも監視って? 背景 What’s Observability ? Telemetry

Slide 6

Slide 6 text

6 Copyright © 2021, Oracle and/or its affiliates そもそも監視って?

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

8 Copyright © 2021, Oracle and/or its affiliates Observability 何のために、監視、観察して記録する? そもそも監視って?

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

10 Copyright © 2021, Oracle and/or its affiliates Observability そもそも監視って? サービスやシステムを利用するユーザに 影響を与えないため ユーザ体験を損なわないようにするため

Slide 11

Slide 11 text

11 Copyright © 2021, Oracle and/or its affiliates サービスやシステムの利用者が、問題なく利用できる、 「安定稼働している状態」を維持する! Observability そもそも監視って?

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

13 Copyright © 2021, Oracle and/or its affiliates 背景

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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/

Slide 17

Slide 17 text

17 Copyright © 2021, Oracle and/or its affiliates What’s Observability ?

Slide 18

Slide 18 text

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(可観測性)は、人によってまたはシステムによって基準、観点、解釈の仕方が違うものなので 本セッションの内容も一例と捉えてください。

Slide 19

Slide 19 text

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(可観測性)は、クラウドネイティブなシステムを実現する一要素

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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など)、 アプリケーション、データベー スなど色々ある

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

24 Copyright © 2021, Oracle and/or its affiliates Tremetry

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Copyright © 2021, Oracle and/or its affiliates 30 Telemetry & Tool Metrics Logs Tracing

Slide 31

Slide 31 text

31 Copyright © 2021, Oracle and/or its affiliates Metrics

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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 リクエストの処理に要した時間

Slide 34

Slide 34 text

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/ 収集するメトリクス例

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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と連携してグラフ化など

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

38 Copyright © 2021, Oracle and/or its affiliates Telemetry & Tool Metrics Pull型における懸念を回避 Prometheusが収集対象のアプリケーションを見つけるために、都度エンドポイントを設定していては運用に影響がある のでは? Prometheusでは監視対象のリストを動的に更新するサービスディスカバリという仕組みで対応、またDNSの利用や ファイルに書かれた対象のリスト、静的に記載した設定なども利用可能 監視対象のIPアドレスやポート等を知ることやPodやNodeをスケールする場合はどうなる?

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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を入力、実行すると結果を表示可能 メトリクス名、ラベルフィルタリング、正規表現フィルタリ ング、関する利用など可能 ※左画像は、メトリクス名のみの例

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

45 Copyright © 2021, Oracle and/or its affiliates Telemetry & Tool Metrics Grafana Grafanaは、Prometheusと連携して監視データを高度に可視化するツールで、Webブラウザでグラフ化されたデータ をリアルタイムに確認可能

Slide 46

Slide 46 text

46 Copyright © 2021, Oracle and/or its affiliates Logs

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

50 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よりも先に削除されると 一部のログが欠損する

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

57 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へ送信する際に 参照するストア

Slide 58

Slide 58 text

58 Copyright © 2021, Oracle and/or its affiliates Traces

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

60 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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

62 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に よるメッセージングをサポート

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

64 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

Slide 65

Slide 65 text

Copyright © 2021, Oracle and/or its affiliates 65 Observability Practice Istio + Kiali + Prometheus + Grafana + Jaeger

Slide 66

Slide 66 text

66 Copyright © 2021, Oracle and/or its affiliates Observability Practice Istio + Prometheus + Grafana + Kiali + Jaeger + Loki Virtual Machine Virtual Machine Virtual Machine BookInfo

Slide 67

Slide 67 text

67 Copyright © 2021, Oracle and/or its affiliates Observability Practice Prometheus Virtual Machine Virtual Machine Virtual Machine Node Exporter node exporter Service prometheus Service node-exporterを利用して、各ノードの空きメモリ量、直近5分での各ノードの空 きメモリ量、3ノードの空きメモリ量の合計をPromQLで検索

Slide 68

Slide 68 text

68 Copyright © 2021, Oracle and/or its affiliates Observability Practice Prometheus node_memory_MemAvailable_bytes 各ノードのメモリの空き容量

Slide 69

Slide 69 text

69 Copyright © 2021, Oracle and/or its affiliates Observability Practice Prometheus node_memory_MemAvailable_bytes[3m] 直近3分での各ノードのメモリ空き容量

Slide 70

Slide 70 text

70 Copyright © 2021, Oracle and/or its affiliates Observability Practice Prometheus sum without (instance, kubernetes_node) (node_memory_MemAvailable_bytes) 3ノードの空き容量サイズ合計

Slide 71

Slide 71 text

71 Copyright © 2021, Oracle and/or its affiliates Observability Practice Prometheus

Slide 72

Slide 72 text

72 Copyright © 2021, Oracle and/or its affiliates Observability Practice Loki + Grafana Virtual Machine Virtual Machine Virtual Machine Node Exporter node exporter Service prometheus Service grafana Service loki Service Promtail GrafanaにData SourceとしてLokiの追加とlokiとistiodのログをGrafanaで確認

Slide 73

Slide 73 text

73 Copyright © 2021, Oracle and/or its affiliates Observability Practice Loki + Grafana {app=“loki”} Lokiのログを検索 ログの詳細を確認

Slide 74

Slide 74 text

74 Copyright © 2021, Oracle and/or its affiliates Observability Practice Loki + Grafana {app=“istiod”} Lokiのログを検索 ログの詳細を確認

Slide 75

Slide 75 text

75 Copyright © 2021, Oracle and/or its affiliates Observability Practice Prometheus + Grafana Virtual Machine Virtual Machine Virtual Machine Node Exporter node exporter Service prometheus Service grafana Service loki Service Promtail Istioのアドンとして、Prometheus、Grafanaがインストールさ れているので、Istio環境の状況をGrafanaで確認

Slide 76

Slide 76 text

76 Copyright © 2021, Oracle and/or its affiliates Observability Practice Prometheus + Grafana 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が利用されているが、仕様を満たして いれば差し替えも可能

Slide 77

Slide 77 text

77 Copyright © 2021, Oracle and/or its affiliates Observability Practice Prometheus + Grafana Istio Control Plane DashboardとIstio Performance Dashboardを確認

Slide 78

Slide 78 text

78 Copyright © 2021, Oracle and/or its affiliates Observability Practice Istio + BookInfo + Kiali + Jaeger Virtual Machine Virtual Machine Virtual Machine Istio環境上にBookInfoというマイクロサービスアプリケーションを 利用して、KialiでTraffic、JaegerでTracingを確認 BookInfo

Slide 79

Slide 79 text

79 Copyright © 2021, Oracle and/or its affiliates Observability Practice Istio + BookInfo + Kiali + Jaeger BookInfoは、書籍情報を表示するWebアプリケーション Details と Reviews を呼び出して、 フロントーページを生成 書評情報を持ち、Ratings を呼び出す V1:Ratings を呼び出さない V2:Ratings を呼び出して、各書評1-5の黒星表示 V3:Ratings を呼び出して、各書評1-5の赤星表示 書籍の情報を格納 書評に関連するランキング情報を持つ

Slide 80

Slide 80 text

80 Copyright © 2021, Oracle and/or its affiliates Observability Practice Istio + BookInfo + Kiali + Jaeger BookInfo

Slide 81

Slide 81 text

81 Copyright © 2021, Oracle and/or its affiliates Observability Practice Istio + BookInfo + Kiali + Jaeger 各Traceの発生時刻(横軸)、処理時間(縦軸) 各TraceのSpan情報一覧 各spanの時系列

Slide 82

Slide 82 text

Copyright © 2021, Oracle and/or its affiliates 82 Oracle’s Observability

Slide 83

Slide 83 text

Observability Practice Copyright © 2020, Oracle and/or its affiliates | Confidential: Internal/Restricted/Highly Restricted 83 Oracle’s Observability An Enterprise Container Platform • Intelligent Workload Management Across Environments • Integrated Pre-Wired Observability • Application Lifecycle Management • Integrated Security • Multi-Cluster Infrastructure Management https://verrazzano.io/

Slide 84

Slide 84 text

Traditional Applications Polyglot Microservices Copyright © 2020, Oracle and/or its affiliates | Confidential: Internal/Restricted/Highly Restricted 84 Multi-Cluster Infrastructure Management Integrated, Pre-Wired Monitoring Intelligent Workload Management Across Environments Application Lifecycle Management Integrated Security Java Microservices ohere ce Multi-Cloud Kubernetes Public Cloud Kubernetes Private Cloud Kubernetes An Enterprise Container Platform

Slide 85

Slide 85 text

85 Copyright © 2021, Oracle and/or its affiliates Verrazzano Enterprise Container Platform Observability Practice Oracle’s Observability Verrazzano in a Multicluster Environment https://verrazzano.io/docs/applications/multicluster/ Verrazzano Admin Cluster • Admin ClusterにあるVerazzano Operatorと各 Managed ClusterにあるVerrazzano Operatorが連携 • Verrazzano Enterprise Container Platformで利用で きるOSSで、各Managed Clusterを管理可能 • Verrazzano Enterprise Container Platformで利用で きるOSSについては、Oracleで有償サポート

Slide 86

Slide 86 text

Copyright © 2021, Oracle and/or its affiliates 86 参考資料

Slide 87

Slide 87 text

87 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

Slide 88

Slide 88 text

88 Copyright © 2021, Oracle and/or its affiliates 参考資料

Slide 89

Slide 89 text

89 Copyright © 2021, Oracle and/or its affiliates まとめ 常にユーザエクスペリエンスを損なうことが無いよう維持、 そして、障害やトラブルが発生した場合も速く、正確に対応できる体制も維持する! オブザバビリティは、クラウドネイティブシステムを支える

Slide 90

Slide 90 text

Thank you 90 Copyright © 2021, Oracle and/or its affiliates

Slide 91

Slide 91 text

No content