SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
6.
6
● システムの内部状態を観測できる状態にあること
● Monitoringはシステムの状態を評価すること
○ Observabilityを高めることによってより良い
Monitoringができる
What is Observability?
7.
● 様々なパターンのエラー
○ 数パーセントのリクエストだけ500エラー or レスポンスが遅延
○ 関連するリソースの数が多いので、原因の特定が難しい
● システムの全体像が把握しづらい
○ そもそもどのサービスを経由しているのか
○ 思わぬリソースにアクセスしていることもある
7
分散システムにとってObservabilityは重要
What is Observability?
8.
The Three Pillars of Observability
8
Traces / Metrics / Logs
What is Observability?
9.
● Monitoring / Logging / Tracingそれぞれに
多数のOpenSourceやマネージドサービス
が存在
https://landscape.cncf.io/
9
What is Observability?
10.
◎ Logs
● 主な形式は3つ
○ Plain Text
○ Structured (json ...)
○ Binary (Protocol Buffers ...)
10
特定の時間に発生した個別のイベントを記録するレコード
What is Observability?
11.
◎ Metrics
● AlertingやDashboardの構築に利用
● データ量はおおよそ一定に増加
○ ユーザーのアクセス増加等と関連が薄い
● 下記のようなタイミングで増える
○ 新しいサービスが追加された
○ コンテナが増加した
11
一定間隔で計測されたデータの数値
What is Observability?
12.
End to Endのリクエストフローを表現する(Distributed Tracing)
◎ Traces
12
● 最初のリクエストでユニークなRequestIDを発行し、それを次のホップ
に渡していく
● ServiceMeshの場合、アプリケーションはヘッダーをメッシュ内の次の
ホップに転送する
○ backendへのデータ送信はsidecarで実施
What is Observability?
13.
一意のRequestIdを引き継いでいくことにより、各システムをTrace
13
https://istio.io/docs/tasks/observability/distributed-tracing/jaeger/
What is Observability?
15.
15
What is Observability?
重要なのは Traces / Metrics / Logs だけではない
テストの観点も重要
16.
16
● テストもObservabilityの一部
● ProductionにDeployするまでがテストではない
○ Testing in Production
What is Observability?
◎ Testing
17.
17
Production Release後もテストが続く
What is Observability?
Development Deploy Release Post-Release
・Unit Test
・E2E Test
・Manual Test
・
・
・
Testing in Production
・Canary Release
・Traffic Shifting
・A/B Tests
・Monitoring
・Chaos Engineering
・
・
・
Testing in
Develop / Staging
18.
18
What is Observability?
Observabilityをどう実現する?
21.
SPEEDA Architecture
CDNCDN
Load
Balancer
AP
tomcat
CDNCDN
RDB
MySQL
FileServer
Data
ES
on-premise # GOOD
● シンプルな構成
# BAD
● 小さな改修でも全体に影響
● 開発スピードが落ちてくる
● デプロイに時間がかかる(ようになってきた)
21
SPEEDAの歴史
22.
Load
Balancer
Monolith AP
tomcat
# GOOD
● 機能別に開発可能
● リリース時の影響範囲が小さくなる
# BAD
● 多数のVM構築(インフラへの依頼増加)
● リソース効率が悪い
● LBのRoutingが複雑に
Internal LB
Microservice with VMs
22
SPEEDA Architecture
on-premise
23.
Load
Balancer
Monolith AP
tomcat
Microservice with k8s
(Rancher)
Ingress
# GOOD
● インフラ構築の負担が減る
● 基本的なMetricsはDiscoveryして収集
# BAD
● Blue/Green切替は上位のLoad Balancerで実施
● リクエストの流れが把握しづらい
23
SPEEDA Architecture
on-premise
24.
Load
Balancer
Monolith AP
tomcat
istio-
ingressgateway
istio-
ingressgateway
on-premise GCP
Microservice with k8s + Istio
# GOOD
● IstioでTraffic Routing
● Deploy Pipelineがシンプルに
● Observabilityが向上
# BAD
● 導入コストはかかる
● ProxyをInjectionすることによるトラ
ブル
● 通信自体はより複雑に
24
SPEEDA Architecture
38.
38
● Service Entryを登録しておくことで、外部
エンドポイントも表示される
● Service Entryを登録していない場合は、
PassthroughCluster(Unknown) になる
Use cases at SPEEDA
www.googleapis.com
PassthroughCluster
www.googleapis.com
www.googleapis.com
39.
39
● リクエストの全体像を把握したい
● どこで問題が発生しているか確認したい
● 外部APIへのアクセスもトレースしたい
● 過去のイベントログを集約して見たい
● 特定のユーザーのみアクセスが遅い or エラー
Use cases at SPEEDA
40.
Kubernetes
Engine Stackdriver
Logging
BigQuery
40
Log Upload Log Export(永続化)
Use cases at SPEEDA
41.
Kubernetes
Engine Stackdriver
Logging
BigQuery
41
Log Upload Log Export(永続化)
Use cases at SPEEDA
42.
Containerで標準出力(JSON形式)
kubectl logs ...
Node上のファイル(log/stream/time の JSON形式)
各Nodeの /var/log/containers/[pod_name]-[namespace]-[container_name]-[container_id].log に出力
42
Use cases at SPEEDA
43.
● pathに/var/log/containers/*.log を指定
● formatでjsonをparseする
○ streamにはstdout or stderr
○ logにはコンテナで出力した
ログが入る
43
Use cases at SPEEDA
44.
Kubernetes
Engine Stackdriver
Logging
BigQuery
44
Log Upload Log Export(永続化)
Use cases at SPEEDA
53.
● Stackdriver の画面からオンプレの cluster のログが閲覧可能に
53
Use cases at SPEEDA
on-pre-k8s01
on-pre-k8s02
gke01
gke02
54.
54
● リクエストの全体像を把握したい
● どこで問題が発生しているか確認したい
● 外部APIへのアクセスもトレースしたい
● 過去のイベントログを集約して見たい
● 特定のユーザーのみアクセスが遅い or エラー
Use cases at SPEEDA
55.
istio-proxy
api-gateway pod
● api-gateway(kong)を経由して各APIにアク
セス
● api-gatewayで認証を実施
● fluentd-agentをサイドカーで起動し、 json
形式のログを出力
kong
istio-proxy
api pod
foo-api
55
Use cases at SPEEDA
API GatewayでのLogging
56.
56
● api-gatewayでユーザーに関するログ
を出力
● ユーザーとrequest_idを紐付ける
● 特定ユーザーのリクエストをTrace
できる
Use cases at SPEEDA