본문 바로가기
WIKI 기술 지식 베이스

Grafana

원문 보기 위키 갱신

Linkerd는 온클러스터(on-cluster) 메트릭 스택 전체를 제공하며, 이를 Prometheus 인스턴스가 활용하고 이어서 Grafana 인스턴스가 활용해서 이 메트릭들의 실시간 및 과거 동작을 모두 보여 줄 수 있어요.

먼저 다양한 소스 중 하나에서 Grafana를 설치한 다음, Linkerd가 노출하는 메트릭을 소비하도록 미리 구성된 Grafana 대시보드 모음을 로드해야 해요.

Linkerd 프로덕션 팁

이 페이지는 오픈소스 커뮤니티가 제공하는 최선의 노력(best-effort) 지침이에요. 미션 크리티컬 애플리케이션의 프로덕션 사용자는 Linkerd 프로덕션 자료를 숙지하고/또는 상용 Linkerd 제공업체와 연락하는 것이 좋아요.

출처: Linkerd Grafana

본문

Prometheus 설치하기

Grafana를 설치하기 전에 Linkerd 메트릭을 소비하도록 제대로 구성된 Prometheus 인스턴스가 동작 중인지 확인하세요. Linkerd Viz 확장에는 이러한 사전 구성된 Prometheus 인스턴스가 포함되어 있으며, 직접 Prometheus를 가져올 수도 있어요.

Grafana 설치하기

가장 쉽고 권장되는 방법은 Grafana 공식 Helm 차트를 설치하는 것이에요:

`helm repo add grafana https://grafana.github.io/helm-charts
helm install grafana -n grafana --create-namespace grafana/grafana \
  -f https://raw.githubusercontent.com/linkerd/linkerd2/main/grafana/values.yaml
`

이것은 기본 values.yaml 파일을 제공받는데, 이 파일은 기본 데이터소스로 Linkerd Viz의 Prometheus 인스턴스를 구성하고, 리버스 프록시를 설정하며(자세한 내용은 아래), https://grafana.com/orgs/linkerd 에 게시된 모든 Linkerd Grafana 대시보드를 미리 로드해요.

참고

Linkerd Viz의 Prometheus 인스턴스에 대한 접근은 prometheus-admin AuthorizationPolicy를 통해 제한되며, metrics-api ServiceAccount만 접근을 허용해요. Grafana에도 접근을 허용하려면 해당 ServiceAccount를 가리키는 AuthorizationPolicy를 추가해야 해요. grafana ServiceAccount에 권한을 부여하는 authzpolicy-grafana.yaml 을 적용할 수 있어요.

더 복잡하고 프로덕션 지향적인 소스는 Grafana Operator 예요. Grafana Cloud 같은 호스팅 솔루션도 있어요. 이 프로젝트들은 https://grafana.com/orgs/linkerd 에 게시된 동일한 차트를 쉽게 가져오는 방법에 대한 지침을 제공해요.

참고

Grafana 공식 Helm 차트는 initContainer를 사용해 Linkerd의 구성과 대시보드를 다운로드해요. CNI 플러그인을 사용하고 네이티브 사이드카(Linkerd 2.20부터 기본 활성화됨)를 비활성화했다면, grafana 파드를 메시에 추가할 때 그 initContainer는 프록시가 시작되기 전에 실행되어 트래픽이 흐를 수 없어요. 이 경우 grafana 파드를 메시에 넣지 않거나, config.linkerd.io/skip-outbound-ports: "443" 어노테이션으로 아웃바운드 443 포트를 건너뛰거나, 컨테이너를 프록시의 UID로 실행하면 돼요. Allowing initContainer networking 문서를 참고하세요.

Linkerd Viz 대시보드와 Grafana 연결하기

Linkerd Viz 대시보드와 Grafana를 구성해서 전자가 관련 항목 모두에 Grafana 아이콘을 표시하고 적절한 Grafana 대시보드로의 직접 링크를 제공하도록 만드는 것은 쉬워요. 예를 들어 특정 네임스페이스의 deployment 목록을 볼 때, 동일한(그리고 더 많은) 메트릭(과 과거 동작)을 제공하는 Linkerd Deployments Grafana 대시보드로 바로 이동할 수 있어요.

클러스터 내 Grafana 인스턴스

클러스터 내 Grafana 인스턴스(위에서 언급한 Grafana Helm 차트나 Grafana Operator의 것 같은)의 경우, 샘플 grafana/values.yaml 파일처럼 리버스 프록시가 설정되어 있는지 확인하세요:

`grafana.ini:
  server:
    root_url: "%(protocol)s://%(domain)s:/grafana/"
`

그런 다음 Linkerd Viz의 values.yaml 항목인 grafana.url에서 Grafana 서비스의 위치를 참조하세요. 예를 들어 grafana 네임스페이스에 Grafana 공식 Helm 차트를 설치했다면, 다음과 같이 명령줄로 Linkerd Viz를 설치할 수 있어요:

`linkerd viz install --set grafana.url=grafana.grafana \
  | kubectl apply -f -
`

클러스터 밖 Grafana 인스턴스

Grafana Cloud 같은 호스팅 솔루션을 사용한다면, Linkerd 대시보드를 가져온 후 Linkerd Viz의 values.yaml 항목인 grafana.externalUrl에 Grafana 서비스의 전체 URL을 입력해야 해요:

`linkerd viz install --set grafana.externalUrl=https://your-co.grafana.net/ \
  | kubectl apply -f -
`

단일 Grafana 인스턴스가 여러 Linkerd 설치를 가리킨다면, 각 Linkerd 인스턴스의 grafana.uidPrefix 설정에 다른 접두사를 구성해서 대시보드를 분리할 수 있어요.

더 알아보기 (Learn more)