티스토리 뷰

728x90

✅시작 전

❗Spring Boot 애플리케이션 내부 모니터링을 위한 환경은 구축되어 있다는 전제하에 시작하도록 할게요.❗

아직 Spring Boot 애플리케이션 내부 환경 구축이 안되신 분은 해당 게시물을 참고한 후 시작해 주세요!

현재 게시물 새로 작성 예정이라 추 후 다시 작성해서 링크 수정하도록 할 예정입니당

 -> 간단하게 설명드리면 Spring Actuator 의존성 추가해서 설정해 주시고, log back을 Loki가 받을 수 있게 설정해 주시면 됩니다.

 Spring Boot Prometheus, Grafana, Loki 등을 활용한 모니터링을 위한 환경 구축
  • loki4j를 사용해 서버 인스턴스에서 데이터를 가져오기 때문에 promtail은 사용하지 않았습니다.
  • 모니터링 인스턴스를 따로 사용하고 있으며, Docker도 사용하지 않았습니다.

Prometheus, Loki, Grafana 란?

  • Prometheus : 모니터링 및 경고 툴킷으로, metrics 형태로 데이터를 제공
  • Loki : 로그 데이터를 집계하여 제공
  • Grafana : 데이터를 시각화하는 툴로 Prometheus, Loki 등에서 수집한 데이터를 시각화함

 

Prometheus와 Loki는 데이터 수집, Grafana가 이 데이터를 시각화라고 생각하시면 됩니다.

Promtail과 Loki를 같이 쓰는 예제가 많은데, Promtail은 로그 데이터를 파일 형태로 수집하여 관리하고 이를 Loki에게 전달하는 형태로 사용합니다. 저희는 굳이 로그 데이터를 파일로 수집할 이유가 없다고 생각되어 Loki4j를 사용해서 바로 Loki가 로그를 집계하고 Grafana에서 시각화하는 방법을 사용했습니다.

 

Prometheus

Prometheus❓

Prometheus는 모니터링 및 경고 툴킷으로, 매트릭 형태로 데이터를 제공한다.

 

설치 및 설정

1. 버전 선택 및 링크 가져오기

Prometheus 다운로드

 

Download | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

prometheus.io

홈페이지에 접속해서 다운로드 링크를 따와야 합니다.

다만, 주의할 점이 사용하시는 인스턴스의 CPU 아키텍쳐에 따라 잘 선택하셔서 다운받으셔야 합니다.

(저도 ARM 아키텍쳐였는데, 이거 생각 못하고 있다가 애 좀 먹었습니다 ㅎㅎ)

 

원하시는 버전을 선택하신 다음 OS에 맞는 파일을 우클릭하셔서 링크를 가져와 주세요.

 

2. 다운로드 및 설치

cd {설치할 위치}

wget {복사한 Prometheus 다운로드 링크}

tar -xzvf {다운받은 파일}

혹시나 권한 문제가 발생할 경우 sudo 명령어를 사용해 주세요.

 

 

이렇게 하면 다운로드와 설치는 완료되었습니다.

3. prometheus.yml (작업 설정 - 선택)

설치 완료된 폴더 안의 yml 파일을 vi, nano 등을 사용해서 작성하시면 됩니다.

# prometheus.yml

# 기본적인 전역 설정
global:
  scrape_interval: 15s # 15초마다 매트릭 수집
  evaluation_interval: 15s # 15초마다 매트릭 수집
  # 타임아웃은 기본적으로 10초

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:

# Job 이름
  - job_name: "spring-actuator"
        # spring에서 설정해준 데이터 가져오는 경로
    metrics_path: '/actuator/prometheus'
        # 데이터 가져오는 주기
    scrape_interval: 10s
    static_configs:
        # 이 경로에서 수집
      - targets: ['서버 호스트:포트']

매트릭 수집과 같은 작업 설정을 해주는 과정입니다.

기본 포트가 9090으로 되어 있을 텐데 원하시는 포트가 있다면 설정해 주시면 되고, 서버 호스트가 있다면 따로 지정해 주시면 됩니다.

 

