[이스티오] Istio Envoy Proxy의 로그 및 매트릭 가져오기

2024. 11. 12. 23:48·클라우드 메모

이스티오 소개

Istio는 오픈 소스 서비스 메시이다.

 

여기서 서비스 메시란 서비스 간 모든 통신을 처리하는 소프트웨어 계층을 의미한다.

 

구현체인 Istio는 마이크로서비스 간의 트래픽 관리, 보안 강화, 정책 적용, 모니터링 및 관찰 기능을 제공한다.

 

Istio의 핵심 프록시 엔진이자 이번 글에서 주로 다룰 Envoy Proxy라는 놈이 있다.

 

Envoy는 마이크로서비스가 Pod으로 배포시 함께 배포되는 사이드카 프록시 형태로 동작한다.

 

다양한 기능을 제공하는데, 그 중 데이터 수집과 관련된 기능은 [분산 추적, 매트릭 수집, 로그 수집]이 있다.

 

Envoy Proxy의 수집 데이터를 가져와보자

이 글은 Istio가 설치되어 있고 sidecar injection이 설정되었다는 전제하에 이루어진다.

 

배포된 Pod에 컨테이너 형태로 injection 되었다면, Pod의 Proxy Config를 살펴봐야 한다.

(Envoy Proxy와 관련된 설정 부분이다)

 

현재는 아무 것도 하지 않았기 때문에 비어있다.

 

이제 Istio 자체의 Config를 수정하여 Proxy 설정을 변경해야한다.

$ kubectl edit configmap istio -n istio-sytem

 

위와 같은 명령어를 통해 istio config 파일을 수정 할 수 있다.

 

apiVersion: v1
data:
  mesh: |
    defaultConfig:
      discoveryAddress: istiod.istio-system.svc:15012
      envoyAccessLogService: # AccessLog 전송 대상 주소
        address: 전송_대상_주소:대상_포트
      envoyMetricsService: # metric 전송 대상
        address: 전송_대상_주소:대상_포트
    defaultProviders:
      accessLogs:
        - 전송_대상
      metrics:
        - 전송_대상
    enableEnvoyAccessLogService: true

 

envoyAccessLogService: gRPC를 통해 Envoy의 액세스 로그를 전송해야 하는 서비스의 주소를 명시

envoyMetricService: gRPC를 통해 Envoy의 매트릭을 전송해야 하는 서비스의 주소를 명시

enableEnvoyAccessLogService: Envoy의 gRPC 액세스 로그 서비스를 활성화하는 플래그

 

처음 사용할 때 개고생을 했던 이유가 바로 세 번째 'enableEnvoyAccessLogService' 플래그 때문이다.

 

저 플래그를 따로 true로 지정해주지 않으면,

전송 대상 서비스 주소를 지정하더라도 AccessLog를 gRPC로 전송하지 않는다.

 

Istio 공식 문서의 Proxy Config 부분을 확인해보자.

 

서비스 주소를 지정하는 필드에 대한 설명이 나타난 부분이다.

 

그러면 enableEnvoyAccessLogService를 찾아보자.

 

일단 필드 위치가 다르기 때문에 Proxy Config에 존재하지 않고, Mesh Config에 나타나 있다.

 

굉장히 뜬금없는 위치에 플래그 형태로 명시되어 있어 잘 보이지도 않는다.

 

심지어 metric은 해당 플래그가 있지도 않고, 주소 지정만 하면 gRPC로 잘 전송해줘서

AccessLog 만 수집이 안 되는 상황에 시간도 많이 뺏기고 멘탈도 나갔었다.

 

뒤늦게 문서를 뒤지다 해당 플래그를 발견해서 AccessLog 까지 성공적으로 수집할 수 있었다.

(최소한 AccessLog 관련 필드를 정리한 파트라도 있었으면 좋겠다)

 

다음에는 Envoy Proxy가 생성하고 전송해준 데이터를 어떻게 gRPC로 수집할 수 있는지 정리하겠다.

'클라우드 메모' 카테고리의 다른 글

[이스티오] Envoy Proxy와의 Stream이 끊겼을 때 (미완)  (0) 2024.11.14
[이스티오] Istio Envoy Proxy의 로그 및 매트릭 가져오기 2  (1) 2024.11.13
PaaS vs Serverless  (0) 2024.09.05
리눅스 서버 인스턴스 디스크 마운트  (0) 2024.08.17
Naver Cloud Platform으로 서버 생성하기  (0) 2023.06.23
'클라우드 메모' 카테고리의 다른 글
  • [이스티오] Envoy Proxy와의 Stream이 끊겼을 때 (미완)
  • [이스티오] Istio Envoy Proxy의 로그 및 매트릭 가져오기 2
  • PaaS vs Serverless
  • 리눅스 서버 인스턴스 디스크 마운트
csb0710
csb0710
  • csb0710
    데모장
    csb0710
  • 전체
    오늘
    어제
    • 분류 전체보기 (51)
      • 스프링부트 메모 (6)
      • 개발 메모 (3)
      • 클라우드 메모 (10)
      • 설치&설정 메모 (2)
      • 알고리즘 메모 (18)
      • 인턴 메모 (7)
      • 데이터베이스 메모 (3)
      • 책 메모 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    디비설정
    서버배포
    ELK Stack
    GitHub
    submodule
    이지퍼블리싱
    스프링부트
    서버 연결
    알고리즘
    코드트리
    티스토리챌린지
    백준
    서버생성
    오블완
    자동 답변 봇
    .gitmodules
    디비설치
    코딩테스트
    그리디
    코드트리조별과제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
csb0710
[이스티오] Istio Envoy Proxy의 로그 및 매트릭 가져오기
상단으로

티스토리툴바