로그 모니터링 시스템 구축

sojukang·2022년 10월 20일
0
post-custom-banner

목적

문제 상황

기존 로그 확인을 위해서는 Inbound 규칙에 의해 지정된 IP에서 서버 인스턴스에 접근하여 Log 파일을 직접 확인해야했다. 로그 확인을 위해 인스턴스 접근 -> 경로 접근 -> Log 파일 Read의 단계가 필요했기 때문에 대응에 시간이 걸렸고 재택인 경우 확인할 수 없는 문제가 있었다. 또한 각기 다른 인스턴스와 경로에 위치하는 Log 파일을 모아보는 시스템이 구축되어 있지 않았다.

대응

따라서 로그 모니터링 시스템은 다음 이유로 구축한다.

  1. 여러 서버 인스턴스의 로그 수집 일원화
  2. 기존 모니터링 시스템과 로그 모니터링 통합
  3. Alerting 기능을 Application에서 분리하여 모니터링 시스템으로 책임 분리

구성

Loki, Promtail - Grafana

Loki 는 Grafana에서 제공하는 오픈소스 기반의 로그 집계 시스템이다.
로그의 레이블만 인덱싱하고 원본 로그 메시지는 인덱싱하지 않아 자원소모가 적어 효율적인 운영을 할 수 있다.

Loki는 로그 집계 시스템이며, Loki에게 로그를 전송해줄 Promtail이 필요하다.
Promtail은 수집하려는 서버에서 동작하며 Loki에 Http Request를 통해 로그를 주기적으로 전송한다.

그리고 구축된 모니터링 시각화 툴인 Grafana를 통해 Loki를 DataSource로 등록하여 대시보드를 구성하고 시각화한다.

설치 과정

In order to run Loki, you must:

  1. Download and install both Loki and Promtail.
  2. Download config files for both programs.
  3. Start Loki.
  4. Update the Promtail config file to get your logs into Loki.
  5. Start Promtail.

Loki

Loki 서버에 Loki를 받아준다.

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

Loki를 위한 설정 파일도 받아준다.

wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml

unzip이 설치되어있지 않다면 설치한다.

sudo apt install unzip

zip파일을 풀고 Loki의 설정을 해보자.

sudo vim loki-local-config.yaml

http listen port 등 설정을 변경할 수 있다.

다음 명령으로 실행시켜준다.

nohup ./loki-linux-arm64 -config.file=loki-local-config.yaml &

Promtail

수집을 원하는 서버에 Promtail을 설치해준다.
promtail release

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

위와 같이 압축을 풀고 설정 파일도 받아준다.

wget https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml

서버 환경에 맞게 설정 파일을 수정해준다.

server:
  http_listen_port: ${http listen port}
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://${loki server ip}:${port}/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - logs
    labels:
      job: ${job name}
      __path__: ${log file path}

다음 명령어로 Promtail을 실행해준다.

nohup ./promtail-linux-arm64 -config.file=promtail-local-config.yaml &

Grafana

Grafana에서 Loki Datasource를 설정해주자.

Url에 ${loki server ip}:${port}를 넣어주고 테스트한 뒤, 정상적으로 기능한다면 DataSource를 등록해준다.

새로운 대시보드를 구성해준다.

Logs visualizations를 설정해준다.

Promtail Config에서 설정한 job label을 찾고, filtering이 필요하면 수행하여 로그를 수집하여 모니터링한다.

구성한 대시보드의 예시이다. 여러 로그들을 일원화하여 모니터링할 수 있다.

참고

Grafana Loki docs

profile
기계공학과 개발어린이
post-custom-banner

0개의 댓글