Khi bạn cài đặt istio ở những version gần đây thì operator của istio ko con tích hợp luôn: grafana, kiali, prometheus,… Mà họ đã tách riêng thành các manifest riêng.
https://github.com/istio/istio/tree/master/samples/addons
Với istio thì họ có 2 option:
Option 1: Quick start
Option 2: Customizable install
Dưới đây là các metric mà scrape:
To gather metrics for the entire mesh, configure Prometheus to scrape:
- The control plane (
istiod
deployment) - Ingress and Egress gateways
- The Envoy sidecar
- The user applications (if they expose Prometheus metrics)
To simplify the configuration of metrics, Istio offers two modes of operation.
Option 1: Quick start
Với option này thì là mặc định và theo mình nghĩ là nó sẽ collect khá nhiều metric.
Mình chắc có lý do hết, nếu resource của bạn dồi dào thì ngại j?
Họ cũng có nhắc chúng ta: “This will deploy Prometheus into your cluster. This is intended for demonstration only, and is not tuned for performance or security.”
Để làm rõ cách mà option này lấy metrics như thế nào thì họ có nói. Option này sẽ bị disable nếu bạn config như thế này trong operator.
Giờ minh sẽ gen file manifest cho bạn coi.
To simplify configuration, Istio has the ability to control scraping entirely by prometheus.io
annotations
Chắc các bạn làm nhiều về prometheus trên k8s thì cũng không xa lạ gì điều này.
TÓm lại: prometheus nhờ các annotation prometheus.io
để colect metrics của istio và istio-ingressgateway
Trong target kubernetes-pods
Option 2: Customizable install
Các này thì try hard hơn:
Bạn sẽ sẽ tự đi config scrape_configs trong configmap của prometheus:
To scrape Istiod
stats, the following example job can be added to scrape its http-monitoring
port:
- job_name: 'istiod'
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: istiod;http-monitoring
To scrape Envoy stats, including sidecar proxies and gateway proxies, the following job can be added to scrape ports that end with -envoy-prom
:
- job_name: 'envoy-stats'
metrics_path: /stats/prometheus
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_container_port_name]
action: keep
regex: '.*-envoy-prom'
Hiện giờ thấy traffic http phẩn hồi OK
Monitor TCP vẫn hiện nhé anh em.