프로젝트 소개
ngtop은 nginx 액세스 로그 분석을 위한 Go 기반 CLI 유틸리티입니다. 로그 항목을 SQLite 데이터베이스로 파싱하여 사용자가 필터링된 쿼리로 요청 통계를 실행할 수 있도록 합니다.
### 설치
릴리스에서 사전 빌드된 바이너리를 다운로드하거나 Go를 통해 설치하십시오: `go install github.com/facundoolano/ngtop@latest`.
### 작동 방식
실행될 때마다 ngtop은 nginx 액세스 로그(기본값 `/var/log/nginx/access.log*`)를 찾아 combined 로그 형식을 사용하여 파싱하고, 파싱된 항목을 SQLite 데이터베이스(기본값 `./ngtop.db`)에 저장합니다. 이후 실행 시에는 아직 저장되지 않은 새로운 로그 항목만 처리합니다.
### 쿼리 기능
이 도구는 여러 차원에 걸친 필터링 및 집계를 지원합니다:
- **경로(Paths)**: 가장 많이 요청된 URL, 패턴 매칭 지원 (`/blog/%`)
- **사용자 에이전트(User agents)**: 브라우저, OS, 장치 또는 봇 감지별 그룹화
- **IP**: 가장 많이 요청한 IP 또는 IP별 상위 URL
- **리퍼러(Referers)**: 특정 URL 패턴에 대한 상위 리퍼러
- **상태 코드(Status codes)**: HTTP 상태별 응답 수 계산, 패턴 매칭 지원 (예: `4%`, `5%`)
- **시간 범위(Time ranges)**: `--since`/`-s`를 사용하여 최근 초, 분, 시간, 일, 주 또는 월로 쿼리를 제한하며, 선택적으로 `--until`/`-u`를 사용하여 시간 창을 설정할 수 있습니다.
- **필터(Filters)**: `=`, `!=`, `LIKE`와 같은 연산자를 사용하여 `--where`/`-w`로 여러 조건을 결합할 수 있습니다.
### 설정
동작은 환경 변수를 통해 제어됩니다:
- `NGTOP_LOGS_PATH`: 로그 파일 위치에 대한 Glob 패턴
- `NGTOP_LOG_FORMAT`: 사용자 정의 nginx 로그 형식 문자열
- `NGTOP_DB`: SQLite 데이터베이스 경로
- `NGTOP_DEBUG`: 내부 로깅 활성화
이를 통해 ngtop은 풀스택 로그 집계가 실용적이지 않은 nginx 배포 환경에서 가볍고 오버헤드가 적은 분석 레이어를 제공합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.