{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "from IPython.display import HTML # slide内で埋め込みが出来るように" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# OpenCensusとJaegerで分散トレーシングを見てみよう\n", "\n", "[@grimrose](https://twitter.com/grimrose) \n", "\n", "@[JapanContainerDays v18.12](https://containerdays.jp/)\n", "\n", "2018-12-04" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 今日話すこと\n", "\n", "マイクロサービス化されたアプリケーションでは、パフォーマンス測定の一つとして分散トレーシングが挙げられます。 \n", "\n", "APIサーバを構築した際に、他のサービスとのやり取りを含め全体のパフォーマンスを可視化するには、分散トレーシングの仕組みに載せる必要が出てきます。 \n", "\n", "そこで、[OpenCensus](https://opencensus.io)と[Jaeger](https://www.jaegertracing.io/)を用いて、Akka HTTPのAPIサーバを例に分散トレーシングの可視化を紹介します。" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## お前、誰よ" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### お前、誰よ\n", "\n", "よしだ\n", "\n", "* twitter: [@grimrose](https://twitter.com/grimrose)\n", "* github: [grimrose](https://github.com/grimrose)\n", "* とある人材紹介会社\n", " * マーケティング部門のデータエンジニア(自称)\n", "* community: \n", " * [TDDBC](http://devtesting.jp/tddbc/)\n", " * [ScalaMatsuri](scalamatsuri.org) 2016, 2017, 2018, 2019 スタッフ" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 普段の仕事\n", "\n", "#### 設計から運用\n", "\n", "* 事業KPIの可視化を行うためのWebアプリケーション\n", "* Scalaを使った日次や月次の集計バッチを実行するアプリケーション\n", "* 帳票と呼ばれるExcelや外部APIなどからデータベースへデータを投入するツール\n", "* 部門の日常業務を改善するためのちょっとしたツール\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 普段の仕事\n", "\n", "#### その他\n", "\n", "* 先述のアプリケーションをAWSで運用する基盤の構築" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 今回のテーマ\n", "\n", "**APIサーバのアプリケーションの監視の必要に迫られた人**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 背景\n", "\n", "**どの処理にどれくらい時間がかかっているかを知りたい。**\n", "\n", "* 本番環境はコンテナで動かしているので、SSHで入ってログファイルをtailしてなんてのは無理。\n", "* ログには出力しているが、整理しながら見るにはシェル芸や超絶技巧検索スキルを駆使する必要がある。\n", "* 時系列で可視化しておいて、後で見たい。また、自分以外が見られるようにしたい。\n", "* 他のHTTPサービスとやり取りしてると、どこがボトルネックなのか分かりづらい。\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## そこで\n", "\n", "分散トレーシングで可視化しよう" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 分散トレーシングについて" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "