Настройка журналов доступа
Функция журнала доступа в Milvus позволяет менеджерам серверов записывать и анализировать поведение пользователей при доступе, помогая понять такие аспекты, как частота успешных запросов и причины отказов.
В этом руководстве приведены подробные инструкции по настройке журналов доступа в Milvus.
Конфигурация журналов доступа зависит от метода установки Milvus:
- Установка Helm: Настройка в
values.yaml. Дополнительные сведения см. в разделе Настройка Milvus с помощью диаграмм Helm. - Установка Docker: Настроить в
milvus.yaml. Дополнительные сведения см. в разделе Настройка Milvus с помощью Docker Compose. - Установка оператора: Измените
spec.componentsв файле конфигурации. Дополнительные сведения см. в разделе Настройка Milvus с помощью Milvus Operator.
Варианты конфигурации
Выберите один из трех вариантов конфигурации в зависимости от ваших потребностей:
- Базовая конфигурация: Для общих целей.
- Конфигурация для файлов журналов локального доступа: Для локального хранения журналов.
- Конфигурация для загрузки локальных журналов доступа в 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: : Максимальный размер в МБ, допустимый для одного файла журнала доступа. Если размер файла журнала достигнет этого предела, будет запущен процесс ротации. Этот процесс запечатывает текущий файл журнала доступа, создает новый файл журнала и очищает содержимое исходного файла журнала.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, использующие данный формат. Чтобы получить имена методов, см. раздел MilvusService в разделе Методы Milvus.
Ссылка: Поддерживаемые метрики
| Метрика Имя | Описание |
|---|---|
$method_name | Имя метода |
$method_status | Статус доступа: OK или Fail |
$method_expr | Выражение, используемое для операций запроса, поиска или удаления |
$trace_id | Идентификатор трассировки, связанный с доступом |
$user_addr | IP-адрес пользователя |
$user_name | Имя пользователя |
$response_size | Размер данных ответа |
$error_code | Код ошибки, характерный для Milvus |
$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, используемая пользователем |