Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версия | |||
dpi:dpi_components:mediaserver:ccu:start [2023/08/28 09:21] – elena.krasnobryzh | dpi:dpi_components:mediaserver:ccu:start [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 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** создается файл шаблона конфигурации - // | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' |