Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версия | |||
| dpi:dpi_components:mediaserver:ccu [2020/09/21 07:14] – ↷ Страница перемещена из dpi:dpi_options:dpi_divert_spec:star:dpi:dpi_components:mediaserver:ccu в dpi:dpi_components:mediaserver:ccu lexx26 | dpi:dpi_components:mediaserver:ccu [2024/09/26 15:29] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Утилита управления КЭШем ====== | ====== Утилита управления КЭШем ====== | ||
| + | {{indexmenu_n> | ||
| + | CCU - Cache Control Utility | ||
| + | Утилита предназначена для загрузки данных в КЭШ, управления содержимым КЭШа, а также сбора статистики. Утилита поддерживает гибкую конфигурацию, | ||
| + | |||
| + | ===== CCU Конфигурация ===== | ||
| + | |||
| + | Основным файлом конфигурации является файл // | ||
| + | |||
| + | ===== Формат YAML ===== | ||
| + | Базовыми элементами формата [[https:// | ||
| + | * пара " | ||
| + | * последовательность значений, | ||
| + | |||
| + | На основе базовых элементов возможно создавать сложные структуры данных. | ||
| + | |||
| + | Одним из принципов для описания сложных структур заложенных в формат [[https:// | ||
| + | <code bash> | ||
| + | # | ||
| + | # Time classes | ||
| + | time_classes: | ||
| + | default: | ||
| + | # All others items define the names of time classes and rules for them definition | ||
| + | # Each rule is started from the name of day category and contains | ||
| + | # the list of ranges of times in form " | ||
| + | |||
| + | peak: | ||
| + | workdays: | ||
| + | - " | ||
| + | - " | ||
| + | weekend_eve: | ||
| + | - " | ||
| + | - " | ||
| + | weekend: | ||
| + | - " | ||
| + | - " | ||
| + | holidays: | ||
| + | - " | ||
| + | - " | ||
| + | </ | ||
| + | |||
| + | можно трактовать как структуру данных '' | ||
| + | |||
| + | Учитывая выше сказанное, | ||
| + | |||
| + | ===== Соглашения при описании параметров ===== | ||
| + | * Для задания имени конкретного поля в сложной вложенной структуре используется полное имя поля, которое представляет собой перечисление всех имен полей, разделенных косой чертой, | ||
| + | * Для задания имени элемента, | ||
| + | * Если не оговаривается особым образом, | ||
| + | |||
| + | ===== Параметры ===== | ||
| + | ==== Рабочие каталоги ==== | ||
| + | Следующие два параметра задают каталоги, | ||
| + | <code bash> | ||
| + | # | ||
| + | # PID files path, default: / | ||
| + | pid_files_path: | ||
| + | |||
| + | # | ||
| + | # Work files directory, default: / | ||
| + | work_files_path: | ||
| + | </ | ||
| + | |||
| + | ==== События ==== | ||
| + | По возникновению определенных событий **ccu** может выполнять действия заданные пользователем. Действия для выполнения необходимо задавать в соответствии с правилами интерпретатора командной строки.\\ | ||
| + | В настоящее время поддерживается только одно событие - создание текстового файла, содержащего информацию об объектах, | ||
| + | |||
| + | <code bash> | ||
| + | # | ||
| + | # Events | ||
| + | events: | ||
| + | # Command which should be executed after caches' | ||
| + | on_after_enumeration_creation: | ||
| + | </ | ||
| + | |||
| + | ==== Журналирование ==== | ||
| + | Параметры журналирования включают в себя путь к файлам журналов, | ||
| + | Уровни журналирования задаются отдельно для каждой команды **ccu**. | ||
| + | |||
| + | <code bash> | ||
| + | # | ||
| + | # Logging parameters | ||
| + | logging: | ||
| + | path: / | ||
| + | levels: | ||
| + | # Possible levels are: | ||
| + | # | ||
| + | # default logging level is " | ||
| + | load: " | ||
| + | purge: | ||
| + | remove: | ||
| + | online: | ||
| + | monitor: | ||
| + | </ | ||
| + | |||
| + | ==== Сбор статистики ==== | ||
| + | Поля параметра '' | ||
| + | |||
| + | <code bash> | ||
| + | # | ||
| + | # Statistics parameters | ||
| + | statistics: | ||
| + | collectors: | ||
| + | local: | ||
| + | host: | ||
| + | port: | ||
| + | </ | ||
| + | |||
| + | ==== Категории дней и классы времени ==== | ||
| + | Категории дней и классы времени используются для задания правил ограничения по загрузки данных в КЭШи. | ||
| + | Для того, чтобы задать категорию дня необходимо создать параметр '' | ||
| + | Элементом списка дней может быть название дня недели, | ||
| + | При определении категории дня для конкретной даты происходит просмотр в первую очередь более частных определений, | ||
| + | |||
| + | <code bash> | ||
| + | # | ||
| + | # Day categories | ||
| + | day_categories: | ||
| + | # Items under " | ||
| + | # To define the day categorie it is necessary to specify list of values, | ||
| + | # value can be one of following: | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | |||
| + | workdays: | ||
| + | weekend_eve: | ||
| + | weekend: | ||
| + | |||
| + | holidays: | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | </ | ||
| + | |||
| + | Классы времени делят день определенной категории на интервалы времени. Для задания класса времени необходимо создать параметр '' | ||
| + | \\ | ||
| + | В приведенном ниже примере задан класс времени '' | ||
| + | |||
| + | <code bash> | ||
| + | # | ||
| + | # Time classes | ||
| + | time_classes: | ||
| + | default: | ||
| + | # All others items define the names of time classes and rules for them definition | ||
| + | # Each rule is started from the name of day categorie and contains | ||
| + | # the list of ranges of times in form " | ||
| + | |||
| + | peak: | ||
| + | workdays: | ||
| + | - " | ||
| + | - " | ||
| + | |||
| + | weekend_eve: | ||
| + | - " | ||
| + | - " | ||
| + | |||
| + | weekend: | ||
| + | - " | ||
| + | - " | ||
| + | |||
| + | holidays: | ||
| + | - " | ||
| + | - " | ||
| + | </ | ||
| + | ==== Задачи ==== | ||
| + | Параметры задач задаются как вложенные структуры параметра '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Далее, при описании, | ||
| + | |||
| + | === Мониторинг === | ||
| + | Для задачи мониторинга необходимо задать параметры для входящего соединения ('' | ||
| + | \\ | ||
| + | Другими словами параметр '' | ||
| + | \\ | ||
| + | Задача мониторинга помимо сбора статистики процессов работающих с КЭШем, также осуществляет сбор системной информации по сетевым интерфейсам. Для того, чтобы ограничить список сетевых интерфейсов, | ||
| + | |||
| + | <code bash> | ||
| + | monitor: | ||
| + | listener: | ||
| + | # incoming/ | ||
| + | host: | ||
| + | port: 1600 | ||
| + | |||
| + | network_interfaces: | ||
| + | # incoming/ | ||
| + | # if list is empty, all interfaces except " | ||
| + | - | ||
| + | </ | ||
| + | |||
| + | === Загрузка === | ||
| + | Параметры загрузки разделяются на общие, которые задаются как поля параметра '' | ||
| + | |||
| + | **Общие параметры загрузки**: | ||
| + | <code bash> | ||
| + | # | ||
| + | # Load jobs parameters | ||
| + | load: | ||
| + | ip_binding: | ||
| + | # to binding while loading | ||
| + | - | ||
| + | |||
| + | ignored_clients: | ||
| + | # list could be defined internally into configuration file as list of CIDRs | ||
| + | # under key " | ||
| + | # if list is defined externally in file, each line that file must contain | ||
| + | # only one CIDR | ||
| + | cidr_list: | ||
| + | - | ||
| + | cidr_files: | ||
| + | - | ||
| + | |||
| + | rate_limits: | ||
| + | # value can be one of following: | ||
| + | # | ||
| + | # | ||
| + | offpeak: | ||
| + | peak: 1m | ||
| + | | ||
| + | # ... skipping ... | ||
| + | </ | ||
| + | |||
| + | Параметр '' | ||
| + | \\ | ||
| + | Параметр '' | ||
| + | \\ | ||
| + | Параметр '' | ||
| + | |||
| + | **Параметры offline-загрузки**: | ||
| + | <code bash> | ||
| + | # | ||
| + | # Load jobs parameters | ||
| + | load: | ||
| + | # ... skipping ... | ||
| + | offline: | ||
| + | parallel_workers: | ||
| + | job_awaiting_time: | ||
| + | # if after this time no one job is in the queue, | ||
| + | # worker finishes its execution | ||
| + | </ | ||
| + | |||
| + | Параметры online-загрузки можно разделить на следующие логические группы: | ||
| + | * Описания источников IPFIX потока | ||
| + | * Описание процессов анализа входного IPFIX потока | ||
| + | * Описание коллекторов запрашиваемых объектов | ||
| + | * Описание процессов загрузки данных | ||
| + | |||
| + | Описания источников IPFIX потока задается в структуре '' | ||
| + | <code bash> | ||
| + | # | ||
| + | # Load jobs parameters | ||
| + | load: | ||
| + | # ... skipping ... | ||
| + | | ||
| + | online: | ||
| + | exporters: | ||
| + | main: | ||
| + | queue_size: 1000 # optional, max number of messages from exporter which is sent to analyzing queue, | ||
| + | # must be between 1 and 100000, default: 1000 | ||
| + | |||
| + | host: | ||
| + | port: | ||
| + | protocol: | ||
| + | |||
| + | information_elements: | ||
| + | # names are reserved, values must be in form " | ||
| + | timestamp: | ||
| + | host: " | ||
| + | path: " | ||
| + | login: | ||
| + | source_ip4: | ||
| + | destination_ip4: | ||
| + | referal: | ||
| + | user_agent: | ||
| + | cookie: | ||
| + | |||
| + | # ... skipping ... | ||
| + | </ | ||
| + | |||
| + | Для создания описания источника IPFIX потока необходимо создать структуру '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Описание процессов анализа входного IPFIX потока задается в структуре '' | ||
| + | <code bash> | ||
| + | # | ||
| + | # Load jobs parameters | ||
| + | load: | ||
| + | # ... skipping ... | ||
| + | | ||
| + | online: | ||
| + | # ... skipping ... | ||
| + | | ||
| + | analyzing: | ||
| + | # and binding URLs getting from exporters to cache' | ||
| + | # each analyzzng process sends valid URLs to collection queue | ||
| + | parallel_workers: | ||
| + | queue_size: | ||
| + | # which is sent to collecting queue, must be between 1 and 100000, | ||
| + | # default: 1000 | ||
| + | |||
| + | # ... skipping ... | ||
| + | </ | ||
| + | |||
| + | При задании параметров анализаторов следует в первую очередь обратить внимание на параметр '' | ||
| + | |||
| + | Описание коллекторов запрашиваемых объектов задается в структуре '' | ||
| + | <code bash> | ||
| + | # | ||
| + | # Load jobs parameters | ||
| + | load: | ||
| + | # ... skipping ... | ||
| + | | ||
| + | online: | ||
| + | # ... skipping ... | ||
| + | |||
| + | collectors: | ||
| + | default: | ||
| + | # and distributes them into time windows | ||
| + | # each event could hit no more than 1 window according to event' | ||
| + | # the time window is a period of time which defines interval of time in the past | ||
| + | # it is possible to have many time windows, in this case each window is | ||
| + | # connected to previous one | ||
| + | |||
| + | slots: | ||
| + | window: | ||
| + | |||
| + | week_by_4_hours: | ||
| + | slots: | ||
| + | window: | ||
| + | |||
| + | # ... skipping ... | ||
| + | </ | ||
| + | |||
| + | Коллектор запрашиваемых объектов является основным фактором для принятия решения о старте загрузки объекта. Логически коллектор представляет собой набор счетчиков в скользящих интервалах времени в прошлом от настоящего момента. При запросе объекта, | ||
| + | \\ | ||
| + | Для того, чтобы создать описание коллектора, | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | В приведенном выше примере описано два коллектора: | ||
| + | |||
| + | Описание процессов загрузки данных задается в структуре '' | ||
| + | <code bash> | ||
| + | # | ||
| + | # Load jobs parameters | ||
| + | load: | ||
| + | # ... skipping ... | ||
| + | | ||
| + | online: | ||
| + | # ... skipping ... | ||
| + | |||
| + | loading: | ||
| + | parallel_workers: | ||
| + | queue_size: | ||
| + | # which is sent to loading queue, must be between " | ||
| + | # default: 100 | ||
| + | unbuffered_queue_size: | ||
| + | # collecting process will put into loading queue immediately. The messages will be buffered | ||
| + | # and ordered before puting into loading queue according to URLs' weight; | ||
| + | # must be between 0 and " | ||
| + | |||
| + | # ... skipping ... | ||
| + | </ | ||
| + | |||
| + | При задании параметров процессов загрузки следует обратить внимание на количество параллельных процессов. Не следует значительно увеличивать размер очереди (параметр '' | ||
| + | |||
| + | === Сканирование === | ||
| + | Сканирование - это вспомогательная задача, | ||
| + | |||
| + | <code bash> | ||
| + | # | ||
| + | # Scannig jobs parameters | ||
| + | scan: | ||
| + | workers: | ||
| + | # each scanning process sends information about found items to scanning queue | ||
| + | parallel_workers: | ||
| + | job_queue_size: | ||
| + | # default: 5000 | ||
| + | result_queue_size: | ||
| + | # which are sent to result scanning queue, must be between 1000 and 1000000, | ||
| + | # default: 100000 | ||
| + | </ | ||
| + | |||
| + | Среди функций, | ||
| + | * начальное сканирование каталогов при старте процесса загрузки или удаления старых объектов; | ||
| + | * проверка времени жизни объекта в КЭШе и при необходимости удаление его; | ||
| + | * удаление объектов по запросу от управляющего процесса; | ||
| + | * проверка соответствия хранимого в КЭШе объекта его оригиналу; | ||
| + | |||
| + | ==== Хранилище ==== | ||
| + | Параметры хранилища задаются как поля параметра '' | ||
| + | * общие характеристики хранилища - структура '' | ||
| + | * описание параметров КЭШей - структура '' | ||
| + | |||
| + | Общие параметры задают путь к корню хранилища, | ||
| + | <code bash> | ||
| + | storage_parameters: | ||
| + | general: | ||
| + | path: "/ | ||
| + | max_size: | ||
| + | # maximum data size for all caches, possible suffixes are: | ||
| + | # Kb, Mb, Gb, Tb, Pb or without trailing " | ||
| + | </ | ||
| + | |||
| + | Параметры определенного КЭШа задаются как структура '' | ||
| + | <code bash> | ||
| + | storage_parameters: | ||
| + | # ... skipping ... | ||
| + | | ||
| + | caches: | ||
| + | youtube.com: | ||
| + | is_enabled: | ||
| + | # will not be used for loading data | ||
| + | |||
| + | # ... skipping ... | ||
| + | </ | ||
| + | задает [[# | ||
| + | |||
| + | === Описание КЭШа === | ||
| + | При описании параметров КЭШа в этом разделе имена параметров будут базироваться на параметре '' | ||
| + | \\ | ||
| + | Параметр '' | ||
| + | |||
| + | == Статистика == | ||
| + | Параметры статистики для КЭШа задаются в структуре '' | ||
| + | <code bash> | ||
| + | statistics: | ||
| + | group: | ||
| + | # all statistics in the same group is aggregated together | ||
| + | collector: | ||
| + | </ | ||
| + | |||
| + | Параметр '' | ||
| + | |||
| + | == Online-работа == | ||
| + | Для online-загрузки необходимо задать следующие параметры: | ||
| + | <code bash> | ||
| + | online: | ||
| + | collector: | ||
| + | # for online processing | ||
| + | validating: | ||
| + | interval: | ||
| + | # could be used only for caches with " | ||
| + | </ | ||
| + | |||
| + | Параметр '' | ||
| + | |||
| + | == Загрузка == | ||
| + | Для задания правил загрузки используются следующие параметры: | ||
| + | <code bash> | ||
| + | loading: | ||
| + | algorithm: | ||
| + | required_weight: | ||
| + | |||
| + | urls: | ||
| + | matching: | ||
| + | # - the " | ||
| + | # - the " | ||
| + | # | ||
| + | # - the " | ||
| + | # all items under " | ||
| + | # the " | ||
| + | # the sources URLs will not be rewritten. | ||
| + | # it is necessary to have at least one URL in sources. | ||
| + | # It is possible to use in the key and target' | ||
| + | # See RE syntax on https:// | ||
| + | |||
| + | - | ||
| + | weight: | ||
| + | sources: | ||
| + | - ' | ||
| + | - ' | ||
| + | |||
| + | ignoring: | ||
| + | - # default: all matched with matching parameters URLs will be processed | ||
| + | |||
| + | loadable_rejecting: | ||
| + | # which is obtained according to particular URL | ||
| + | # default: all " | ||
| + | # See RE syntax on https:// | ||
| + | |||
| + | - " | ||
| + | </ | ||
| + | |||
| + | * Параметр '' | ||
| + | * // | ||
| + | * // | ||
| + | * //vk.com// - загрузка видео файлов с vk.com; | ||
| + | * //general// - общий алгоритм загрузки по исходному URL; | ||
| + | * Параметр '' | ||
| + | * Параметр '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | | ||
| + | * Параметр '' | ||
| + | * Параметр '' | ||
| + | |||
| + | == Xранение == | ||
| + | Для задания правил хранения объектов используются следующие параметры: | ||
| + | <code bash> | ||
| + | storage: | ||
| + | path: " | ||
| + | levels: | ||
| + | # of md5 sum of file name | ||
| + | # possible values: | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | max_size: | ||
| + | # maximum data size, possible suffixes are: | ||
| + | # Kb, Mb, Gb, Tb, Pb or without trailing " | ||
| + | expiry_time: | ||
| + | # default in seconds (without suffix) | ||
| + | # possible suffixes are: | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | </ | ||
| + | |||
| + | * Параметр '' | ||
| + | * Параметр '' | ||
| + | * Параметр '' | ||
| + | * Параметр '' | ||
| + | |||
| + | == Ограничения == | ||
| + | Для объектов КЭШа возможно задать ограничения, | ||
| + | <code bash> | ||
| + | constraints: | ||
| + | min_file_size: | ||
| + | # Kb, Mb, Gb, Tb, Pb or without trailing " | ||
| + | max_file_size: | ||
| + | # Kb, Mb, Gb, Tb, Pb or without trailing " | ||
| + | |||
| + | # optional, command which should be executed after file loading; | ||
| + | # if command returns non-zero result, the loaded file will be assumed as invalid an will be removed; | ||
| + | # the next variables could be used in the command: | ||
| + | # | ||
| + | # | ||
| + | post_load_validation: | ||
| + | </ | ||
| + | |||
| + | ==== SSD-Кэширование ===== | ||
| + | Существует возможность организовать КЭШ-ирование наиболее часто запрашиваемых объектов хранилища на SSD, для этого необходимо определить параметры: | ||
| + | |||
| + | <code bash> | ||
| + | # | ||
| + | # SSD caching parameters | ||
| + | ssd_caching: | ||
| + | is_enabled: | ||
| + | path: "/ | ||
| + | # NOTES: | ||
| + | # - to SSD caching you have to mount SSD on specified path (or create link / | ||
| + | # - changes this parameter should be performed in cooperation with changes in web server configuration | ||
| + | # (it is recomended do not change this parameter) | ||
| + | max_size: | ||
| + | # Kb, Mb, Gb, Tb, Pb or without trailing " | ||
| + | required_weight: | ||
| + | |||
| + | uri_prefixes: | ||
| + | ssd_cache_requests: | ||
| + | main_storage_requests: | ||
| + | |||
| + | frozen_time: | ||
| + | # file cannot be replaced by another one, default: 3 * collecting window | ||
| + | # frozen time cannot be less than collecting window | ||
| + | |||
| + | collector: | ||
| + | # and distributes them into time windows | ||
| + | slots: | ||
| + | window: | ||
| + | |||
| + | workers: | ||
| + | # each process sends information about found items to result queue | ||
| + | parallel_workers: | ||
| + | job_queue_size: | ||
| + | # default: 5000 | ||
| + | result_queue_size: | ||
| + | # which is sent to result queue, must be between 1000 and 1000000, | ||
| + | # default: 100000 | ||
| + | </ | ||
| + | |||
| + | При задании параметров следует обратить внимание на количество рабочих процессов и параметры коллектора. | ||
| + | |||
| + | ===== Начальная конфигурация ===== | ||
| + | При установке **ccu** создается файл шаблона конфигурации - // | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||