본문 바로가기

리눅스

[draft] 우분투에 Loki LogCLI를 설치하는 방법

728x90

우분투에 Loki LogCLI를 설치하는 방법

LogCLI는 Grafana Loki의 명령줄 인터페이스입니다. 이 인터페이스는 Loki 인스턴스에 대한 LogQL 쿼리 실행을 용이하게 합니다.

 

필수 패키지 설치

sudo apt-get install -y unzip jq

LogCLI 설치

LogCLI Releases

grafana_loki_releases

wget https://github.com/grafana/loki/releases/download/v2.9.8/logcli-linux-amd64.zip

작업 디렉토리로 이동

cd /usr/local/src

환경 변수 선언

export OS=linux
export ARCH=amd64
export VERSION=v2.9.8

LogCLI 다운로드

wget https://github.com/grafana/loki/releases/download/${VERSION}/logcli-${OS}-${ARCH}.zip

LogCLI 압축 해제

unzip logcli-${OS}-${ARCH}.zip

실행 파일 이동

sudo mv logcli-${OS}-${ARCH} /usr/local/bin/logcli

실행 권한 부여

sudo chmod +x /usr/local/bin/logcli

설치 확인

logcli --version
$ logcli --version
logcli, version 2.9.8 (branch: release-2.9.x, revision: 94e0029)
  build user:       root@e4ac838ed4ad
  build date:       2024-05-02T22:28:14Z
  go version:       go1.21.9
  platform:         linux/amd64
  tags:             netgo

명령어 자동완성 설정(Set up command completion)

echo 'eval "$(logcli --completion-script-bash)"' >> ~/.bashrc
source ~/.bashrc

네트워크 연결 확인(varlogs)

curl -s http://localhost:3100/loki/api/v1/query_range?query=%7Bjob%3D%22varlogs%22%7D | jq .

사용 예시

logcli --addr=http://localhost:3100 query '{job="varlogs"}' --since=10m

환경 변수 설정

export LOKI_ADDR=http://localhost:3100

로그의 라벨 조회

logcli labels
$ logcli labels
2024/07/01 15:43:37 http://localhost:3100/loki/api/v1/labels?end=1719816217836478072&start=1719812617836478072
cluster
filename
job
service_name
stream

특정 라벨의 값을 조회

logcli labels job
$ logcli labels job
2024/07/01 15:37:22 http://localhost:3100/loki/api/v1/label/job/values?end=1719815842519539439&start=1719812242519539439
containerlogs
varlogs

최근 로그 조회

logcli query -q '{job="varlogs"}' --since=10m
$ logcli query -q '{job="varlogs"}' --since=10m     
2024-07-01T15:37:38+09:00 {} Jul  1 15:37:38 node73 systemd[1]: run-docker-runtime\x2drunc-moby-fb202dc3b9f0bd4f53acca3d149c545f3ea7b5e5ca5822add5b754069c889809-runc.CyAL9m.mount: Deactivated successfully.
2024-07-01T15:37:08+09:00 {} Jul  1 15:37:08 node73 systemd[1]: run-docker-runtime\x2drunc-moby-fb202dc3b9f0bd4f53acca3d149c545f3ea7b5e5ca5822add5b754069c889809-runc.hAFAgU.mount: Deactivated successfully.
2024-07-01T15:36:08+09:00 {} Jul  1 15:36:08 node73 systemd[1]: run-docker-runtime\x2drunc-moby-fb202dc3b9f0bd4f53acca3d149c545f3ea7b5e5ca5822add5b754069c889809-runc.Kpi7Ok.mount: Deactivated successfully.

특정 기간의 로그 조회

logcli query '{job="varlogs"}' --since=1h
$ logcli query '{job="varlogs"}' --since=1h
2024/07/01 15:40:16 http://localhost:3100/loki/api/v1/query_range?direction=BACKWARD&end=1719816016736180937&limit=30&query=%7Bjob%3D%22varlogs%22%7D&start=1719812416736180937
2024/07/01 15:40:16 Common labels: {filename="/var/log/syslog", job="varlogs", level="info", service_name="varlogs"}
2024-07-01T15:40:09+09:00 {} Jul  1 15:40:09 node73 systemd[1]: run-docker-runtime\x2drunc-moby-fb202dc3b9f0bd4f53acca3d149c545f3ea7b5e5ca5822add5b754069c889809-runc.iuvTBk.mount: Deactivated successfully.
...
2024-07-01T15:25:36+09:00 {} Jul  1 15:25:36 node73 systemd[1]: run-docker-runtime\x2drunc-moby-fb202dc3b9f0bd4f53acca3d149c545f3ea7b5e5ca5822add5b754069c889809-runc.xBdDWX.mount: Deactivated successfully.
2024/07/01 15:40:16 http://localhost:3100/loki/api/v1/query_range?direction=BACKWARD&end=1719815136569458468&limit=8&query=%7Bjob%3D%22varlogs%22%7D&start=1719812416736180937
2024/07/01 15:40:16 Common labels: {filename="/var/log/syslog", job="varlogs", level="info", service_name="varlogs"}

로그 라인 수 제한

logcli query '{job="varlogs"}' --limit=50

특정 시간 범위에서 특정 레이블의 로그 조회

logcli query '{job="varlogs"}' --from="2024-07-01T14:00:00Z" --to="2024-07-01T15:00:00Z"

로그 스트림 통계

logcli series '{job="varlogs"}'
  • 주요 옵션
    • --since: 로그 조회 시작 시간 (예: --since=1h는 지난 1시간 동안의 로그).
    • --limit: 조회할 로그 라인의 최대 수.
    • --from 및 --to: 특정 시간 범위 지정.
    • --step: 로그 데이터를 쿼리할 때 시간 간격 지정.
    • --quiet: 결과 출력 시 로그 라인 수만 출력.

지난 30분 동안의 app="nginx" 레이블을 가진 최대 100개의 로그 라인을 조회

logcli query '{app="varlogs"}' --since=30m --limit=100

2024-06-30T12:00:00Z부터 2024-06-30T13:00:00Z까지 app="nginx" 및 level="error" 레이블을 가진 로그를 조회

logcli query '{app="nginx", level="error"}' --from="2024-06-30T12:00:00Z" --to="2024-06-30T13:00:00Z"

 

참고URL

- Grafana Labs : LogCLI

 

728x90