実践Observability

実践Observability
株式会社ユーザベース 阿南 肇史
1
阿南 肇史 (Anan Toshifumi)
仕事:SPEEDA の SRE 担当
好き:GCP / Istio / Aerospike
Twitter:@toshanan
自己紹介
2
z
社名:株式会社ユーザベース / Uzabase, Inc.
創業:2008年4月1日
本社所在地:東京都港区六本木 7-7-7 TRI-SEVEN ROPPONGI 13F
事業内容:企業活動の意思決定を支える情報インフラの提供
上場市場:東証マザーズ( 3966)
COMPANY OVERVIEW
提供サービス:
経済情報
プラットフォーム
ソーシャル
経済メディア
スタートアップ情報
プラットフォーム
B2Bマーケティング
プラットフォーム
米クオリティ
経済メディア
サブスクリプションビ
ジネスに特化した
テーマ型ファンド
3
Contents
01 What is Observability?
02 SPEEDA Architecture
03 Use cases at SPEEDA
4
What is Observability?
可観測性
5
6
● システムの内部状態を観測できる状態にあること
● Monitoringはシステムの状態を評価すること
○ Observabilityを高めることによってより良い
Monitoringができる
What is Observability?
● 様々なパターンのエラー
○ 数パーセントのリクエストだけ500エラー or レスポンスが遅延
○ 関連するリソースの数が多いので、原因の特定が難しい
● システムの全体像が把握しづらい
○ そもそもどのサービスを経由しているのか
○ 思わぬリソースにアクセスしていることもある
7
分散システムにとってObservabilityは重要
What is Observability?
The Three Pillars of Observability
8
Traces / Metrics / Logs
What is Observability?
● Monitoring / Logging / Tracingそれぞれに
多数のOpenSourceやマネージドサービス
が存在
https://landscape.cncf.io/
9
What is Observability?
◎ Logs
● 主な形式は3つ
○ Plain Text
○ Structured (json ...)
○ Binary (Protocol Buffers ...)
10
特定の時間に発生した個別のイベントを記録するレコード
What is Observability?
◎ Metrics
● AlertingやDashboardの構築に利用
● データ量はおおよそ一定に増加
○ ユーザーのアクセス増加等と関連が薄い
● 下記のようなタイミングで増える
○ 新しいサービスが追加された
○ コンテナが増加した
11
一定間隔で計測されたデータの数値
What is Observability?
End to Endのリクエストフローを表現する(Distributed Tracing)
◎ Traces
12
● 最初のリクエストでユニークなRequestIDを発行し、それを次のホップ
に渡していく
● ServiceMeshの場合、アプリケーションはヘッダーをメッシュ内の次の
ホップに転送する
○ backendへのデータ送信はsidecarで実施
What is Observability?
一意のRequestIdを引き継いでいくことにより、各システムをTrace
13
https://istio.io/docs/tasks/observability/distributed-tracing/jaeger/
What is Observability?
14
実装コスト 小 実装コスト 大
Logs Metrics Traces
単一システム向き 分散システム向き
LogsMetrics Traces
個別リクエスト向き 全リクエスト向き
Metrics
データ量 小 データ量 大
LogsMetrics Traces
Traces Logs
環境によって異なるが、上記のような傾向がある
What is Observability?
15
What is Observability?
重要なのは Traces / Metrics / Logs だけではない
テストの観点も重要
16
● テストもObservabilityの一部
● ProductionにDeployするまでがテストではない
○ Testing in Production
What is Observability?
◎ Testing
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
What is Observability?
Observabilityをどう実現する?
SPEEDA Architecture
19
SPEEDAのアーキテクチャー
-7-
多様なニーズを持った
多様な顧客
多くの
データサプライヤー
600 万社を超える
超巨大な企業 DB
20
SPEEDA Architecture
CDNCDN
Load
Balancer
AP
tomcat
CDNCDN
RDB
MySQL
FileServer
Data
ES
on-premise # GOOD
● シンプルな構成
# BAD
● 小さな改修でも全体に影響
● 開発スピードが落ちてくる
● デプロイに時間がかかる(ようになってきた)
21
SPEEDAの歴史
Load
Balancer
Monolith AP
tomcat
# GOOD
● 機能別に開発可能
● リリース時の影響範囲が小さくなる
# BAD
● 多数のVM構築(インフラへの依頼増加)
● リソース効率が悪い
● LBのRoutingが複雑に
Internal LB
Microservice with VMs
22
SPEEDA Architecture
on-premise
Load
Balancer
Monolith AP
tomcat
Microservice with k8s
(Rancher)
Ingress
# GOOD
● インフラ構築の負担が減る
● 基本的なMetricsはDiscoveryして収集
# BAD
● Blue/Green切替は上位のLoad Balancerで実施
● リクエストの流れが把握しづらい
23
SPEEDA Architecture
on-premise
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
Data Plane
25
app
istio-proxy
app
istio-proxy
app
istio-proxy
Control Plane
Management Plane
Mixer
adapter
adapter
● 全リクエストがistio-proxyを経由
● istio-proxyからreportsをMixerに送信
● Mixerで集約し、backendに送信
SPEEDA Architecture
Use cases at SPEEDA
26
SPEEDAでのユースケース
例えば
27
Use cases at SPEEDA
28
Use cases at SPEEDA
● リクエストの全体像を把握したい
● どこで問題が発生しているか確認したい
● 外部APIへのアクセスもトレースしたい
● 過去のイベントログを集約して見たい
● 特定のユーザーのみアクセスが遅い or エラー
● リクエストの全体像を把握したい
● どこで問題が発生しているか確認したい
● 外部APIへのアクセスもトレースしたい
● 過去のイベントログを集約して見たい
● 特定のユーザーのみアクセスが遅い or エラー
29
Use cases at SPEEDA
30
画面表示が遅い場合、どこを確認する?
● CPU/Memoryが不足していないか
● データ量が多くなっている
● DBの負荷が高い
Use cases at SPEEDA
31
画面表示が遅い場合、どこを確認する?
1画面で複数のAPIと通信している場合
関連がわかりずらい
Use cases at SPEEDA
● CPU/Memoryが不足していないか
● データ量が多くなっている
● DBの負荷が高い
32
Use cases at SPEEDA
リソースだけ見ても、原因特定は難しい
33
Use cases at SPEEDA
34
Use cases at SPEEDA
Service
Deployment
35
Use cases at SPEEDA
レスポンスエラーが発生している箇所が可視化される
● リクエストの全体像を把握したい
● どこで問題が発生しているか確認したい
● 外部APIへのアクセスもトレースしたい
● 過去のイベントログを集約して見たい
● 特定のユーザーのみアクセスが遅い or エラー
36
Use cases at SPEEDA
37
istio-
ingressgateway
Kubernetes Cluster
app
istio-proxy
SaaS Endpoint
Private Endpoint
● istio-proxy(envoy) 経由で外部へ通信
● クラスター外の通信をtrace
○ SaaSのEndpoint
○ Kubernetesに乗っていないAPI
○ Databaseへの通信
クラスター外の通信もトレースできる?
Use cases at SPEEDA
38
● Service Entryを登録しておくことで、外部
エンドポイントも表示される
● Service Entryを登録していない場合は、
PassthroughCluster(Unknown) になる
Use cases at SPEEDA
www.googleapis.com
PassthroughCluster
www.googleapis.com
www.googleapis.com
39
● リクエストの全体像を把握したい
● どこで問題が発生しているか確認したい
● 外部APIへのアクセスもトレースしたい
● 過去のイベントログを集約して見たい
● 特定のユーザーのみアクセスが遅い or エラー
Use cases at SPEEDA
Kubernetes
Engine Stackdriver
Logging
BigQuery
40
Log Upload Log Export(永続化)
Use cases at SPEEDA
Kubernetes
Engine Stackdriver
Logging
BigQuery
41
Log Upload Log Export(永続化)
Use cases at SPEEDA
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
● pathに/var/log/containers/*.log を指定
● formatでjsonをparseする
○ streamにはstdout or stderr
○ logにはコンテナで出力した
ログが入る
43
Use cases at SPEEDA
Kubernetes
Engine Stackdriver
Logging
BigQuery
44
Log Upload Log Export(永続化)
Use cases at SPEEDA
45
Use cases at SPEEDA
example.com
Kubernetes
Engine Stackdriver
Logging
BigQuery
46
Log Upload Log Export(永続化)
Use cases at SPEEDA
47
● terraformで「StackdriverのログをGCPにExportする」リ
ソースを定義
● エクスポートは日次で実施
● logName/日付ごとにテーブルが作成される
Use cases at SPEEDA
48
Use cases at SPEEDA
● 日付ごとにテーブルが分けられる
● jsonPayloadの各項目を別々の
フィールドに入れてくれる
49
/v1/reports/100
/v1/search
/v1/news/101
● pathごとのレスポンスタイムを確認
○ 最大/最小/平均
○ パーセンタイル
Use cases at SPEEDA
GCP
Stackdriver
GKE #1 GKE #2 GKE #3
オンプレミス
k8s #1 k8s #2 k8s #3
GCE
fluentd-uploader
● GCP 公式の fluentd Plugin を改修し
オンプレミスのクラスタ対応を実施
50
Use cases at SPEEDA
GCP
Stackdriver
GKE #1 GKE #2 GKE #3
オンプレミス
k8s #1 k8s #2 k8s #3
GCE
fluentd-uploader
● filterで "onpre_k8s_cluster" を追加
51
Use cases at SPEEDA
GCP
Stackdriver
GKE #1 GKE #2 GKE #3
オンプレミス
k8s #1 k8s #2 k8s #3
GCE
fluentd-uploader
● オプションを付与することでオンプレ用の
タグを付与して Stackdriver に保存
52
Use cases at SPEEDA
● Stackdriver の画面からオンプレの cluster のログが閲覧可能に
53
Use cases at SPEEDA
on-pre-k8s01
on-pre-k8s02
gke01
gke02
54
● リクエストの全体像を把握したい
● どこで問題が発生しているか確認したい
● 外部APIへのアクセスもトレースしたい
● 過去のイベントログを集約して見たい
● 特定のユーザーのみアクセスが遅い or エラー
Use cases at SPEEDA
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
● api-gatewayでユーザーに関するログ
を出力
● ユーザーとrequest_idを紐付ける
● 特定ユーザーのリクエストをTrace
できる
Use cases at SPEEDA
57
Conclusion
● 分散システムにおいてObservabilityは重要
○ 問題発生後、スムーズに調査できる
○ 問題が顕在化する前に対応できる
● 実践しながら、理論に立ち返ると理解が進む
※全て完璧に出来ている訳ではないので日々updateしています...
58
Thank You
1 of 58

Recommended

2016年2月4日 空間OSのための家電制御技術と情報連携 by
2016年2月4日 空間OSのための家電制御技術と情報連携2016年2月4日 空間OSのための家電制御技術と情報連携
2016年2月4日 空間OSのための家電制御技術と情報連携aitc_jp
561 views32 slides
2016年2月4日 マンガ駆動開発によるデザインプロセス:協働プロジェクトのためのシナリオ設計 by
2016年2月4日 マンガ駆動開発によるデザインプロセス:協働プロジェクトのためのシナリオ設計2016年2月4日 マンガ駆動開発によるデザインプロセス:協働プロジェクトのためのシナリオ設計
2016年2月4日 マンガ駆動開発によるデザインプロセス:協働プロジェクトのためのシナリオ設計aitc_jp
798 views38 slides
ホロンテクノロジーが考えるHinemosによる監視運用とは by
ホロンテクノロジーが考えるHinemosによる監視運用とはホロンテクノロジーが考えるHinemosによる監視運用とは
ホロンテクノロジーが考えるHinemosによる監視運用とはHinemos
941 views22 slides
Hinemosのすゝめ(監視編) by
Hinemosのすゝめ(監視編)Hinemosのすゝめ(監視編)
Hinemosのすゝめ(監視編)Hinemos
1.7K views41 slides
Hinemosロードマップ「これまでの歩みと今後の取り組み」 by
Hinemosロードマップ「これまでの歩みと今後の取り組み」Hinemosロードマップ「これまでの歩みと今後の取り組み」
Hinemosロードマップ「これまでの歩みと今後の取り組み」Hinemos
534 views18 slides
日本のオープンデータプラットフォームをPythonでつくる by
日本のオープンデータプラットフォームをPythonでつくる日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくるYuta Kashino
18.3K views39 slides

More Related Content

Similar to 実践Observability

20120822_dstn技術交流会_DataSpider接続先技術動向 by
20120822_dstn技術交流会_DataSpider接続先技術動向20120822_dstn技術交流会_DataSpider接続先技術動向
20120822_dstn技術交流会_DataSpider接続先技術動向dstn
889 views29 slides
Iot_demo_challenger by
Iot_demo_challengerIot_demo_challenger
Iot_demo_challengeryoko tsushima
558 views20 slides
Devops days 2018 Effective feedback from OPS case study in Rakuten email service by
Devops days 2018 Effective feedback from OPS case study in Rakuten email serviceDevops days 2018 Effective feedback from OPS case study in Rakuten email service
Devops days 2018 Effective feedback from OPS case study in Rakuten email service顕志 北浦
869 views57 slides
OutSystems ユーザー会 セッション資料 by
OutSystems ユーザー会 セッション資料OutSystems ユーザー会 セッション資料
OutSystems ユーザー会 セッション資料Tsuyoshi Kawarasaki
3.7K views78 slides
Base 20141011 1_for_slideshre by
Base 20141011 1_for_slideshreBase 20141011 1_for_slideshre
Base 20141011 1_for_slideshre正善 大島
1.4K views74 slides
Use case and Live demo : Agile data integration from Legacy system to Hadoop ... by
Use case and Live demo : Agile data integration from Legacy system to Hadoop ...Use case and Live demo : Agile data integration from Legacy system to Hadoop ...
Use case and Live demo : Agile data integration from Legacy system to Hadoop ...DataWorks Summit/Hadoop Summit
1.1K views28 slides

Similar to 実践Observability(20)

20120822_dstn技術交流会_DataSpider接続先技術動向 by dstn
20120822_dstn技術交流会_DataSpider接続先技術動向20120822_dstn技術交流会_DataSpider接続先技術動向
20120822_dstn技術交流会_DataSpider接続先技術動向
dstn889 views
Devops days 2018 Effective feedback from OPS case study in Rakuten email service by 顕志 北浦
Devops days 2018 Effective feedback from OPS case study in Rakuten email serviceDevops days 2018 Effective feedback from OPS case study in Rakuten email service
Devops days 2018 Effective feedback from OPS case study in Rakuten email service
顕志 北浦869 views
OutSystems ユーザー会 セッション資料 by Tsuyoshi Kawarasaki
OutSystems ユーザー会 セッション資料OutSystems ユーザー会 セッション資料
OutSystems ユーザー会 セッション資料
Tsuyoshi Kawarasaki3.7K views
Base 20141011 1_for_slideshre by 正善 大島
Base 20141011 1_for_slideshreBase 20141011 1_for_slideshre
Base 20141011 1_for_slideshre
正善 大島1.4K views
オープンソースカンファレンスBi勉強会20141018 by Hisashi Nakayama
オープンソースカンファレンスBi勉強会20141018オープンソースカンファレンスBi勉強会20141018
オープンソースカンファレンスBi勉強会20141018
Hisashi Nakayama3.3K views
Jsai2018 by MLSE
Jsai2018Jsai2018
Jsai2018
MLSE1.1K views
データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』 by The Japan DataScientist Society
データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』
データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例 by Tsutomu Chikuba
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例
Tsutomu Chikuba1.6K views
perfを使ったPostgreSQLの解析(前編) by Daichi Egawa
perfを使ったPostgreSQLの解析(前編)perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)
Daichi Egawa8.4K views
Microsoft 365 E5 活用のススメ by 祥子 松山
Microsoft 365 E5 活用のススメMicrosoft 365 E5 活用のススメ
Microsoft 365 E5 活用のススメ
祥子 松山2.1K views
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例 by Amazon Web Services Japan
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例
Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣 by aslead
Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣
Mattermostが働き方を劇的改善!NRIの働き方改革の秘訣
aslead 1.2K views
オープンソースライセンス ケーススタディ by Yutaka Kachi
オープンソースライセンス ケーススタディオープンソースライセンス ケーススタディ
オープンソースライセンス ケーススタディ
Yutaka Kachi4.4K views
Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介 by OSSラボ株式会社
Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介
Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介
データ分析基盤について by Yuta Inamura
データ分析基盤についてデータ分析基盤について
データ分析基盤について
Yuta Inamura2.3K views
[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa by Insight Technology, Inc.
[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa
[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa

Recently uploaded

定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
121 views64 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
88 views41 slides
JJUG CCC.pptx by
JJUG CCC.pptxJJUG CCC.pptx
JJUG CCC.pptxKanta Sasaki
6 views14 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
73 views26 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
129 views42 slides

Recently uploaded(11)

Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka88 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.71 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda376 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4353 views
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga18 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)

実践Observability