99클럽 5일차 TIL: Loki

2024. 4. 8. 18:12개발 공부

728x90
반응형

#1. 오늘의 학습 키워드

자바스프링에서 로깅을 데이터를 저장하고 조회하는 방법 - Loki

  • 개발하면서 모니터링은 필요하게 된다. 모니터링 툴 없이 로그를 조회하는 방법은 코드 자체에 log 명령어를 작성해, 실행되는 서버의 터미널에서 이를 조회하는 것인데, 이는 서버 자체에 부하를 줄 뿐 더러, 휘발성이 강하고, 가독성이 부족하기 때문에 모니터링 툴의 도움을 받아 로깅을 관리할 수 있으면 좋다.
    • 그라파나 같은 툴로 데이터를 시각화, 분석을 할 수 있다.
    • 그리고 오늘 소개할 로키와 같은 툴로 로그 데이터를 수집하고 저장할 수 있다.

#2. 공부한 내용

  • Loki
    • 그라파나 상 로그 출력 및 가시화를 할 수 있게 하는 로그 데이터 수집 툴. 수집 된 데이터는 저장이 되어 휘발되지 않는다.
      • 프로메테우스, 쿠버네티스 상 기본적으로 통합되어있으므로 단일 UI 내에서 로깅에 대한 측정, 추적, 그래프화 등 여러 작업을 할 수 있다.
      • 다양한 클라이언트에서 호환이 되기에, 간단하다.
    • Loki는 로그를 저장할 때, text로 색인을 하는 것이 아닌, 라벨로 색인이 된다.
      • 이를 통해 성능이 향상되고, 쿼리 검색 시 간편하다는 이점을 챙긴다.
    • Loki의 쿼리 언어 LogQL은, 라벨 등을 통해서 쌓인 로그들에 대해 편하게 검색할 수 있도록 도와준다.
  • Promtail
    • Loki에 로그를 저장하기 위해, Promtail을 사용하여 로그를 수집한다.
      • Loki를 위해 특별히 만들어졌다.
    • Prometheus와 동일한 서비스 검색 방식을 사용한다.
      • 따라서 프로메테우스와 유사하게 로그에 대한 라벨링, 변환, 필터링 작업을 수행할 수 있다.
  • Loki 연결 작업
    • 별도 서버에 Loki를 설치 한 후 ( 상황에 따라 로컬에다 설치하여도 무방) Grafana에서 연결
      • Connections → Data Sources → Loki → 설치된 서버 Url 등록
    • promtail config .yaml 파일을 배포 전 url을 정확히 입력한다.
      • 설치된 서버 URL로.

  • loki 서버로 로그 전송
    • 서버 URL + 로그 post uri 로 로그 전송
      • /loki/api/v1/push
      • 서버에서 http 요청을 보낼 수 있게 도와주는 WebClient 라이브러리로 해당 url 로 API 요청하면 됨
        • WebClient 에 대한 것은 추후 다루겠습니다.
    • promtail config .yaml 파일에 scrape-configs 에 job을 추가할 수 있다.
    • 이때 post method API request 이니, requestBody 에다 로그데이터를 전송하면 된다.
      • body 에 내용은 yaml 파일 설정에 따라 다름.
        • stream key 내 값은 label이 된다.
        • value key 내 값은 로그 그 자체가 된다.
  • 참조:

#3. 오늘의 회고

  • 저번에서 얘기한 것과 마찬가지로 로깅 역시 API 개발 초기에서 간과하기 쉬운 문제이다. 그러나 자신의 API가 어떤 성능을 내고 있고, 오류가 있는 지 없는 지, 에러 핸들링은 잘 하고 있는 지 판단을 하고 싶으면 로깅은 필수적이다.
  • 이번 내용은 CI/CD 와도 밀접한 측면이 있는데, 사실 회사에서는 배포와 관련된 작업을 많이 하고 있진 않지만, 학교에서 배운 분산컴퓨팅 수업에서 쿠버네티스 및 Istio를 통한 배포 경험이 있기에, 기회가 있다면 개인 프로젝트에 적용을 해볼 생각이다.
    • DevOps 구축
    • jenkins 파이프라인 구축
    • grafana 모니터링
      • 등등.. 앞으로 더 할 수 있는 건 아주 많다~!
728x90
반응형