Linux/Rocky

syslog 모니터링 시각화 대시보드 만들기 (Grafana,Alloy, Loki)

카르마요기 2026. 1. 15. 13:44

◆  머리말

 ■ 소프트웨어 별 주요 기능/역할

  • Alloy (수집) : 데이터 수집 및 전송 ( 메트릭, 로그, 트레이스 통합 수집)

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

  • Loki (저장/검색) : 데이터 저장 및 검색 (수집된 로그 보관, 레이블로 관리)

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

       - free forever access to 10,000 측정지표, 50GB 로그, 50GB 추적활동, 월별  6k 테스트 500 가상 사용자 시간

 

  • Grafana (시각화) : 데이터 시각화 및 분석 (수집된 로그와 측정지표룰 그래프 등으로 시각화)

        https://grafana.com/docs/grafana/latest/setup-grafana/installation/

 

 

 


◆  사전작업

 ■ 아키텍처

  • 시스템 구성도

시스템 구성도

 

  • 시스템 사양

        - 


◆  본작업

 ■ Alloy 설치 (Ubuntu)

  • Step01. GPG 도구를 설치
    CMD] sudo apt install gpg
  • Step02. GPG 키 가져 오기 및 그라파나 패키지 저장소 추가
CMD] sudo mkdir -p /etc/apt/keyrings
CMD] sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
CMD] sudo chmod 644 /etc/apt/keyrings/grafana.asc
CMD] echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

# 레파지토리 업데이트
CMD] sudo apt-get update
  • Step03. Alloy 설치
CMD] sudo apt-get install alloy

# Download the package and all its dependencies to the current directory
#CMD] sudo apt-get install apt-rdepends
#CMD] apt-get download $(apt-rdepends alloy | grep -v "^ " | grep -v "^libc-dev$")
  • Step04. (선택) Alloy 삭제
CMD] sudo apt-get remove alloy

# Optional: Remove the Grafana repository.
CMD] sudo rm -i /etc/apt/sources.list.d/grafana.list
  • Step05. Alloy 실행
CMD] systemctl daemon-reload
CMD] sudo systemctl start alloy

CMD] sudo systemctl status alloy

# 부팅 시, 서비스 자동 시작 설정
CMD] sudo systemctl enable --now alloy.service

# 서비스 중지
CMD] sudo systemctl stop alloy

# Alloy 로그 보기
CMD] sudo journalctl -u alloy -f

 

  • Step06. Alloy 설정 (with rsyslog)

       1. /etc/alloy/config.alloy 파일의 설정값 추가

CMD] sudo vi /etc/alloy/config.alloy
--------------------ADD--------------------------
//logging {
//  level = "warn"
//}

loki.source.syslog "syslog_receiver" {
  forward_to = [loki.process.filter_logs.receiver]
  listener {
    address = "0.0.0.0:1514"
    protocol = "tcp"
    labels = { "job" = "syslog",
      "service_name" = "ns1.internal.uenters.com",
    }
  }
}

loki.process "filter_logs" {
  forward_to = [loki.write.remote.receiver]
//  stage.match {
//    selector = "{message =~ \"clock\"}"
//    action = "drop"
//    drop_counter_reason = "not_backend_with_request_id"
//  }
}


loki.write "remote" {
  endpoint {
    url = "http://192.168.31.181:3100/loki/api/v1/push" 
  }
}

--------------------ADD--------------------------

CMD] sudo systemctl daemon-reload
CMD] sudo systemctl restart alloy

CMD] sudo systemctl status alloy
CMD] sudo journalctl -xeu alloy -f

CMD] sudo netstat -nltp | grep alloy

 

       2. 방화벽 허용 정책 등록

CMD] sudo ufw allow 1514/tcp
CMD] sudo ufw reload

 

       3.  rsyslog에 alloy에 전달 설정

CMD] sudo vi /etc/rsyslog.d/40-grafana-alloy.conf
----------------ADD----------------
# Grafana Alloy로 *.internal.uenters.com 호스트에서 생성한 로그 전달 예시
if re_match($hostname, ".*\\.internal\\.uenters\\.com") then { 
    action(type="omfwd" target="127.0.0.1" port="1514" protocol="tcp"
           Template="RSYSLOG_SyslogProtocol23Format"
           queue.type="linkedlist" queue.filename="agent_fwd" action.resumeRetryCount="-1"
           queue.saveOnShutdown="on")
}
----------------ADD----------------END

CMD] sudo systemctl restart rsyslog
CMD] sudo systemctl status rsyslog

 

  • Step07.
  • Step08.
  • Step09.
  • Step10.

 

 

 

 

 ■ Loki 설치 (Rocky)

  • Step01. Loki 설치
CMD] sudo dnf update
CMD] sudo dnf install gpg

CMD] wget -q -O gpg.key https://rpm.grafana.com/gpg.key
CMD] sudo rpm --import gpg.key
CMD] echo -e '[grafana]\nname=grafana\nbaseurl=https://rpm.grafana.com\nrepo_gpgcheck=1\nenabled=1\ngpgcheck=1\ngpgkey=https://rpm.grafana.com/gpg.key\nsslverify=1\nsslcacert=/etc/pki/tls/certs/ca-bundle.crt' | sudo tee /etc/yum.repos.d/grafana.repo

