Prometheusは、オープンソースの監視ツールです。デフォルトでは、PrometheusはIstioと一緒にインストールされるため、GrafanaとKialiを使用して、IstioコントロールプレーンとEnvoyが挿入されたワークロードの両方のメトリクスを表示できます。
しかし、すでにクラスタでPrometheusを実行している場合、またはIstioのPrometheusインストールに追加のカスタマイズを行う場合(たとえば、IstioのSlack通知を追加する場合)はどうすればよいでしょうか?
心配要りません。 3つの簡単な手順で、ご自身で管理しているPrometheusをIstioに持ち込むことができます。
まず、Prometheus構成を更新します。 Prometheusサーバー上のスクレイプ構成モデルに依存しており,そこでは targets
が /metrics
エンドポイントを表します。
各Istioコンポーネントの targets を追加します。これらは、Kubernetes APIサーバーを介して取得されます。たとえば、IstioのPilotコンポーネントの構成は次のとおりです。
- job_name: 'pilot'
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- istio-system
relabel_configs:
- source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: istio-pilot;http-monitoring
完全な例は、configmap.yamlをご覧ください。
次に、PrometheusのDeploymentを更新して、Istioの証明書をPrometheusにマウントします。これにより、相互TLSが有効になっている場合でも、PrometheusはIstioワークロードをスクレイピングできます。これを行うには、istio.default
SecretをPrometheusのDeployment.yamlに設定します。
volumes:
- name: config-volume
configMap:
name: prometheus
- name: istio-certs
secret:
defaultMode: 420
optional: true
secretName: istio.default
完全な例は、deployment.yamlをご覧ください。
この新しい構成でPrometheusをデプロイすると、DeploymentとServiceが別の monitoring
ネームスペースで実行されます。
$ kubectl get service -n monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus LoadBalancer 10.0.3.155 <IP> 9090:32352/TCP 21m
最後に、カスタムのPrometheusアドレスを使用するようにIstioの構成を更新します。 Istioインストールオプションを使用した Helm テンプレート
の例を次に示します。
helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--set prometheus.enabled=false \
--set kiali.enabled=true --set kiali.createDemoSecret=true \
--set kiali.prometheusAddr="http://prometheus.monitoring.svc.cluster.local:9090" \
--set "kiali.dashboard.jaegerURL=http://jaeger-query:16686" \
--set "kiali.dashboard.grafanaURL=http://grafana:3000" \
--set grafana.enabled=true \
--set grafana.datasources.datasources.datasources.url="http://prometheus.monitoring.svc.cluster.local:9090" > istio.yaml
IstioとPrometheusの両方をインストールした後、Envoyが挿入されたワークロードをクラスターにデプロイすると、PrometheusがIstioターゲットを正常にスクレイピングしていることがわかります。
Grafanaはサービスレベルの指標を取得できます。
そして、Kialiはサービスグラフを表示できます。