액세스 로그 구성
서버 관리자는 Milvus의 액세스 로그 기능을 통해 사용자 액세스 동작을 기록하고 분석하여 쿼리 성공률 및 실패 이유와 같은 측면을 파악할 수 있습니다.
이 가이드는 Milvus에서 액세스 로그를 구성하는 방법에 대한 자세한 지침을 제공합니다.
액세스 로그의 구성은 Milvus의 설치 방법에 따라 다릅니다:
- 헬름 설치:
values.yaml
에서 구성한다. 자세한 내용은 헬름 차트로 Milvus 구성하기를 참조하세요. - 도커 설치:
milvus.yaml
에서 구성한다. 자세한 내용은 Docker Compose로 Milvus 구성하기를 참조하세요. - 오퍼레이터 설치: 구성 파일에서
spec.components
을 수정합니다. 자세한 내용은 Milvus 오퍼레이터로 Milvus 구성을 참조하세요.
구성 옵션
필요에 따라 세 가지 구성 옵션 중에서 선택하세요:
- 기본 구성: 일반적인 용도로 사용합니다.
- 로컬 액세스 로그 파일용 구성: 로그를 로컬에 저장합니다.
- 로컬 액세스 로그를 MinIO에 업로드하기 위한 구성: 클라우드 스토리지 및 백업용.
기본 구성
기본 구성에는 액세스 로그를 활성화하고 로그 파일명을 정의하거나 stdout을 사용하는 것이 포함됩니다.
proxy:
accessLog:
enable: true
# If `filename` is emtpy, logs will be printed to stdout.
filename: ""
# Additional formatter configurations...
proxy.accessLog.enable
: 액세스 로그 기능을 활성화할지 여부입니다. 기본값은 false입니다.proxy.accessLog.filename
: 접근 로그 파일의 이름입니다. 이 매개변수를 비워두면 액세스 로그가 stdout에 인쇄됩니다.
로컬 액세스 로그 파일 구성
로컬 파일 경로, 파일 크기, 순환 간격 등의 매개변수를 사용하여 액세스 로그 파일의 로컬 저장소를 구성합니다:
proxy:
accessLog:
enable: true
filename: "access_log.txt" # Name of the access log file
localPath: "/var/logs/milvus" # Local file path where the access log file is stored
maxSize: 500 # Max size for each single access log file. Unit: MB
rotatedTime: 24 # Time interval for log rotation. Unit: seconds
maxBackups: 7 # Max number of sealed access log files that can be retained
# Additional formatter configurations...
이러한 매개변수는 filename
이 비어 있지 않을 때 지정됩니다.
proxy.accessLog.localPath
: 액세스 로그 파일이 저장되는 로컬 파일 경로입니다.proxy.accessLog.maxSize
: 단일 액세스 로그 파일에 허용되는 최대 크기(MB)입니다. 로그 파일 크기가 이 제한에 도달하면 로테이션 프로세스가 트리거됩니다. 이 프로세스는 현재 액세스 로그 파일을 봉인하고 새 로그 파일을 생성하며 원본 로그 파일의 내용을 지웁니다.proxy.accessLog.rotatedTime
: 단일 액세스 로그 파일을 순환하는 데 허용되는 최대 시간 간격(초)입니다. 지정된 시간 간격에 도달하면 로테이션 프로세스가 트리거되어 새 액세스 로그 파일이 생성되고 이전 로그 파일이 봉인됩니다.proxy.accessLog.maxBackups
: 보관할 수 있는 봉인된 액세스 로그 파일의 최대 개수입니다. 봉인된 액세스 로그 파일 수가 이 제한을 초과하면 가장 오래된 파일이 삭제됩니다.
로컬 액세스 로그 파일을 MinIO에 업로드하기 위한 설정
로컬 액세스 로그 파일을 MinIO에 업로드하도록 설정을 활성화하고 구성합니다:
proxy:
accessLog:
enable: true
filename: "access_log.txt"
localPath: "/var/logs/milvus"
maxSize: 500
rotatedTime: 24
maxBackups: 7
minioEnable: true
remotePath: "/milvus/logs/access_logs"
remoteMaxTime: 0
# Additional formatter configurations...
MinIO 매개변수를 구성할 때 maxSize
또는 rotatedTime
을 설정했는지 확인하세요. 그렇지 않으면 로컬 액세스 로그 파일을 MinIO에 업로드하지 못할 수 있습니다.
proxy.accessLog.minioEnable
: 로컬 액세스 로그 파일을 MinIO에 업로드할지 여부입니다. 기본값은 false입니다.proxy.accessLog.remotePath
: 액세스 로그 파일을 업로드할 오브젝트 스토리지의 경로입니다.proxy.accessLog.remoteMaxTime
: 액세스 로그 파일 업로드에 허용되는 시간 간격입니다. 로그 파일의 업로드 시간이 이 간격을 초과하면 파일이 삭제됩니다. 이 값을 0으로 설정하면 이 기능이 비활성화됩니다.
포맷터 구성
모든 메소드에 사용되는 기본 로그 형식은 특정 메소드 연결이 필요하지 않은 base
형식입니다. 그러나 특정 메소드에 대한 로그 출력을 사용자 지정하려면 사용자 지정 로그 형식을 정의하여 연결된 메소드에 적용할 수 있습니다.
proxy:
accessLog:
enable: true
filename: "access_log.txt"
localPath: "/var/logs/milvus"
# Define custom formatters for access logs with format and applicable methods
formatters:
# The `base` formatter applies to all methods by default
# The `base` formatter does not require specific method association
base:
# Format string; an empty string means no log output
format: "[$time_now] [ACCESS] <$user_name: $user_addr> $method_name-$method_status-$error_code [traceID: $trace_id] [timeCost: $time_cost]"
# Custom formatter for specific methods (e.g., Query, Search)
query:
format: "[$time_now] [ACCESS] <$user_name: $user_addr> $method_status-$method_name [traceID: $trace_id] [timeCost: $time_cost] [database: $database_name] [collection: $collection_name] [partitions: $partition_name] [expr: $method_expr]"
# Specify the methods to which this custom formatter applies
methods: ["Query", "Search"]
proxy.accessLog.<formatter_name>.format
: 동적 메트릭을 사용하여 로그 형식을 정의합니다. 자세한 내용은 지원되는 메트릭을 참조하세요.proxy.accessLog.<formatter_name>.methods
: 이 포맷터를 사용하는 Milvus 작업을 나열합니다. 메서드 이름을 얻으려면 Milvus 메서드에서 MilvusService를 참조하세요.
참조: 지원되는 메트릭
메트릭 이름 | 설명 |
---|---|
$method_name | 메서드 이름 |
$method_status | 액세스 상태입니다: 확인 또는 실패 |
$method_expr | 쿼리, 검색 또는 삭제 작업에 사용된 표현식 |
$trace_id | 액세스와 연관된 TraceID |
$user_addr | 사용자의 IP 주소 |
$user_name | 사용자 이름 |
$response_size | 응답 데이터의 크기 |
$error_code | 밀버스 전용 오류 코드 |
$error_msg | 자세한 오류 메시지 |
$database_name | 대상 Milvus 데이터베이스의 이름 |
$collection_name | 대상 Milvus 컬렉션의 이름 |
$partition_name | 대상 Milvus 파티션의 이름(또는 이름) |
$time_cost | 액세스를 완료하는 데 걸린 시간 |
$time_now | 액세스 로그가 인쇄된 시간(일반적으로 $time_end )과 동일) |
$time_start | 액세스가 시작된 시간 |
$time_end | 액세스가 종료된 시간 |
$sdk_version | 사용자가 사용한 Milvus SDK 버전 |