Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версия | |||
| dpi:dpi_components:mediaserver:ccu:ccu-configuration [2019/10/28 10:19] – [Задачи] lexx26 | dpi:dpi_components:mediaserver:ccu:ccu-configuration [2020/02/12 17:40] (текущий) – удалено lexx26 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ======= 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** создается файл шаблона конфигурации - // | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||