狠狠撸

狠狠撸Share a Scribd company logo
? 2021 SPLUNK INC.
Splunkで実践する
Kubernetesの運用監視と
オブザーバビリティ
DevOpsDays Tokyo
池山 邦彦
シニアセールスエンジニア
Splunk Services Japan 合同会社
This presentation may contain forward-looking statements regarding future events, plans or the
expected financial performance of our company, including our expectations regarding our products,
technology, strategy, customers, markets, acquisitions and investments. These statements reflect
management’s current expectations, estimates and assumptions based on the information currently
available to us. These forward-looking statements are not guarantees of future performance and
involve significant risks, uncertainties and other factors that may cause our actual results,
performance or achievements to be materially different from results, performance or achievements
expressed or implied by the forward-looking statements contained in this presentation.
A discussion of factors that may affect future results is contained in our most recent annual report on
Form 10-K and subsequent quarterly reports on Form 10-Q, copies of which may be obtained by
visiting the Splunk Investor Relations website at www.investors.splunk.com or the SEC’s website
at www.sec.gov, including descriptions of the risk factors that may impact us and the forward-looking
statements made in this presentation. The forward-looking statements made in this presentation are
made as of the time and date of this presentation. If reviewed after the initial presentation, even if
made available by us, on our website or otherwise, it may not contain current or accurate information.
We disclaim any obligation to update or revise any forward-looking statement based on new
information, future events or otherwise, except as required by applicable law.
In addition, any information about our roadmap outlines our general product direction and is subject to
change at any time without notice. It is for informational purposes only and shall not be incorporated
into any contract or other commitment. We undertake no obligation either to develop the features or
functionalities described or to include any such feature or functionality in a future release.
Splunk, Splunk>, Data-to-Everything, D2E and Turn Data Into Doing are trademarks and registered trademarks of Splunk Inc. in the United States and
other countries. All other brand names, product names or trademarks belong to their respective owners. ? 2021 Splunk Inc. All rights reserved.
Forward-
Looking
Statements
このプレゼンテーションには、Splunkの製品、技術、戦略、顧客、市場、買収、投資の見込みを含む、当社の
将来の事象、計画、または予測される財務実績に関する将来予測記述が含まれることがあります。これらの
記述には、当社が今日入手できる情報に基づく経営幹部の現在の予想、推定、想定が反映されています。こ
れらの将来予測記述は、将来の業績を保証するものではなく、重大なリスク、不確実性、その他の要因が関
係して、実際の結果、業績、成果が、このプレゼンテーションに含まれる将来予測記述で明示または暗示され
る結果、業績、成果とは大きく異なる可能性があります。
将来の業績に影響を与える可能性のある要因についての考察は、当社に影響を与える可能性のあるリスク
要因およびこのプレゼンテーションに含まれる将来予測記述とともに、当社の最新の年次報告書(Form
10-K)およびその後の四半期報告書(Form 10-Q)に記載されていることがあります。これらの報告書は、
Splunkの投資家情報サイト(www.investors.splunk.com)または米国証券取引委員会(SEC)のWebサイト
(www.sec.gov)からダウンロードできる場合があります。このプレゼンテーションに含まれる将来予測記述
は、このプレゼンテーションが行われる時点のものです。最初のプレゼンテーション後に内容が見直され、
Webサイトなどで公開された場合でも、最新情報または正確な情報が反映されない可能性があります。当社
は、適用法で義務付けられている場合を除き、新しい情報や将来の事象などに基づいて将来予測記述を更
新または改訂する義務を負いません。
また、弊社のロードマップに関する情報で、弊社の一般的な製品方針の概要が示されていますが、この情報
は予告なしにいつでも変更されることがあります。これはあくまで参照用であって、契約またはその他の約定
に組み込まれないものとします。Splunkは、記述されている特徴または機能を開発する義務も、かかる特徴
または機能を将来のリリースに含める義務も負いません。
Splunk, Splunk>, Data-to-Everything, D2EおよびTurn Data Into Doingは、米国およびその他の国における Splunk Inc.の商標または登録商標です。他のす
べてのブランド名、製品名、もしくは商標は、それぞれの所有者に帰属します。 ? 2021 Splunk Inc. 無断複写?転載を禁じます。
将来の見通し
に関する記述
*本頁は前頁「Looking Forward
Statement」の和文抄訳です。差異があった場
合、前頁英文が優先されます。
? 2021 SPLUNK INC.
$ whoami
池山 邦彦 (いけやま くにひこ)
シニアセールスエンジニア | Splunk Services Japan 合同会社
前職ではクラウドのモニタリング製品をお客様に
提案する仕事に従事
現職はプリセールスや講演活動を通して
クラウドネイティブのオブザーバビリティ
に関するSplunk製品群の活用を提案
? 2021 SPLUNK INC.
会社概要
? 本社:米国カリフォルニア州 サンフランシスコ
? 従業員数:約 5,000+ 名
? 売上高:約 23 億ドル
? NASDAQ:SPLK(2012 年上場)
お客様
? 110 カ国以上 / 18,000 社以上
? Fortune 100 社中 92 社が利用
? 最大データ取り込み量: 10 PB / 日 以上
? 国内では約 50 TB / 日
Splunk Inc. について
会社概要
プラットフォーム IT 運用 Observability
Platform
オーケストレーター
セキュリティ(SIEM) セキュリティ(異常行動分析)
? 2021 SPLUNK INC.
プライベート パブリック
クラウドネイティブへの変革
Retain & Optimize Lift & Shift Re-Factor Re-Architect /
Cloud-Native
DEV OPS DEV OPS DEV OPS DEV OPS
クラウドマネージドの例:
Google Cloud Datastore、
BigQuery、Pub/Sub
クラウドファースト
アーキテクチャ
緊密に結合したアプリ、
長い導入サイクル
主に使用するのは
クラウドIaaS
モジュール化が進んだが、
アプリコンポーネントは相互依存
緩やかに結合したマイクロ
サービスとサーバーレス関数
VM VM VM
VM VM VM VM VM VM
パブリック
VM VM VM VM VM VM
プライベート プライベート パブリック
? 2021 SPLUNK INC.
Splunkが
ビジョナリーに
2020年ガートナーの
マジッククアドラント –
Application Performance Monitoring
にてSplunkが
ビジョナリー(Visionary)
に選出される
Gartner, 2020 Magic Quadrant for Application
Performance Monitoring, Charley Rich
and Federico de Silva, 22 April 2020.
Splunk 1年間の取り組み
APM
Oct.‘19 Mar.‘20 Apr.‘20 Oct. ‘20
Observability
Suite
? 2021 SPLUNK INC.
NoSample?
忠実な再現性
リアルタイム
ストリーミング
スケーラビリティ
AI/MLドリブンな
分析
OpenTelemetry
ユーザー体験を
可視化する
統合プラット
フォーム
監視、トラブル
シューティング、調
査、解決までの一
貫したワークフ
ロー
ログ | メトリクス | トレース
Log Investigation Incident Response
Application
Performance
Monitoring
Digital Experience
Monitoring
Infrastructure
Monitoring
Splunk Observability Suite
? 2021 SPLUNK INC.
モニタリングから
オブザーバビリティへ
クラウドネイティブ環境を
支えるための進化
? 2021 SPLUNK INC.
オブザーバビリティの3本柱
システムのオブザーバビリティを増すことでなぜそ
れが起きたのか、どう対処するのかをより早く見つ
けることを可能に
メトリクス
何が 起きているのか
トレース
どこで 問題が起きているのか ログ
なぜ 問題が発生したのか
検知
秒単位
SLI / KPI
対処
秒?分単位
依存関係と深度
根本原因
分?時間単位
より詳細なデータ
? 2021 SPLUNK INC.
(補足)オブザーバビリティについて
DevOps Hubブログに寄稿しました
- オブザーバビリティとは何か?まずはその概念を理解しよう
https://licensecounter.jp/devops-hub/blog/splunk1/
- Splunkが実現するクラウドネイティブ環境のオブザーバビリティ
https://licensecounter.jp/devops-hub/blog/splunk2/
その概念についての見解をまとめてみた
? 2021 SPLUNK INC.
ということで
実際にやってみた
? 2021 SPLUNK INC.
AWS Cloud
VPC
デモ環境
ざっくりの構成
Amazon Elastic
Kubernetes Service
Elastic Load Balancing
Amazon ElastiCache
Amazon Elasticsearch
Service
Amazon Managed
Streaming for Kafka
? 2021 SPLUNK INC.
デモ環境
Kubernetes
Classic load
balancer
Pod
Ingress
Istio Ingress Gateway
Classic load
balancer
Pod
Nginx
Nginx (React)
Pod
MongoDB
MongoDB
Chat Service
Pod
Istio Proxy
App (Golang)
Auth Service
Pod
Istio Proxy
App (Golang)
Search Service
Pod
Istio Proxy
App (Golang)
gRPC Web
g
R
P
C
W
e
b
gRPC
g
R
P
C
g
R
P
C
React
? 2021 SPLUNK INC.
デモ環境
CI/CD
PR Merge
K8s Manifest Repo
Amazon Elastic Container
Registry
commit & push
PR作成
build & push
Dev
Ops
App Repo
? 2021 SPLUNK INC.
Kubernetes監視
Splunk Infrastructure Monitoring
? 2021 SPLUNK INC.
Kubernetes
Navigator
コンテナ化された環境で
リアルタイムの
オブザーバビリティを実現
完全に自動化された
Kubernetes監視
Dynamic
Cluster Map
数秒以内で
ドリルダウン
Kubernetes
Analyzer
Logs in
Context
? 2021 SPLUNK INC.
? 設定不要、データを入れるだけ
? 自動的かつリアルタイムにKubernetesのコ
ンポーネントを検出して可視化
? K8sクラスター全体の俯瞰から各Podやコ
ンテナの負荷状況の詳細まで数クリックで
ドリルダウン
? AIドリブンな分析と問題の自動抽出
Kubernetes監視
の完全自動化
? 2021 SPLUNK INC.
Getting Data In ? メトリクス
Node
Pod
Node
Pod
Node
Pod Splunk
Observability
Suite
Agent Pod
(DaemonSet)
Kubernetes Master
Agent Pod
(DaemonSet)
Agent Pod
(DaemonSet)
kubelet kubelet kubelet
各ノードにAgent PodをデプロイしてcAdvisorからメトリクス収集
? 2021 SPLUNK INC.
Kubernetes Navigator
Node
Pod
? 2021 SPLUNK INC.
? 2021 SPLUNK INC.
ダッシュボード
Kubernetes監視のために自分で作ってみた(Node監視編)
? 2021 SPLUNK INC.
ダッシュボード
Kubernetes監視のために自分で作ってみた(Pod監視編)
? 2021 SPLUNK INC.
よくあるユースケース
いつもの運用パターン
CI / CDパイプラインでデプロイを自動化
新しいPodがデプロイできない場合、Splunkからアラート検知(PendingやFailedステータス)
SplunkでログやPod Eventを検索(後述)
いつもの Insufficient memory を発見
Kubernetes NavigatorでPodがデプロイされているNodeのリソースやPod配置状況を確認
手動でPodのリバランス
新しいPodがデプロイできない場合、Splunkからアラート検知(PendingやFailedステータス)
SplunkでログやPod Eventを検索(後述)
いつもの Insufficient memory を発見
Kubernetes NavigatorでPodがデプロイされているNodeのリソースやPod配置状況を確認
? 2021 SPLUNK INC.
Splunk APM
アプリケーション監視
? 2021 SPLUNK INC.
アーキテクチャーの変遷
● モノリスなアプリケーション
● 集約型のオンプレインフラ
● 単一の言語による開発
● 数ヶ月単位のリリース
● 特定の言語のインストルメンテーション
● スレッドにフォーカスした監視
● 限定的なデータ分析
モノリシック
アプリケーション
● 数十から数百の分散型サービス
● 分散して流動的なインフラ
● 多様な言語とフレームワーク
● 頻繁なコード変更とリリース
● 言語に依存しないインストルメンテーション
● 分散トレーシング
● スケーラブルなデータ処理とリアルタイムの分析
マイクロサービス
環境
モニタリング要
件
? 2021 SPLUNK INC.
アプリケーションの
監視とトラブル
シューティング
? サービス間の依存関係を可視化する
分散トレーシング
? パフォーマンスのボトルネックや
エラーの全体俯瞰から問題特定の
詳細ドリルダウンまで簡易な操作
? サービス全体の状態を俯瞰しながら
問題箇所を切り分け?特定
? トレース内のタグデータによるログやインフ
ラメトリクスとの相関付け
? 2021 SPLUNK INC.
Customer Svc
Book Svc
Price Svc
Review Svc
Recommendation Svc
マイクロサービスのトレース
? 2021 SPLUNK INC.
スパン
- 開始 / 終了時刻
- 属性?タグ情報
(ホスト名やエラー等)
トレース
サービス間の相互依存とパフォーマンスを可視化
分散トレーシングとは
A
B
C
D
E
A
B
C
D
E
? 2021 SPLUNK INC.
どうやってサービス間の依存関係を相関付けるの?
サービスA(クライアント)
- Trace ID
- Parent Span ID
- Span ID
- Sampling
Appライブラリ
- http
- grpc
- pubsub
etc
サービスB(サーバー)
- Trace ID
- Parent Span ID
- Span ID
- Sampling
Appライブラリ
- http
- grpc
- pubsub
etc
Trace Context Trace Context
- X-B3-TraceId
- X-B3-ParentSpanId
- X-B3-SpanId
- X-B3-Sampled
リクエストヘッダ 参考: OpenZipkin B3 Propagation
? 2021 SPLUNK INC.
OpenTelemetry
- OpenCensus と OpenTracing の規格を統合
- メトリクス、トレース、ログの取得と収集
- 各言語のクライアントライブラリやコレクター
- CNCFで2番目にコントリビューションの多い
プロジェクト
- 最大のコントリビューターはSplunk
https://opentelemetry.devstats.cncf.io/
次世代のObservabilityプロジェクト
? 2021 SPLUNK INC.
Getting Data In ? トレース
Node
Splunk
Observability
Suite
Appコンテナ Agentコンテナ
(DaemonSetで配布)
OpenTelemetry
Collector
(k8sクラスター内に
Podデプロイ)
ここに言語ごとのOpenTelemetryラ
イブラリを追加する(次頁)
アプリケーションからトレースデータをAgent経由で送信
Istio Proxy /
Istio Ingress Gateway
React
Service Mesh組み込みのト
レースをZipkin形式で
export
各クライアントから
JavaScriptトレースを送信
? 2021 SPLUNK INC.
アプリケーションにOpenTelemetry仕込んでみる
Golang編
func InitOtel(ctx context.Context) func() {
driver := otlpgrpc.NewDriver(
otlpgrpc.WithInsecure(),
otlpgrpc.WithEndpoint(fmt.Sprintf("%s:%s", otelcolHost, otelcolPort)),
otlpgrpc.WithReconnectionPeriod(5 * time.Second),
)
exporter, err := otlp.NewExporter(ctx, driver)
if err != nil {
logger.Printf(err)
}
// 以下略
}
初期化処理で以下を指定
- Exporter(トレース送信先)
- 処理方式(逐次 or バッチ)
- サービス名やその他Attribute
- B3 Propagator
func main() {
shutdown := InitOtel(ctx)
defer shutdown()
tracesi := otelgrpc.StreamServerInterceptor()
traceui := otelgrpc.UnaryServerInterceptor()
s := grpc.NewServer(
grpc.StreamInterceptor(tracesi),
grpc.UnaryInterceptor(traceui),
)
// 以下略
}
Appメイン処理(例: gRPCサーバー)
- 初期化処理を呼び出し
- OpenTelemetry gRPCライブラリをイン
ポートしてstream, unaryそれぞれの
Interceptorに追加
? 2021 SPLUNK INC.
アプリケーションにOpenTelemetry仕込んでみる
JavaScript (Web) 編
api.propagation.setGlobalPropagator(
new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER })
);
const provider = new WebTracerProvider({
plugins: [
new DocumentLoad(),
new XMLHttpRequestInstrumentation({
propagateTraceHeaderCorsUrls: [
`http://${apiHost}:${apiPort}/chat.ChatMessages/ListMessage`,
// 中略
]
})
],
});
// 中略
export default tracer;
初期化処理で以下を指定
- Exporter(トレース送信先)
- 処理方式(逐次 or バッチ)
- サービス名やその他Attribute
- B3 Propagator
- Instrumentation(React, XHR等)
import tracer from './tracing';
各コンポーネント
- React.Component の代わり
に BaseOpenTelemetryComponent を
指定
- 関数コンポーネントには使えないのが
ちょっと残念かな(2021年3月)
export default class App extends BaseOpenTelemetryComponent {
// 以下略
}
tracing.js
index.js
component/App.js
? 2021 SPLUNK INC.
けっこうエラー出てる???なんで?
React Istio Ingress
Istio Proxy
App
根本原因エラー
(塗り潰しの赤丸)
影響を受けてエラー
吐き出してる
(網掛けの赤丸)
? 2021 SPLUNK INC.
Redisでエラーに
なってるっぽい
めっちゃリトライ
がんばってる タイムアウト長くね?
リトライしすぎじゃね?
? 2021 SPLUNK INC.
よくわからんけどタイムアウトしてるな
Redis (Elasticache) のログとメトリクスも
確認しないと
エラーになってる
スパンの詳細を確認
? 2021 SPLUNK INC.
Splunk Enterprise / Cloud
ログ管理
? 2021 SPLUNK INC.
Getting Data In ? ログ
Node
Pod
Node
Pod
Node
Pod
Splunk
Enterprise
Fluentd Pod
(DaemonSet)
Kubernetes Master
Fluentd Pod
(DaemonSet)
Fluentd Pod
(DaemonSet)
kubelet kubelet kubelet
各ノードにFluentd Podをデプロイして /var/log/containers からコンテナログ収集
? 2021 SPLUNK INC.
Event Annotation
(K8s Eventとか)
ログレベルごとの
件数で集計
? 2021 SPLUNK INC.
Splunkサーチコマンドでアプリケーションログをクラスタリング
? 2021 SPLUNK INC.
k8sクラスター名やPod名で
K8s Event検索
デプロイできない原因を特定
(いつものやつね)
? 2021 SPLUNK INC.
Next up:
Real User Monitoring
? 2021 SPLUNK INC.
B
E
T
A
? 2021 SPLUNK INC.
少しだけベンダーらしい話もさせてください
最後に
? 2021 SPLUNK INC.
- ストリームアーキテクチャーによるリアルタイムの可視化とアラート
秒単位でのアラート通知やダッシュボード表示が可能に
- 異常値を捉える100%のトレース
サンプリングしないためごくわずか発生しているエラーや異常を逃さない
- サービス全体から個別のトレースまで容易なドリルダウン
マイクロサービスの全体俯瞰から問題箇所の特定までを秒?分単位で実現
- 3rdパーティーベンダーやオープンソースのソフトウェア?クラウドサービスとの
充実したエコシステム
豊富なクラウドネイティブ製品との連携やオープンソースへの貢献
- Built-inのダッシュボードやアラートテンプレートによるFast-Time-To-Value
簡単な設定でデータを入れるだけで即座に利用可能
- 統計や機械学習を用いた多様で柔軟な可視化とアラート
デフォルト設定で簡潔なアラート作成から詳細な条件指定まで可能
Why Splunk?
複雑化する環境のオブザーバビリティにSplunkが最適な理由とは
? 2021 SPLUNK INC.
従来のメトリクスアーキテクチャ
アラート
自動化
分析/可視化
ポーリング
ポーリング
ポーリング
別々の
システム
ポーリング
データサイエンス
メトリクス 時系列データベース
? サイロ化したシステムから生成される
断片的なデータ
? 拡張性に欠けるバッチの時系列DB
? 可視性が大幅に低下する継ぎ接ぎの
システム構成
従来のバッチ方式のメトリクスアーキテクチャはバッチクエリーによる遅延が顕著に
? 2021 SPLUNK INC.
Splunk IMのストリーミングアーキテクチャ
メトリクス
分析/可視化
アラート
自動化
ストリーム
統合された
プラット
フォーム
データサイエンス
メタデータ
時系列
ストリーム
数秒以内
? 2つの別個のDBでスケーラビリティ
を確保
? すぐに可視化できるストリーミング
システム
? 単一の情報源を提供する統合された
プラットフォーム
ストリーミングメトリクスアーキテクチャは秒単位でインサイトを取得可能
? 2021 SPLUNK INC.
? 2021 SPLUNK INC.
今日の内容をもっと掘り下げたい方に
実際に触れます。ワークショップへ是非。
● 2021年5月11日 (火) 12:30 - 13:00
「OpenTelemetry によるエンドツーエンドのオブザーバビリティの実現」
@ AWS Summit Online
● 2021年5月26日 (水) 10:40 - 11:10
「実践! OpenTelemetry」@Google Cloud Day
● 2021年7月15日 (木) 13:00 - 17:00  Splunk Observability ワークショップ
Splunkのイベント最新情報は→https://www.splunk.com/ja_jp/about-us/events.html 
? 2021 SPLUNK INC.
Thank You

