[아워메뉴] 모니터링 서버 구축 -2 (Alloy, Loki)

2025. 5. 20. 19:00·사이드 프로젝트

아워메뉴 프로젝트를 개발하면서 공부한 내용입니다

 

앞서 그라파나와 프로메테우스, CloudWatch를 통해 컴퓨팅 리소스에 대한 매트릭을 모니터링하였다.

이번에는 웹서버 로그 모니터링을 구축하고자 한다.

1. 엘로이 (Alloy)

alloy

엘로이는 그라파나에서 제공하는 모니터링 관련 리소스 수집 에이전트이다. 로그 수집 도구로는 프롬테일(Promtail)을 주로 사용한다고 알고 있고, 프롬테일을 사용할 계획이였지만, 공식 문서에서 프롬테일 대신 엘로이 사용을 권장하고 있어 엘로이를 사용하기로 결정했다.

마이그레이션 설명서도 제공한다 ㄷㄷ

기존에 로그 수집은 프롬테일에서, 매트릭 수집은 프로메테우스에서 제공한다면, 엘로이에서는 통합으로 로그 수집, 메트릭 수집 모두 지원한다. 단 엘로이는 에이전트이기 때문에 매트릭이나 로그 수집에 대해 모니터링을 위해 프로메테우스, 로키와 같은 리소스 서비를 필요로한다.

 

엘로이 또한 다른 모니터링 도구와 같은 이유로 컨테이너 위에서가 아닌 서버 자체에 설치하여 사용하기로 하였다.

아래 문서를 참고 하였다.

https://grafana.com/docs/alloy/latest/set-up/install/linux/

 

Install Grafana Alloy on Linux | Grafana Alloy documentation

Getting started with managing your metrics, logs, and traces using Grafana In this webinar, we’ll demo how to get started using the LGTM Stack: Loki for logs, Grafana for visualization, Tempo for traces, and Mimir for metrics.

grafana.com

 

엘로이 역시 systemctl 명령어를 통해 실행한다.

sudo systemctl start alloy

 

/etc/alloy/config.alloy 에서 설정 정보를 확인할 수 있다.

// Sample config for Alloy.
//
// For a full configuration reference, see https://grafana.com/docs/alloy
logging {
  level = "warn"
}

prometheus.exporter.unix "default" {
  include_exporter_metrics = true
  disable_collectors       = ["mdadm"]
}

prometheus.scrape "default" {
  targets = array.concat(
    prometheus.exporter.unix.default.targets,
    [{
      // Self-collect metrics
      job         = "alloy",
      __address__ = "127.0.0.1:12345",
    }],
  )

  forward_to = [
  // TODO: components to forward metrics to (like prometheus.remote_write or
  // prometheus.relabel).
  ]
}

 

Alloy graph

12345 포트에 접속하여 설정한 엘로이 컴포넌트 그래프를 확인할 수 있다. 다만 엘로이는 기본적으로 localhost에 대한 엑세스만 허용하고 있어 만약 외부에서 접속을 허가하기 위해서는 실행시 --server.http.listen-addr=<LISTEN_ADDR>:12345를 추가해야 한다.

 

웹서버 로그를 수집할 수 있도록 설정을 아래와 같이 변경해준다

logging {
        level="debug"
}

local.file_match "ourmenu_log_files" {
        path_targets = [{"__path__" = "/var/log/springboot/app.log"}]
        sync_period = "5s"
 }

loki.write "grafana_loki" {
  endpoint {
        url = "http://ourmenu-monitoring-server:3100/loki/api/v1/push"
  }
}

loki.source.file "log_scrape" {
   targets    = local.file_match.ourmenu_log_files.targets
   forward_to = [loki.write.grafana_loki.receiver]
}

엘로이는 로그 파일을 alloy라는 별도의 유저를 통해 접근하기 때문에 로그 파일이 alloy 유저에게 접근이 허용된지 확인해야한다.

sudo systemctl restart alloy
journalctl -u alloy.service -f

엘로이를 재실행 한뒤, 로그를 통해 큰 문제가 없으면 제대로 로그를 수집하고 있는 것이다.

2. 로키 (Loki)

로키 로그 집계 시스템이다. 시각화와 별개로 로키를 통해 로그를 관리하고, 그라파나를 통해 시각화할 수 있다. 로키 또한 동일하게 서버 자체에 설치하였다. 아래 문서를 참고 하였다.

 

https://grafana.com/docs/loki/latest/setup/install/local/

 

Install Grafana Loki locally | Grafana Loki documentation

Install Grafana Loki locally You can use Grafana Cloud to avoid installing, maintaining, and scaling your own instance of Grafana Loki. Create a free account to get started, which includes free forever access to 10k metrics, 50GB logs, 50GB traces, 500VUh

grafana.com

엘로이에서 로그 데이터를 주기적으로 로키 엔드포인트로 푸쉬하기 때문에 별도의 설정을 하지 않고 그라파나에서 데이터 소스를 추가하면된다.

데이터 소스

적절한 로키 대시보드 템플릿을 찾지 못해, 로키 대시보드는 직접 구축하였다.

직접 생성한 대시보드

아직은 로그 파일을 출력하기만 하고 별도의 분류를 하지 않고 있지만, 프로젝트를 개발하면서 조금씩 개선해 볼 예정이다

'사이드 프로젝트' 카테고리의 다른 글

[아워메뉴] K6를 사용한 부하 테스트 -1  (5) 2025.06.11
[아워메뉴] API 응답 필드 변경 대처하기  (0) 2025.05.27
[아워메뉴] 모니터링 서버 구축 -1 (Grafana, Prometheus)  (0) 2025.05.19
[Github Action] 로컬환경에서 Github Action 테스트하기  (2) 2025.04.10
[아워메뉴] ERD 설계 (엔티티 설계)  (2) 2025.02.08
'사이드 프로젝트' 카테고리의 다른 글
  • [아워메뉴] K6를 사용한 부하 테스트 -1
  • [아워메뉴] API 응답 필드 변경 대처하기
  • [아워메뉴] 모니터링 서버 구축 -1 (Grafana, Prometheus)
  • [Github Action] 로컬환경에서 Github Action 테스트하기
bluesparrow
bluesparrow
개인 공부 목적으로 작성된 블로그 입니다.
  • bluesparrow
    Bluesparrow
    bluesparrow
  • 전체
    오늘
    어제
    • 분류 전체보기 (86)
      • 회고 (3)
      • CS (16)
        • 운영체제 (1)
        • 컴퓨터구조 (2)
        • 데이터베이스 (4)
        • 네트워크 (9)
      • PS (7)
        • 백준 (7)
      • 사이드 프로젝트 (11)
      • AI (6)
        • 강화학습 (0)
        • 기계학습 (3)
      • 보안 (13)
      • Java (10)
        • 스프링 부트 (6)
      • 인프라 (3)
        • 도커 (3)
        • AWS (4)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Spring
    JPA
    a
    BFS
    이펙티브 자바
    논문
    강화학습
    컴퓨터구조
    SpringSecurity
    그래프
    회고
    자바
    트러블슈팅
    보안
    도커
    조합론
    이분탐색
    그리디
    게임이론
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
bluesparrow
[아워메뉴] 모니터링 서버 구축 -2 (Alloy, Loki)
상단으로

티스토리툴바