はじめに
Qiita記事「Instanaを使ってOpenShift上で動作するアプリのパフォーマンスを監視する (1)」の後続の記事になります。
この回では、Bee TravelsのマイクロサービスにInstanaで監視できるようにコードを埋め込み、OpenShiftクラスターにBee Travelsをデプロイするところまで取り扱います。
情報をクイックに把握されたい方向け
これからAPMやInstanaについて情報だけクイックに把握されたい方は、
Instanaで各言語をWebSite監視・トレースするために必要なこと
をインプットされると良いと思います。
特に、Node.js 、Pythonについては、コードにポインタをつけて、どの部分を挿入すべきなのか、画像で視覚化しています。
以下の3つをサクッと見て雰囲気だけ掴んでもらえればと思います。
そもそもInstanaとは?
Instanaはアプリケーション・パフォーマンス管理(APM)ツールの1つでサービスに問題が発生した時に、インフラからアプリまでの依存関係を視覚化し、どこのサービスで、ソースコードの何行目が問題があるのか原因究明コストを大幅に削減できるのが特徴なツールです。可観測性(observability)という領域のツールです。
手順
- 事前準備
- リポジトリのfork
- InstanaでのWebsite監視設定-End User Monitoring-EUM
- Instanaでのトレース
- Instanaの組み込み例:BeeTravelsアプリケーション
- OpenShiftへアプリケーションのデプロイ
- アプリケーションの接続確認
1. 事前準備
- OpenShiftクラスターを用意する。
- Docker HubのID。
- 作業用端末 に以下の2つが導入されていること
-
Instanaへのアクセス。
- SaaS版の14日間フリートライアルを上記サイトで申請して使用します。
2. リポジトリのfork
- Git Hubリポジトリ: https://github.com/IBM/instana-openshiftにアクセスし、右上の Fork ボタンをクリックしてリポジトリをフォークします。
3. InstanaでのWebsite監視設定( End User Monitoring - EUM)
Instanaで、Website監視設定を行うためには、 クライアントのブラウザからInstanaのバックエンドサーバにデータを送信するために、アプリケーションにJavaScriptを組み込む必要があります。
まず、Instanaのフリートライアル申請行い、Instanaのデプロイが終了したら
Instanaにログインしダッシュボードに接続します。 赤枠の Add Website
をクリックします。
そして 赤枠の Website Nameに、任意の名前を入力し(今回は Tok04 Bee Travels
)し Add Website
ボタンをクリックします。
Websiteをモニタリングするためのスクリプトが表示されます。保存を行うためにCopy to clipboard
ボタンをクリックしクリップボードに保存します。
クリップボードにコピーしたスクリプトをHTMLファイル: " /src/services/ui/frontend/public/index.html "の<head>
タグの間に挿入します。
これで、InstanaでフロントエンドアプリケーションのWebsite監視ができるようになりました。
これにより、アプリケーションのフロントエンドでページの読み込みやトラフィックなどを分析できるようになります。
4. Instanaでのトレース
Instanaでアプリケーションの各サービス間のトレースを行うために、以下の4つの方法を提供しています。
-
ソースコードへの変更なしにトレースできる言語 - Instana AutoTraceという独自技術
- Java、PHP、Python、.NET、Scala、Clojure
-
最低限の変更
ライブラリのimportなど
でトレースできる言語- .NET Core、NGINX、Node.js
-
- OpenTracing、OpenCensus、Jaeger、Zipkin
Instanaでアプリケーションをトレースできるようになるとサービスに対して行われた呼び出しに関する分散トレース、テレメトリ、およびその他の情報をInstanaに送信できます。さらに、個々のトレースコールを分析して、サービスが互いにどのように通信しているかを示すことができます。
以下にアクセスすると、Instanaが各BeeTravelsサービスにどのように組み込まれているかを確認できます。
5. Instanaの組み込み例:BeeTravelsアプリケーション
リポジトリをForkした段階で、BeeTravelsアプリケーションではInstanaのライブラリが組み込まれた状態になってます。
Destination Service
-
Source code: src/services/destination-v1/src/app.js (lines 14-17)
Instanaのドキュメント: Node.js Collector Configuration
Deployment yaml: config/destination-v1-deploy.yaml (lines 53-64)
Car Rental Service
Source code: src/services/car-rental-v1/src/app.js (lines 15-18)
Deployment yaml: config/carrental-v1-deploy.yaml (lines 53-64)
Hotel Service
- Source code: src/services/hotel-v1-python/app/_init_.py (lines 11-12, 28)
Pythonは InstanaではAutotrace対応なので、ソースコードの変更なしにトレース可能なのですが、Frameworkを使ったり、WSGIを利用する場合は、 上記の様にソースコードの変更が必要です。
Instanaドキュメント:WSGI & ASGI Stacks
- Deployment yaml: config/hotel-v1-python-deploy.yaml (lines 53-64)
Currency Exchange Service
Source code: src/services/currency-exchange/src/app.js (lines 14-17)
Deployment yaml: config/currencyexchange-deploy.yaml (lines 51-62)
これで、Bee TravelsアプリケーションにInstanaのコードが組み込まれていることを確認し、アプリケーションのデプロイをするだけになりました。ついに、 OpenShiftに Instana Agentを導入して、モニタリングできるようにします。
6. OpenShiftへアプリケーションのデプロイ
1. OpenShiftコンソールを開き、Copy Login Command
から OpenShiftクラスタにログインするためのコマンド(oc login...
)をコピーします。
2. 前の手順でコピーしたログインするためのコマンドをTerminalでペーストしOpenShiftクラスタにログインします。
oc login --token=sha256~xyz --server=https://aaa.bbb.ccc:111
You have access to xx projects, the list has been suppressed. You can list all projects with ' projects'
Using project "default".
Welcome! See 'oc help' to get started.
3. Terminalで build-and-deploy.sh
スクリプトを実行してBee Travelsアプリケーションをビルドし、OpenShiftクラスターにデプロイします。
注1: Terminalを起動している環境でDockerが起動している必要があります。
注2: 変数: はDocker HubのIDを入力します。
cd instana-openshift
./build-and-deploy.sh -d <DOCKERHUB_USERNAME>
build-and-deploy.sh
スクリプトの実行が完了したら、
Openshiftコンソールで Workloads
-> Pods
といどうして、Openshiftクラスターでアプリケーションが実行していることを確認します。下図の様に bee-travelsプロジェクトにPodが作成されていることを確認します。
4. Bee TravelsアプリケーションがOpenShiftにデプロイしたので、RouteをしようしてUIを外部に公開します。OpenShiftコンソールで Networking
-> Routes
の順番に移動し、 Create Route
ボタンをクリックします。
6.そして、新しく作成されたRouteのLocationのURLをメモをしておいてください。
7. アプリケーションの接続確認
ブラウザでURLにアクセスすると、下図のようなBee Travelsのアプリケーションが表示されます。tokyo
と入力し、表示されたTokyo, Japan
をクリックします。
Tokyoの案内が表示され、Hotelsの Date From
から Date To
に日程を入力すると、東京に存在しないホテルの一覧が表示されます。(サンプルデータなので)
最後に
これで、Bee Travelsアプリケーションが利用できる様になりました。
次の回では、OpenShitftクラスターに Instana Agentを導入し、Bee TravelsのアプリケーションをInstanaを使ってモニタリングしたいと思います。