だいごろうのブログ

熊本出身で大阪、東京、パリを転勤して、今は福岡でデータエンジニアです

katacodaでService Mesh with Istio: ver3 Monitoring and Tracing

Monitoring and Tracing

Prometheus と Grafana使ってるみたい。 っというか、Kubernetes周りの3rd Partyはこの2つをけっこう使ってるケースを見る。オートスケールとかPrometheusにメトリクスもたせて行ってる実装をよく目にする。

www.katacoda.com

Code

実際にyamlファイルを作成し、Prometheusにmetricsを反映させることができるみたいやな。

istioctl create -f hogehoge.yml -n istio-system

openshiftだと、このコマンドでアクセスするためのURLを取得できるみたい。

oc get routes -n istio-system

kubernetesだとどげんすっとやろ。

https://istio.io/docs/tasks/telemetry/metrics/using-istio-dashboard/

ここ見たらわかりそう。

kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 &

このコマンドのあとに、このURLにアクセスすると確認できた。たぶん、kubectlでポートを割り当てて、フォワードしてる。 http://localhost:3000/d/-vJFVqdWk/istio-mesh-dashboard?orgId=1

で、ちゃんと、メトリクスが追加されているか確認。 f:id:daigorowhite:20190903082032p:plain

Tips

  • kubectl port-forward どうやら、このコマンドは kubectlのローカルホストにフォワードする機能みたい。

使い方 Use Port Forwarding to Access Applications in a Cluster - Kubernetes

ちょっと詳細 Kubectl Reference Docs

あと、どうやって、このport forward止めるんだろうって、思ってたらどうやら、別に子プロセスをセッションに作ってるみたいだから、それをkillすればOK

$ jobs
[1]+  Running                 kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 &
$ kill -9 %1
$ jobs
[1]+  Killed: 9               kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000

Training

OpenTracingとJaegerを利用してるみたい。これは使ったことない。 というか、ビッグデータ周りを最近やってて、このMicroServiceのトレース系をあまり触る機会がなかったな。 OpenTracingは非ベンダ依存のAPIフレームワークらしい、でJaegerはTrace用のデータを収集したり、保存、可視化したりするツール。でJaegerはOpenTracing を利用して、MicroServiceからデータの収集をしてるみたい。Zipkinを参考にJaegerが作られたみたい。何が違うのかは、別途勉強。

とりあえず、書いてあることを見ると、Istioが自動的にdataを集めて、Jaegerに送信するみたい。なので、アプリはOpenTracingとかJaegerを気にしなくて良い。

とりあえず、確認結果見れたことのキャプチャを貼っておく。 非常に便利だと思った。Zipkinと比べてみたいなぁ。なんとなく、Jaegerのほうがシンプルな感じがする。今度、勉強しよう。

Search

一つのServiceのアクセス結果リストページ。全体の結果を俯瞰的に見るときに役に立つ。 f:id:daigorowhite:20190906081226p:plain

Detail

一つのクエリの詳細ページ。極端に気になるものがあった場合のボトルネックを探せそう。 f:id:daigorowhite:20190906081302p:plain

Dependencies

APIのお互いの利用回数とか、依存関係も一目瞭然! f:id:daigorowhite:20190906081443p:plain