CMD] sudo dnf install loki

# promtail 설치 (2026년 3월 종료(EOL)예정. Grafana Alloy로의 마이그레이션을 권장)
# CMD] sudo dnf install promtail

  • Step02. Loki 설정
CMD] sudo vi /etc/loki/config.yml
------------CHANGE-----------------
...
server:
  http_listen_port: 3100
  grpc_listen_port: 9096
  #log_level: debug
  log_level: error
  grpc_server_max_concurrent_streams: 1000
...
------------CHANGE-----------------END
  • Step03. 부팅 시, Loki 서비스 자동 시작으로 설정
CMD] sudo systemctl daemon-reload
CMD] sudo systemctl enable --now loki

CMD] sudo systemctl restart loki

CMD] sudo systemctl status loki
  • Step04. Loki 서비스 방화벽 허용 정책 등록
# 방화벽 실행 상태 확인
CMD] sudo systemctl status firewalld
CMD] sudo firewall-cmd --state
CMD] sudo firewall-cmd --list-all-zones
CMD] sudo firewall-cmd --list-ports --zone=public

# Loki 서비스 포트 추가 (기본 3100/tcp, gRPC포트 9096/tcp)
CMD] sudo firewall-cmd --permanent --zone=public --add-port=3100/tcp --add-port=9096/tcp

# 추가된 내용 적용
CMD] sudo firewall-cmd --reload

# 추가된 내용 확인
CMD] sudo firewall-cmd --list-ports --zone=public
  • Step05. Loki 기본 포트 원격 접속 확인
CMD] curl -v telnet://192.168.31.181:3100

CMD] sudo mkdir -p /app/instl/loki
CMD] sudo chown uenter:uenters /app/instl/loki
CMD] cd /app/instl/loki
CMD] wget https://github.com/grafana/loki/releases/download/v3.6.3/logcli-3.6.3.x86_64.rpm

CMD] sudo rpm -Uvh logcli-3.6.3.x86_64.rpm

CMD] logcli --version

  • Step07. Loki 수집 데이터 조회
CMD] export LOKI_ADDR=http://192.168.31.181:3100

# 인증이 필요한 경우:
#CMD] export LOKI_USERNAME=<사용자 이름>
#CMD] export LOKI_PASSWORD=<비밀번호>

# 레이블 확인
CMD] logcli labels

# 레이블 분석
CMD] logcli series --analyze-labels '{service_name=~".+"}'

# job 리스트 확인
CMD] logcli labels job

 

 

 

 

 ■ Grafana 설치

  • Step01. GPG 키 추가하기
CMD] sudo mkdir -p /app/instl/grafana
CMD] sudo chown uenter:uenters /app/instl/grafana
CMD] cd /app/instl/grafana

CMD] wget -q -O gpg.key https://rpm.grafana.com/gpg.key
CMD] sudo rpm --import gpg.key
  • Step02. Grafana 레파지토리 등록
CMD] sudo vi /etc/yum.repos.d/grafana.repo
---------------ADD---------------------
[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://rpm.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
---------------ADD---------------------END
  • Step03. Grafana OSS 버젼 설치
CMD] sudo dnf install grafana

# Enterprise 버젼 설치 명령어
#CMD] sudo dnf install grafana-enterprise
  • Step04. (선택) Grafana 삭제
CMD] sudo systemctl stop grafana-server
CMD] sudo dnf remove grafana
CMD] sudo rm -i /etc/yum.repos.d/grafana.repo
  • Step05. Grafana 서버 시작
CMD] sudo systemctl daemon-reload
CMD] sudo systemctl enable --now grafana-server

CMD] sudo systemctl start grafana-server
  • Step06. Grafana 서비스 방화벽 허용 정책 등록
# 방화벽 실행 상태 확인
CMD] sudo systemctl status firewalld
CMD] sudo firewall-cmd --state
CMD] sudo firewall-cmd --list-all-zones
CMD] sudo firewall-cmd --list-ports --zone=public

# Loki 서비스 포트 추가 (기본 3000/tcp)
CMD] sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp

# 추가된 내용 적용
CMD] sudo firewall-cmd --reload

# 추가된 내용 확인
CMD] sudo firewall-cmd --list-ports --zone=public
  • Step07. Grafana 웹UI 접속 및 로그인 (계정:admin / 비번:admin)
CMD> http://192.168.31.181:3000/

# 계정: admin  /  초기비번: admin

  • Step08. Loki 데이터 소스 등록

       ① 메뉴 [Connections] → [Add new connection] → [Loki] 선택

 

       ② 메뉴 [Add new data source] 선택


       ③
"Default" 지정 및 Connection 주소 등록


       ④
메뉴 [Save & Test} 클릭 및 연결 확인

 

 

  • Step09.
  • Step10.

 


◆  사후작업

 ■ ㅇㅇㅇ.

  • ㅇㅇㅇ

 


◆  맺음말

 ■ ㅇㅇㅇ.

  • ㅇㅇㅇ

 


 

반응형