三番煎じくらいな記事。
Tanzu Service Mesh(以下TSM)のトレース情報をAria Operations for Applications(以下AOA)に転送する方法は以下あたりに紹介記事がある。
- Enabling Distributing Tracing in TSM and Integrating with Tanzu Observability
- Tanzu Service Meshの分散トレーシングをWavefrontにフォワードする
ただ、細かい説明が記載されていなかったので、ここでは補足説明を付けながら試してみる。
TSMでIstioをインストールすると、istio-system
というNamespaceのConfigMapのistio
の中に、以下のような設定を見つけられる。
data:
mesh: |-
accessLogFile: ""
defaultConfig:
discoveryAddress: istiod.istio-system.svc:15012
proxyMetadata:
ISTIO_META_DNS_AUTO_ALLOCATE: "true"
ISTIO_META_DNS_CAPTURE: "true"
tracing:
zipkin:
address: zipkin.istio-system:9411
address: zipkin.istio-system:9411
は、Istioのドキュメントにある、--set meshConfig.defaultConfig.tracing.zipkin.address=<zipkin-collector-address>:9411
の部分であり、これでZipkinへ転送する場合の送信先を指定している。
デフォルトではzipkin.istio-system
、すなわちistio-system
Namespace内のzipkin
というサービスになっている。
このサービスを作成し、AOAのWavefront Proxyのアドレスを書いてあげることで、
Istio -> Wavefront Proxy -> AOA
という形でAOAにトレーシングデータが転送できるようになる。
最初に、Istioのトレーシング機能を有効化する。
$ kubectl edit cm istio -n istio-system
:(省略)
enableTracing: true
:(省略)
次にトレーシングのサンプリングレートを100%に引き上げる
$ kubectl edit deploy istiod -n istio-system
:(省略)
- name: PILOT_TRACE_SAMPLING
value: "100"
:
最後に、Service
を作成する。
Wavefront ProxyのService
がインストール方法によって異なるため、確認しながら作成する。
Namespaceと名前を見つけ出す。
$ kubectl get svc -A |grep wavefront
tanzu-observability-saas wavefront-proxy-tanzu ClusterIP 100.69.23.13 <none> 2878/TCP,9411/TCP 9d
Tanzu Mission Control(以下TMC)のIntegration機能を使うと、上記のようなNamespaceと名前で作成される。
次にServiceを作成する。TMCのIntegration機能を使っていない人はexternalName
で指定するServiceの名前が変わる点に注意。
cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
name: zipkin
namespace: istio-system
spec:
type: ExternalName
externalName: wavefront-proxy-tanzu.tanzu-observability-saas.svc.cluster.local
EOF
先程のistio-system
というNamespaceのConfigMapのistio
の中のZipkinの参照先がzipkin.istio-system:9411
だったため、zipkin.istio-system
の通信をwavefront-proxy-tanzu.tanzu-observability-saas.svc.cluster.local
に転送する形でexternalName
で作成する。
なお、wavefront-proxy-tanzu.tanzu-observability-saas.svc.cluster.local
は上でのkubectl get svc
の結果を見ると分かるが、デフォルトで9411ポートを利用しているので、ポートの変換などはせずにそのまま利用できる。
また、Serviceを作りたくない人は、istio-system
というNamespaceのConfigMapのistio
の中のaddress: zipkin.istio-system:9411
を直接wavefront-proxy-tanzu.tanzu-observability-saas.svc.cluster.local
に書き換えても動作する。
Service
作成後、しばらくするとAOAのApplications
-> Operation Dashboard
などからZipkinというApplication名でトレース等が確認できるようになる。