katacodaでService Mesh with Istio: ver3 Monitoring and Tracing
Monitoring and Tracing
Prometheus と Grafana使ってるみたい。 っというか、Kubernetes周りの3rd Partyはこの2つをけっこう使ってるケースを見る。オートスケールとかPrometheusにメトリクスもたせて行ってる実装をよく目にする。
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
で、ちゃんと、メトリクスが追加されているか確認。
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のアクセス結果リストページ。全体の結果を俯瞰的に見るときに役に立つ。
Detail
一つのクエリの詳細ページ。極端に気になるものがあった場合のボトルネックを探せそう。
Dependencies
各APIのお互いの利用回数とか、依存関係も一目瞭然!