More Related Content

厂辫濒耻苍办で実践する碍耻产别谤苍别迟别蝉の运用监视とオブザーバビリティ

  • 1. ? 2021 SPLUNK INC. Splunkで実践する Kubernetesの運用監視と オブザーバビリティ DevOpsDays Tokyo 池山 邦彦 シニアセールスエンジニア Splunk Services Japan 合同会社
  • 2. This presentation may contain forward-looking statements regarding future events, plans or the expected financial performance of our company, including our expectations regarding our products, technology, strategy, customers, markets, acquisitions and investments. These statements reflect management’s current expectations, estimates and assumptions based on the information currently available to us. These forward-looking statements are not guarantees of future performance and involve significant risks, uncertainties and other factors that may cause our actual results, performance or achievements to be materially different from results, performance or achievements expressed or implied by the forward-looking statements contained in this presentation. A discussion of factors that may affect future results is contained in our most recent annual report on Form 10-K and subsequent quarterly reports on Form 10-Q, copies of which may be obtained by visiting the Splunk Investor Relations website at www.investors.splunk.com or the SEC’s website at www.sec.gov, including descriptions of the risk factors that may impact us and the forward-looking statements made in this presentation. The forward-looking statements made in this presentation are made as of the time and date of this presentation. If reviewed after the initial presentation, even if made available by us, on our website or otherwise, it may not contain current or accurate information. We disclaim any obligation to update or revise any forward-looking statement based on new information, future events or otherwise, except as required by applicable law. In addition, any information about our roadmap outlines our general product direction and is subject to change at any time without notice. It is for informational purposes only and shall not be incorporated into any contract or other commitment. We undertake no obligation either to develop the features or functionalities described or to include any such feature or functionality in a future release. Splunk, Splunk>, Data-to-Everything, D2E and Turn Data Into Doing are trademarks and registered trademarks of Splunk Inc. in the United States and other countries. All other brand names, product names or trademarks belong to their respective owners. ? 2021 Splunk Inc. All rights reserved. Forward- Looking Statements
  • 3. このプレゼンテーションには、Splunkの製品、技術、戦略、顧客、市場、買収、投資の見込みを含む、当社の 将来の事象、計画、または予測される財務実績に関する将来予測記述が含まれることがあります。これらの 記述には、当社が今日入手できる情報に基づく経営幹部の現在の予想、推定、想定が反映されています。こ れらの将来予測記述は、将来の業績を保証するものではなく、重大なリスク、不確実性、その他の要因が関 係して、実際の結果、業績、成果が、このプレゼンテーションに含まれる将来予測記述で明示または暗示され る結果、業績、成果とは大きく異なる可能性があります。 将来の業績に影響を与える可能性のある要因についての考察は、当社に影響を与える可能性のあるリスク 要因およびこのプレゼンテーションに含まれる将来予測記述とともに、当社の最新の年次報告書(Form 10-K)およびその後の四半期報告書(Form 10-Q)に記載されていることがあります。これらの報告書は、 Splunkの投資家情報サイト(www.investors.splunk.com)または米国証券取引委員会(SEC)のWebサイト (www.sec.gov)からダウンロードできる場合があります。このプレゼンテーションに含まれる将来予測記述 は、このプレゼンテーションが行われる時点のものです。最初のプレゼンテーション後に内容が見直され、 Webサイトなどで公開された場合でも、最新情報または正確な情報が反映されない可能性があります。当社 は、適用法で義務付けられている場合を除き、新しい情報や将来の事象などに基づいて将来予測記述を更 新または改訂する義務を負いません。 また、弊社のロードマップに関する情報で、弊社の一般的な製品方針の概要が示されていますが、この情報 は予告なしにいつでも変更されることがあります。これはあくまで参照用であって、契約またはその他の約定 に組み込まれないものとします。Splunkは、記述されている特徴または機能を開発する義務も、かかる特徴 または機能を将来のリリースに含める義務も負いません。 Splunk, Splunk>, Data-to-Everything, D2EおよびTurn Data Into Doingは、米国およびその他の国における Splunk Inc.の商標または登録商標です。他のす べてのブランド名、製品名、もしくは商標は、それぞれの所有者に帰属します。 ? 2021 Splunk Inc. 無断複写?転載を禁じます。 将来の見通し に関する記述 *本頁は前頁「Looking Forward Statement」の和文抄訳です。差異があった場 合、前頁英文が優先されます。
  • 4. ? 2021 SPLUNK INC. $ whoami 池山 邦彦 (いけやま くにひこ) シニアセールスエンジニア | Splunk Services Japan 合同会社 前職ではクラウドのモニタリング製品をお客様に 提案する仕事に従事 現職はプリセールスや講演活動を通して クラウドネイティブのオブザーバビリティ に関するSplunk製品群の活用を提案
  • 5. ? 2021 SPLUNK INC. 会社概要 ? 本社:米国カリフォルニア州 サンフランシスコ ? 従業員数:約 5,000+ 名 ? 売上高:約 23 億ドル ? NASDAQ:SPLK(2012 年上場) お客様 ? 110 カ国以上 / 18,000 社以上 ? Fortune 100 社中 92 社が利用 ? 最大データ取り込み量: 10 PB / 日 以上 ? 国内では約 50 TB / 日 Splunk Inc. について 会社概要 プラットフォーム IT 運用 Observability Platform オーケストレーター セキュリティ(SIEM) セキュリティ(異常行動分析)
  • 6. ? 2021 SPLUNK INC. プライベート パブリック クラウドネイティブへの変革 Retain & Optimize Lift & Shift Re-Factor Re-Architect / Cloud-Native DEV OPS DEV OPS DEV OPS DEV OPS クラウドマネージドの例: Google Cloud Datastore、 BigQuery、Pub/Sub クラウドファースト アーキテクチャ 緊密に結合したアプリ、 長い導入サイクル 主に使用するのは クラウドIaaS モジュール化が進んだが、 アプリコンポーネントは相互依存 緩やかに結合したマイクロ サービスとサーバーレス関数 VM VM VM VM VM VM VM VM VM パブリック VM VM VM VM VM VM プライベート プライベート パブリック
  • 7. ? 2021 SPLUNK INC. Splunkが ビジョナリーに 2020年ガートナーの マジッククアドラント – Application Performance Monitoring にてSplunkが ビジョナリー(Visionary) に選出される Gartner, 2020 Magic Quadrant for Application Performance Monitoring, Charley Rich and Federico de Silva, 22 April 2020. Splunk 1年間の取り組み APM Oct.‘19 Mar.‘20 Apr.‘20 Oct. ‘20 Observability Suite
  • 8. ? 2021 SPLUNK INC. NoSample? 忠実な再現性 リアルタイム ストリーミング スケーラビリティ AI/MLドリブンな 分析 OpenTelemetry ユーザー体験を 可視化する 統合プラット フォーム 監視、トラブル シューティング、調 査、解決までの一 貫したワークフ ロー ログ | メトリクス | トレース Log Investigation Incident Response Application Performance Monitoring Digital Experience Monitoring Infrastructure Monitoring Splunk Observability Suite
  • 9. ? 2021 SPLUNK INC. モニタリングから オブザーバビリティへ クラウドネイティブ環境を 支えるための進化
  • 10. ? 2021 SPLUNK INC. オブザーバビリティの3本柱 システムのオブザーバビリティを増すことでなぜそ れが起きたのか、どう対処するのかをより早く見つ けることを可能に メトリクス 何が 起きているのか トレース どこで 問題が起きているのか ログ なぜ 問題が発生したのか 検知 秒単位 SLI / KPI 対処 秒?分単位 依存関係と深度 根本原因 分?時間単位 より詳細なデータ
  • 11. ? 2021 SPLUNK INC. (補足)オブザーバビリティについて DevOps Hubブログに寄稿しました - オブザーバビリティとは何か?まずはその概念を理解しよう https://licensecounter.jp/devops-hub/blog/splunk1/ - Splunkが実現するクラウドネイティブ環境のオブザーバビリティ https://licensecounter.jp/devops-hub/blog/splunk2/ その概念についての見解をまとめてみた
  • 12. ? 2021 SPLUNK INC. ということで 実際にやってみた
  • 13. ? 2021 SPLUNK INC. AWS Cloud VPC デモ環境 ざっくりの構成 Amazon Elastic Kubernetes Service Elastic Load Balancing Amazon ElastiCache Amazon Elasticsearch Service Amazon Managed Streaming for Kafka
  • 14. ? 2021 SPLUNK INC. デモ環境 Kubernetes Classic load balancer Pod Ingress Istio Ingress Gateway Classic load balancer Pod Nginx Nginx (React) Pod MongoDB MongoDB Chat Service Pod Istio Proxy App (Golang) Auth Service Pod Istio Proxy App (Golang) Search Service Pod Istio Proxy App (Golang) gRPC Web g R P C W e b gRPC g R P C g R P C React
  • 15. ? 2021 SPLUNK INC. デモ環境 CI/CD PR Merge K8s Manifest Repo Amazon Elastic Container Registry commit & push PR作成 build & push Dev Ops App Repo
  • 16. ? 2021 SPLUNK INC. Kubernetes監視 Splunk Infrastructure Monitoring
  • 17. ? 2021 SPLUNK INC. Kubernetes Navigator コンテナ化された環境で リアルタイムの オブザーバビリティを実現 完全に自動化された Kubernetes監視 Dynamic Cluster Map 数秒以内で ドリルダウン Kubernetes Analyzer Logs in Context
  • 18. ? 2021 SPLUNK INC. ? 設定不要、データを入れるだけ ? 自動的かつリアルタイムにKubernetesのコ ンポーネントを検出して可視化 ? K8sクラスター全体の俯瞰から各Podやコ ンテナの負荷状況の詳細まで数クリックで ドリルダウン ? AIドリブンな分析と問題の自動抽出 Kubernetes監視 の完全自動化
  • 19. ? 2021 SPLUNK INC. Getting Data In ? メトリクス Node Pod Node Pod Node Pod Splunk Observability Suite Agent Pod (DaemonSet) Kubernetes Master Agent Pod (DaemonSet) Agent Pod (DaemonSet) kubelet kubelet kubelet 各ノードにAgent PodをデプロイしてcAdvisorからメトリクス収集
  • 20. ? 2021 SPLUNK INC. Kubernetes Navigator Node Pod
  • 22. ? 2021 SPLUNK INC. ダッシュボード Kubernetes監視のために自分で作ってみた(Node監視編)
  • 23. ? 2021 SPLUNK INC. ダッシュボード Kubernetes監視のために自分で作ってみた(Pod監視編)
  • 24. ? 2021 SPLUNK INC. よくあるユースケース いつもの運用パターン CI / CDパイプラインでデプロイを自動化 新しいPodがデプロイできない場合、Splunkからアラート検知(PendingやFailedステータス) SplunkでログやPod Eventを検索(後述) いつもの Insufficient memory を発見 Kubernetes NavigatorでPodがデプロイされているNodeのリソースやPod配置状況を確認 手動でPodのリバランス 新しいPodがデプロイできない場合、Splunkからアラート検知(PendingやFailedステータス) SplunkでログやPod Eventを検索(後述) いつもの Insufficient memory を発見 Kubernetes NavigatorでPodがデプロイされているNodeのリソースやPod配置状況を確認
  • 25. ? 2021 SPLUNK INC. Splunk APM アプリケーション監視
  • 26. ? 2021 SPLUNK INC. アーキテクチャーの変遷 ● モノリスなアプリケーション ● 集約型のオンプレインフラ ● 単一の言語による開発 ● 数ヶ月単位のリリース ● 特定の言語のインストルメンテーション ● スレッドにフォーカスした監視 ● 限定的なデータ分析 モノリシック アプリケーション ● 数十から数百の分散型サービス ● 分散して流動的なインフラ ● 多様な言語とフレームワーク ● 頻繁なコード変更とリリース ● 言語に依存しないインストルメンテーション ● 分散トレーシング ● スケーラブルなデータ処理とリアルタイムの分析 マイクロサービス 環境 モニタリング要 件
  • 27. ? 2021 SPLUNK INC. アプリケーションの 監視とトラブル シューティング ? サービス間の依存関係を可視化する 分散トレーシング ? パフォーマンスのボトルネックや エラーの全体俯瞰から問題特定の 詳細ドリルダウンまで簡易な操作 ? サービス全体の状態を俯瞰しながら 問題箇所を切り分け?特定 ? トレース内のタグデータによるログやインフ ラメトリクスとの相関付け
  • 28. ? 2021 SPLUNK INC. Customer Svc Book Svc Price Svc Review Svc Recommendation Svc マイクロサービスのトレース
  • 29. ? 2021 SPLUNK INC. スパン - 開始 / 終了時刻 - 属性?タグ情報 (ホスト名やエラー等) トレース サービス間の相互依存とパフォーマンスを可視化 分散トレーシングとは A B C D E A B C D E
  • 30. ? 2021 SPLUNK INC. どうやってサービス間の依存関係を相関付けるの? サービスA(クライアント) - Trace ID - Parent Span ID - Span ID - Sampling Appライブラリ - http - grpc - pubsub etc サービスB(サーバー) - Trace ID - Parent Span ID - Span ID - Sampling Appライブラリ - http - grpc - pubsub etc Trace Context Trace Context - X-B3-TraceId - X-B3-ParentSpanId - X-B3-SpanId - X-B3-Sampled リクエストヘッダ 参考: OpenZipkin B3 Propagation
  • 31. ? 2021 SPLUNK INC. OpenTelemetry - OpenCensus と OpenTracing の規格を統合 - メトリクス、トレース、ログの取得と収集 - 各言語のクライアントライブラリやコレクター - CNCFで2番目にコントリビューションの多い プロジェクト - 最大のコントリビューターはSplunk https://opentelemetry.devstats.cncf.io/ 次世代のObservabilityプロジェクト
  • 32. ? 2021 SPLUNK INC. Getting Data In ? トレース Node Splunk Observability Suite Appコンテナ Agentコンテナ (DaemonSetで配布) OpenTelemetry Collector (k8sクラスター内に Podデプロイ) ここに言語ごとのOpenTelemetryラ イブラリを追加する(次頁) アプリケーションからトレースデータをAgent経由で送信 Istio Proxy / Istio Ingress Gateway React Service Mesh組み込みのト レースをZipkin形式で export 各クライアントから JavaScriptトレースを送信
  • 33. ? 2021 SPLUNK INC. アプリケーションにOpenTelemetry仕込んでみる Golang編 func InitOtel(ctx context.Context) func() { driver := otlpgrpc.NewDriver( otlpgrpc.WithInsecure(), otlpgrpc.WithEndpoint(fmt.Sprintf("%s:%s", otelcolHost, otelcolPort)), otlpgrpc.WithReconnectionPeriod(5 * time.Second), ) exporter, err := otlp.NewExporter(ctx, driver) if err != nil { logger.Printf(err) } // 以下略 } 初期化処理で以下を指定 - Exporter(トレース送信先) - 処理方式(逐次 or バッチ) - サービス名やその他Attribute - B3 Propagator func main() { shutdown := InitOtel(ctx) defer shutdown() tracesi := otelgrpc.StreamServerInterceptor() traceui := otelgrpc.UnaryServerInterceptor() s := grpc.NewServer( grpc.StreamInterceptor(tracesi), grpc.UnaryInterceptor(traceui), ) // 以下略 } Appメイン処理(例: gRPCサーバー) - 初期化処理を呼び出し - OpenTelemetry gRPCライブラリをイン ポートしてstream, unaryそれぞれの Interceptorに追加
  • 34. ? 2021 SPLUNK INC. アプリケーションにOpenTelemetry仕込んでみる JavaScript (Web) 編 api.propagation.setGlobalPropagator( new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }) ); const provider = new WebTracerProvider({ plugins: [ new DocumentLoad(), new XMLHttpRequestInstrumentation({ propagateTraceHeaderCorsUrls: [ `http://${apiHost}:${apiPort}/chat.ChatMessages/ListMessage`, // 中略 ] }) ], }); // 中略 export default tracer; 初期化処理で以下を指定 - Exporter(トレース送信先) - 処理方式(逐次 or バッチ) - サービス名やその他Attribute - B3 Propagator - Instrumentation(React, XHR等) import tracer from './tracing'; 各コンポーネント - React.Component の代わり に BaseOpenTelemetryComponent を 指定 - 関数コンポーネントには使えないのが ちょっと残念かな(2021年3月) export default class App extends BaseOpenTelemetryComponent { // 以下略 } tracing.js index.js component/App.js
  • 35. ? 2021 SPLUNK INC. けっこうエラー出てる???なんで? React Istio Ingress Istio Proxy App 根本原因エラー (塗り潰しの赤丸) 影響を受けてエラー 吐き出してる (網掛けの赤丸)
  • 36. ? 2021 SPLUNK INC. Redisでエラーに なってるっぽい めっちゃリトライ がんばってる タイムアウト長くね? リトライしすぎじゃね?
  • 37. ? 2021 SPLUNK INC. よくわからんけどタイムアウトしてるな Redis (Elasticache) のログとメトリクスも 確認しないと エラーになってる スパンの詳細を確認
  • 38. ? 2021 SPLUNK INC. Splunk Enterprise / Cloud ログ管理
  • 39. ? 2021 SPLUNK INC. Getting Data In ? ログ Node Pod Node Pod Node Pod Splunk Enterprise Fluentd Pod (DaemonSet) Kubernetes Master Fluentd Pod (DaemonSet) Fluentd Pod (DaemonSet) kubelet kubelet kubelet 各ノードにFluentd Podをデプロイして /var/log/containers からコンテナログ収集
  • 40. ? 2021 SPLUNK INC. Event Annotation (K8s Eventとか) ログレベルごとの 件数で集計
  • 41. ? 2021 SPLUNK INC. Splunkサーチコマンドでアプリケーションログをクラスタリング
  • 42. ? 2021 SPLUNK INC. k8sクラスター名やPod名で K8s Event検索 デプロイできない原因を特定 (いつものやつね)
  • 43. ? 2021 SPLUNK INC. Next up: Real User Monitoring
  • 44. ? 2021 SPLUNK INC. B E T A
  • 45. ? 2021 SPLUNK INC. 少しだけベンダーらしい話もさせてください 最後に
  • 46. ? 2021 SPLUNK INC. - ストリームアーキテクチャーによるリアルタイムの可視化とアラート 秒単位でのアラート通知やダッシュボード表示が可能に - 異常値を捉える100%のトレース サンプリングしないためごくわずか発生しているエラーや異常を逃さない - サービス全体から個別のトレースまで容易なドリルダウン マイクロサービスの全体俯瞰から問題箇所の特定までを秒?分単位で実現 - 3rdパーティーベンダーやオープンソースのソフトウェア?クラウドサービスとの 充実したエコシステム 豊富なクラウドネイティブ製品との連携やオープンソースへの貢献 - Built-inのダッシュボードやアラートテンプレートによるFast-Time-To-Value 簡単な設定でデータを入れるだけで即座に利用可能 - 統計や機械学習を用いた多様で柔軟な可視化とアラート デフォルト設定で簡潔なアラート作成から詳細な条件指定まで可能 Why Splunk? 複雑化する環境のオブザーバビリティにSplunkが最適な理由とは
  • 47. ? 2021 SPLUNK INC. 従来のメトリクスアーキテクチャ アラート 自動化 分析/可視化 ポーリング ポーリング ポーリング 別々の システム ポーリング データサイエンス メトリクス 時系列データベース ? サイロ化したシステムから生成される 断片的なデータ ? 拡張性に欠けるバッチの時系列DB ? 可視性が大幅に低下する継ぎ接ぎの システム構成 従来のバッチ方式のメトリクスアーキテクチャはバッチクエリーによる遅延が顕著に
  • 48. ? 2021 SPLUNK INC. Splunk IMのストリーミングアーキテクチャ メトリクス 分析/可視化 アラート 自動化 ストリーム 統合された プラット フォーム データサイエンス メタデータ 時系列 ストリーム 数秒以内 ? 2つの別個のDBでスケーラビリティ を確保 ? すぐに可視化できるストリーミング システム ? 単一の情報源を提供する統合された プラットフォーム ストリーミングメトリクスアーキテクチャは秒単位でインサイトを取得可能
  • 50. ? 2021 SPLUNK INC. 今日の内容をもっと掘り下げたい方に 実際に触れます。ワークショップへ是非。 ● 2021年5月11日 (火) 12:30 - 13:00 「OpenTelemetry によるエンドツーエンドのオブザーバビリティの実現」 @ AWS Summit Online ● 2021年5月26日 (水) 10:40 - 11:10 「実践! OpenTelemetry」@Google Cloud Day ● 2021年7月15日 (木) 13:00 - 17:00  Splunk Observability ワークショップ Splunkのイベント最新情報は→https://www.splunk.com/ja_jp/about-us/events.html 
  • 51. ? 2021 SPLUNK INC. Thank You