티스토리 뷰
linkerd-viz 배포시 기본옵션은 그라파나,프로메테우스가 다 배포되어진다
물론 해당 그라나파와 프로메테우스는 linkerd에서만 사용하므로 따로 써도 무방하나
나처럼 기존에 사용하던 그라파나와 프로메테우스를 이용하고 싶다면 아래의 방법대로 하면 된다
먼저 기존 프로메테우스에 linkerd 스크랩 정책을 추가하여 준다
{{}} 안에는 실제 사용하는 값을 넣어야함(linkerd ns)
- job_name: 'linkerd-controller'
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- '{{.Values.linkerdNamespace}}'
- '{{.Values.namespace}}'
relabel_configs:
- source_labels:
- __meta_kubernetes_pod_container_port_name
action: keep
regex: admin-http
- source_labels: [__meta_kubernetes_pod_container_name]
action: replace
target_label: component
- job_name: 'linkerd-service-mirror'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels:
- __meta_kubernetes_pod_label_linkerd_io_control_plane_component
- __meta_kubernetes_pod_container_port_name
action: keep
regex: linkerd-service-mirror;admin-http$
- source_labels: [__meta_kubernetes_pod_container_name]
action: replace
target_label: component
- job_name: 'linkerd-proxy'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels:
- __meta_kubernetes_pod_container_name
- __meta_kubernetes_pod_container_port_name
- __meta_kubernetes_pod_label_linkerd_io_control_plane_ns
action: keep
regex: ^{{default .Values.proxyContainerName "linkerd-proxy" .Values.proxyContainerName}};linkerd-admin;{{.Values.linkerdNamespace}}$
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: pod
# special case k8s' "job" label, to not interfere with prometheus' "job"
# label
# __meta_kubernetes_pod_label_linkerd_io_proxy_job=foo =>
# k8s_job=foo
- source_labels: [__meta_kubernetes_pod_label_linkerd_io_proxy_job]
action: replace
target_label: k8s_job
# drop __meta_kubernetes_pod_label_linkerd_io_proxy_job
- action: labeldrop
regex: __meta_kubernetes_pod_label_linkerd_io_proxy_job
# __meta_kubernetes_pod_label_linkerd_io_proxy_deployment=foo =>
# deployment=foo
- action: labelmap
regex: __meta_kubernetes_pod_label_linkerd_io_proxy_(.+)
# drop all labels that we just made copies of in the previous labelmap
- action: labeldrop
regex: __meta_kubernetes_pod_label_linkerd_io_proxy_(.+)
# __meta_kubernetes_pod_label_linkerd_io_foo=bar =>
# foo=bar
- action: labelmap
regex: __meta_kubernetes_pod_label_linkerd_io_(.+)
# Copy all pod labels to tmp labels
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
replacement: __tmp_pod_label_$1
# Take `linkerd_io_` prefixed labels and copy them without the prefix
- action: labelmap
regex: __tmp_pod_label_linkerd_io_(.+)
replacement: __tmp_pod_label_$1
# Drop the `linkerd_io_` originals
- action: labeldrop
regex: __tmp_pod_label_linkerd_io_(.+)
# Copy tmp labels into real labels
- action: labelmap
regex: __tmp_pod_label_(.+)
이제 위 프로메테우스와 기 배포된 grafana를 사용하도록 옵션을 주고 viz install을 수행한다
아래의 url은 실제 사용하는 url로 변경하여야 한다
linkerd viz install --set grafana.enabled=false --set grafana.url=http://kube-prometheus-stack-grafana.monitoring:3000 --set prometheusUrl=kube-prometheus-stack-prometheus.monitoring:9090 --set prometheus.enabled=false | kubectl apply -f -
메트릭 수집이 잘된다면 해당 메트릭을 그라나파에서도 볼수 있도록 아래 대시보드를 추가하여 준다
https://grafana.com/orgs/linkerd/dashboards
linkerd Dashboards | Grafana Labs
Data visualization & monitoring with support for Graphite, InfluxDB, Prometheus, Elasticsearch and many more databases
grafana.com
참고로 기본 대시보드 함수에는 scrape interval이 30초라 기본값(30초)로 배포했다면 메트릭 계산이 안되어 제대로 그래프 출력이 되지 않는다
이경우에는 함수를 30초초과로 설정하거나 scrapeinterval을 30초 미만으로 설정하면 잘 출력된다
'클라우드 > 쿠버네티스' 카테고리의 다른 글
velero를 이용한 오브젝트 복구 (0) | 2022.05.25 |
---|---|
쿠버네티스 컨테이너 런타임 Docker에서 Containerd로 (0) | 2022.05.24 |
Service Mesh 도입 테스트(linkerd) (0) | 2022.05.24 |
Descheduler 활용 (0) | 2022.05.24 |
ingress-alb 사용시 한개의 alb로 여러 네임스페이스 적용 (0) | 2022.05.24 |