Агент для поставки метрик
Yandex Unified Agent — агент для поставки метрик виртуальных машин и пользовательских приложений.
Агент поддерживает:
- сбор системных метрик Linux (процессор, память, диск);
- сбор метрик в формате Prometheus
; - поставку метрик в Yandex Monitoring;
- файловое хранилище для надежной доставки данных.
Чтобы установить настроенный для поставки системных метрик Linux агент, выполните Docker-команду:
docker run \
-p 16241:16241 -it --detach --uts=host \
--name=ua \
-v /proc:/ua_proc \
-e PROC_DIRECTORY=/ua_proc \
-e FOLDER_ID=a1bs81qpemb4******** \
cr.yandex/yc/unified-agent
Где FOLDER_ID
– идентификатор каталога, куда будут записываться метрики.
Другие примеры использования агента приведены в разделе Работа с метриками. Подробнее про способы установки Unified Agent читайте в разделе Установка и запуск Yandex Unified Agent. Синтаксис файла конфигурации агента описан в разделе Конфигурирование.
Примечание
Yandex Unified Agent распространяется под лицензией Apache License 2.0.
Чтобы узнать больше о лицензии, выполните команды:
unified_agent --license
— отображает полный текст лицензии;unified_agent --credits
— отображает список и лицензии библиотек, используемых агентом.
Основные понятия
Yandex Unified Agent предназначен для передачи потоковых данных, представленных в виде сообщений, например, метрик или логов. Поток данных в Unified Agent называется сессией. Одновременно может быть установлено множество сессий.
Агент получает сообщения через вход и отправляет их в один или несколько выходов. Для промежуточной обработки сообщений существуют фильтры, а для сохранения на диск — хранилища. Входы, выходы, фильтры и хранилища реализуются при помощи плагинов.
Для маршрутизации сообщений существуют маршруты доставки, состоящие из входа и канала. Канал состоит из цепочки преобразований и узла одного из типов: выход, канал или разветвитель. Цепочка преобразований может содержать фильтры и ссылки на хранилища. Цепочка преобразований может отсутствовать.
Вы можете создавать именованные каналы и цепочки обработки. Это позволит избежать дублирования конфигурации и направить сообщения из многих входов в один выход.
Сообщения
Сообщение — это минимальная неделимая единица пользовательской информации, передаваемая Unified Agent.
Сообщение состоит из тела, временной метки, пользовательских метаданных в формате ключ:значение
и порядкового номера.
Сессии
Сессия — это упорядоченный поток сообщений. Сессия имеет идентификатор, который должен быть уникальным среди всех установленных сессий, и пользовательские метаданные в формате ключ:значение
.
Все сообщения, переданные в рамках сессии, содержат как метаданные сообщения, так и метаданные сессии.
Входы
Вход предназначен для получения агентом сообщений, которые передаются в рамках сессий. Вход может содержать настройки инфраструктуры работы с сессиями для конфигурирования различных ограничений.
Пример описания входа в файле конфигурации:
- input:
plugin: ... # имя плагина
id: ... # рекомендуемый идентификатор входа, используется в метриках и логах
flow_control: # настройка инфраструктуры работы с сессиями
...
См. также:
Выходы
Выход предназначен для отправки агентом сообщений в сторонние системы. В настоящий момент поддерживается выход yc_metrics
для записи метрики в Yandex Monitoring API, а также несколько отладочных выходов.
Пример описания выхода в файле конфигурации:
- output:
plugin: ... # имя плагина
id: ... # рекомендуемый идентификатор выхода, используется в метриках и логах работы агента
См. также список реализованных выходов.
Фильтры
Фильтр предназначен для отбрасывания, преобразования и агрегации сообщений.
Типы фильтров:
- обычные — работают с каждым сообщением в отдельности;
- накопительные — преобразуют набор входных сообщений в одно выходное.
Пример описания фильтра в файле конфигурации:
- filter:
plugin: ... # имя плагина
id: ... # рекомендуемый идентификатор фильтра, используется в метриках и логах
config: # конфигурация фильтра
...
См. также список реализованных фильтров.
Хранилища
Хранилища предназначены для промежуточного хранения сообщений.
Пример описания хранилища в файле конфигурации:
- input:
plugin: ... # имя плагина
id: ... # рекомендуемый идентификатор хранилища, используется в метриках и логах
flow_control: # настройка инфраструктуры работы с сессиями
...
См. также список реализованных хранилищ.
Маршрутизация
Цепочки преобразований
Цепочки преобразований содержат набор фильтров или хранилищ, через которые последовательно проходят сообщения.
Цепочки преобразований можно делать именованными.
Пример описания цепочки преобразований в файле конфигурации:
...
- pipe:
- filter:
plugin: ...
config: ...
- filter:
plugin: ...
config: ...
- storage_ref:
storage: ...
- filter:
plugin: ...
config: ...
...
Пример описания именованной цепочки преобразований в файле конфигурации:
pipes:
- name: named_pipe
pipe:
...
Полный пример конфигурирования цепочек преобразований приведен в разделе Секция pipes.
Каналы
Каналы группируют цепочку преобразований и один из узлов: выход, именованный канал или разветвитель.
Разветвитель позволяет указать набор каналов и копирует поступающее в него сообщение в каждый из своих каналов. При помощи разветвителя можно продублировать потоки в разные выходы, а комбинируя разветвители и фильтры, можно направлять разные сообщения в разные каналы по некоторым признакам, например, по метаданным.
Каналы можно делать именованными.
Пример описания каналов в файле конфигурации:
channel:
pipe:
...
output:
plugin: ...
config: ...
channel:
pipe:
...
channel_ref: named_channel
channel:
pipe:
...
fanout:
- channel:
output:
...
- channel:
pipe:
pipe_ref: named_pipe
output:
...
- channel:
channel_ref: named_channel
- channel:
fanout:
...
Пример описания именованных каналов в файле конфигурации:
channels:
- name: named_pipe
channel:
...
См. также пример конфигурирования именованных каналов.
Маршруты доставки
Маршрут доставки объединяет вход и канал.
Пример описания маршрутов в файле конфигурации:
routes:
- input:
plugin: ...
id: ...
config: ...
channel:
...
# Отправка сообщений из разных входов в один выход
- input:
... (вход 1)
channel:
channel_ref: named_channel
output:
output_ref: named_output
- input:
... (вход 2)
channel:
channel_ref: named_channel
output:
output_ref: named_output
channels:
- name: named_channel
channel:
output:
...
Маршруты доставки, каналы и цепочки обработки позволяют сконфигурировать произвольное дерево обработки сообщений.