4. 시스템 서비스 등록 (자동 실행 등록 - 선택)

cd /etc/systemd/system

nano prometheus.service

자동 실행을 위해 시스템 서비스에 등록하기 위해서는 /etc/systemd/system 위치에 서비스 파일을 만들어줘야 합니다.

# prometheus.service

[Unit]
Description=Prometheus # 서비스 설명
After=network.target # 네트워크가 준비된 후에 시작

[Service]
User={유저 이름} # Prometheus를 실행할 사용자 계정
ExecStart={설치한 경로}/prometheus --config.file={설치한 경로}/prometheus.yml # 실행 명령
Restart=always # 서비스 비정상 종료 시 자동 재시작

[Install]
WantedBy=multi-user.target # 다중 사용자 모드에서 서비스 시작

 

5. 부팅 시 자동 시작 설정 (4번이 선행되어야 함 - 선택)

sudo systemctl daemon-reload # 4번에서 새로 작성한 서비스 파일 인식을 위해 리로드

sudo systemctl start prometheus # Prometheus 서비스를 시작

sudo systemctl enable prometheus # 부팅 시 자동 시작되도록 설정

sudo systemctl status prometheus # 서비스 정상 동작 확인

Loki

Loki❓

Loki는 Grafana Labs에서 만든 툴로, 로깅과 이벤트 데이터를 수집하고 저장 및 검색하기 위해 사용하는 오픈 소스 플랫폼이다.

보통 Promtail과 함께 사용해서 로그 파일로 만들어서 사용하는 경우가 많습니다.

저는 굳이 Promtail을 추가해서 로그 파일을 만들어서 관리할 필요를 못 느껴서 제외하고 바로 로그백을 Loki에서 받아서 사용했습니다.

설치 및 설정

1. 버전 선택 및 다운로드

Loki 릴리즈 노트

 

Releases · grafana/loki

Like Prometheus, but for logs. Contribute to grafana/loki development by creating an account on GitHub.

github.com

원하시는 버전 선택해 주시면 됩니다.

 

Prometheus처럼 아키텍쳐 주의해서 OS에 맞는 원하는 버전을 다운하시면 됩니다.

wget https://github.com/grafana/loki/releases/download/v2.9.1/loki-linux-arm64.zip

unzip {다운받은 파일}

 

 

unzip vs tar
어떤 분들은 Prometheus에서는 tar를 사용했는데, 여기선 왜 unzip을 사용했는지 궁금하신 분이 있을 수 있습니다.
tar은 tar형식을, unzip은 zip형식을 압축해제하기 위해 각각 사용한 것입니다.
다운 받은 파일을 자세히 보시면 형식이 다른 것을 알 수 있을 겁니다. :)

 

 

2. yaml 설정 파일 다운로드

cd {로키 파일 위치}
wget https://raw.githubusercontent.com/grafana/loki/v2.9.1/cmd/loki/loki-local-config.yaml

 

리스닝 포트 설정해 주시면 되고,

기본 포트가 3100인데, 혹시 포트 변경할 분들은 yaml 파일에서 수정하셔도 됩니다.

 

3. 실행

nohup {로키파일} -config.file={로키 yaml 파일} 2>&1 &

 

혹시나 권한 오류 뜨시는 분들은

chmod +x loki-linux-arm64

사용해서 권한 주시면 됩니당.

 

4. 시스템 서비스 등록 (자동 실행 등록 - 선택)

cd /etc/systemd/system

nano loki.service

Prometheus에서와 마찬가지로 자동 실행을 위해 시스템 서비스에 등록하기 위해서는 /etc/systemd/system 위치에 서비스 파일을 만들어줘야 합니다.

# loki.service

[Unit]
Description=Loki Service # 서비스 설명
After=network.target # 네트워크가 준비된 후에 시작

[Service]
User={유저 이름} # Loki를 실행할 사용자 계정
ExecStart={설치한 경로}/{로키파일} --config.file={설치한 경로}/loki-local-config.yaml # 실행 명령
Restart=always # 서비스 비정상 종료 시 자동 재시작

