728x90
기존 Prometheus는 해당 helm chart를 활용하여 설치하였다.
https://prometheus-community.github.io/helm-charts
https://sh970901.tistory.com/151
Istio Addon을 띄우기 위한 yaml 파일이 Github에 있어 이를 활용하였다. addon 파일을 그냥 apply하면 된다. 꼭 istio-system 네임스페이스에 설치하도록 하자.
export KIALI_ADDON=https://raw.githubusercontent.com/istio/istio/1.20.2/samples/addons/kiali.yaml
kubectl apply -f $KIALI_ADDON -n istio-system
만약 기존 Prometheus를 쓰지 않고 Kiali 만을 위해 구축하는 것이라며 이 또한 간단하게 설치할 수 있다.
export PROMETHEUS_ADDON=https://raw.githubusercontent.com/istio/istio/release-1.20/samples/addons/prometheus.yaml
kubectl apply -f $PROMETHEUS_ADDON -n istio-system
하지만 필자는 기존에 EKS Cluster/Nodes/Pods 모니터링을 위해 구축한 기존 Prometheus 가 있었기에 해당 Prometheus와 통합하기 위한 삽질을 기록한다.
values.yaml 파일에 additionalScrapeConfigs에 수정이 필요하다. 아래와 같이 Scrape config를 추가한다.
- 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
- job_name: 'istio-mesh'
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- istio-system
scrape_interval: 15s
relabel_configs:
- source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: istio-telemetry;prometheus
# Scrape config for envoy stats
- job_name: 'envoy-stats'
metrics_path: /stats/prometheus
kubernetes_sd_configs:
- role: pod
scrape_interval: 15s
relabel_configs:
- source_labels: [__meta_kubernetes_pod_container_port_name]
action: keep
regex: '.*-envoy-prom'
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:15090
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: pod_name
- job_name: 'istio-policy'
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- istio-system
scrape_interval: 15s
relabel_configs:
- source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: istio-policy;http-monitoring
- job_name: 'istio-telemetry'
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- istio-system
scrape_interval: 15s
relabel_configs:
- source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: istio-telemetry;http-monitoring
- job_name: 'pilot'
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- istio-system
scrape_interval: 15s
relabel_configs:
- source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: istio-pilot;http-monitoring
- job_name: 'galley'
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- istio-system
scrape_interval: 15s
relabel_configs:
- source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: istio-galley;http-monitoring
- job_name: 'citadel'
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- istio-system
scrape_interval: 15s
relabel_configs:
- source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: istio-citadel;http-monitoring
그 다음 위에서 받은 kiali.yaml 파일에 이를 참고하여 ConfigMap을 수정해야한다.
data:
config.yaml: |
external_services:
custom_dashboards:
enabled: true
istio:
root_namespace: istio-system
grafana:
url: http://prometheus-grafana.monitoring.svc.cluster.local:80
in_cluster_url: http://prometheus-grafana.monitoring.svc.cluster.local:80
prometheus:
auth:
ca_file: ''
insecure_skip_verify: false
password: ''
token: ''
type: none
use_kiali_token: false
username: ''
custom_metric_url: http://prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local:9090/
url: http://prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local:9090/
이전에 구축한 Prometheus와 Grafana의 svc주소를 external_services에 추가하는 작업을 마치면 정상적으로 Kiali 대시보드에서 메트릭을 확인할 수 있다.
Tracing 지표를 제외하고는 확인이 되는데 추가적인 addon이 필요하다. Jaeger를 많이 사용한다고 하는데 이를 설치하여 적용하는 것은 다음 포스팅에서 확인하도록 하자.
'IT' 카테고리의 다른 글
AWS Opensearch Datastream 및 ISM (3) | 2024.10.26 |
---|---|
AWS Opensearch(ElasticSearch) Data CSV 변환, S3 적재 (0) | 2024.10.26 |
쿠버네티스[EKS] Istio 설치 및 적용 [istioctl, helm, operator] (3) | 2024.10.09 |
EKS worker node SSM 접속 (0) | 2024.10.09 |
쿠버네티스[EKS] argo rollout을 이용한 Blue/Green, Canary 배포 (3) | 2024.10.09 |