[Install]
WantedBy=multi-user.target # 다중 사용자 모드에서 서비스 시작

 

5. 부팅 시 자동 시작 설정 (4번이 선행되어야 함 - 선택)

sudo systemctl daemon-reload # 4번에서 새로 작성한 서비스 파일 인식을 위해 리로드

sudo systemctl start loki # Loki 서비스를 시작

sudo systemctl enable loki # 부팅 시 자동 시작되도록 설정

sudo systemctl status loki # 서비스 정상 동작 확인

 

Grafana

Grafana❓

Grafana는 데이터 시각화에 최적화된 대시보드를 제공하는 오픈소스 플랫폼이다.

 

Log는 Loki가, matric 데이터는 Prometheus가 Grafana에게 가져다준다.

그럼 이제 Grafana는 이를 표현해 주는 역할을 한다고 보면 됩니다.

설치 및 설정

1. 버전 선택 및 다운로드

Grafana 다운로드 링크

 

Upgrade to Grafana v10.1 | Grafana documentation

Enterprise Open source Upgrade to Grafana v10.1 We recommend that you upgrade Grafana often to stay current with the latest fixes and enhancements. Because Grafana upgrades are backward compatible, the upgrade process is straightforward, and dashboards and

grafana.com

 

 

OS와 아키텍처에 맞는 원하는 버전 선택하셔서 다운로드하시면 됩니다.

wget https://dl.grafana.com/enterprise/release/grafana-enterprise_11.1.3_arm64.deb
sudo dpkg -i grafana-enterprise_11.1.3_arm64.deb

 

2. 부팅 시 자동 시작 설정

sudo systemctl daemon-reload

sudo systemctl start grafana-server # grafana-server 서비스를 시작

sudo systemctl enable grafana-server # 부팅 시 자동 시작되도록 설정

sudo systemctl status grafana-server # 서비스 정상 동작 확인

 

기본적으로 그라파나는 3000번 포트에서 실행됩니다.

3000번 포트에 접속해서 해당 창이 보이면 성공한 겁니당.

 

이렇게 하면 각각의 설치가 완료되었습니다.

초기 아이디
ID : admin
PW : admin

📊대시보드 설정

설치가 완료된 Grafana에서 띄울 수 있게 Prometheus와 Loki를 연결해주어야 합니다.

햄버거 버튼 -> Connections -> Data sources -> Add data dource -> Prometheus/Loki

에서 연결할 수 있습니다.

 

Prometheus 연동

소스 등록

프로메테우스 검색해서 선택해 주시면 됩니다.

연결 설정

이름을 설정해 주고, Connetion 정보를 입력해 주면 됩니다.

저희는 Prometheus를 local에 설치했으므로 http://localhost:9090를 입력해 주면 됩니다.

이후 페이지 맨 밑의 Save 버튼 눌러주시면 됩니다.

 

Loki 연동

소스 등록

프로메테우스와 마찬가지로 로키 검색하셔서 선택해 주면 됩니다.

 

연결 설정

동일하게~ 이름을 설정해 주고, Connetion 정보를 입력해 주면 됩니다.

저희는 이번에도 local에 설치했으므로 http://localhost:3100를 입력해 주면 됩니다.

 

 

🎉끝🎉

이렇게 해서 모든 연결과 설정이 완료되었습니다.

이제 원하는 대로 대시보드를 구성해서 로그와 매트릭 데이터들을 확인할 수 있습니다.

 

Grafana를 사용하면 알림도 슬랙 등을 통해 설정할 수 있는데 기회가 되면 다뤄보도록 하겠습니다.

대시보드를 구성하는 게 사실 쉽진 않아서 보통 다른 사람들이 구성해 놓은 대시보드를 가져와서, 커스텀해서 사용하는 경우가 좀 많았던 거 같은데, 아래 링크 접속하셔서 원하는 대시보드 가져와서 사용하면 좋을 것 같습니다.

 

대시보드

 

Grafana dashboards | Grafana Labs

No results found. Please clear one or more filters.

grafana.com

 

 

그럼 여기서 포스팅 마치도록 하겠습니다!!

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함