Передача логов через HTTP-вход Unified Agent в Cloud Logging
Приложение Yandex Unified Agent позволяет принимать и передавать логи пользовательских приложений в сервис Yandex Cloud Logging.
В этом руководстве вы настроите передачу логов из тестового Python-приложения. Приложение будет передавать логи в Unified Agent на вход http. Полученные логи Unified Agent будет отправлять через выход yc_logs в Cloud Logging в лог-группу по умолчанию — default.
Чтобы настроить передачу логов:
- Подготовьте облако к работе.
- Установите и настройте Yandex Unified Agent.
- Создайте и запустите приложение, генерирующее логи.
- Посмотрите логи.
Если созданные ресурсы больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления- На странице Yandex Cloud BillingACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
- 
Плата за постоянно работающие ВМ (см. тарифы Yandex Compute Cloud); 
- 
Плата за запись и хранение логов в лог-группе (см. тарифы Yandex Cloud Logging). 
Подготовьте инфраструктуру
Создайте сервисный аккаунт
- Создайте сервисный аккаунт sa-loggerв каталоге, куда будут записываться логи.
- Назначьте сервисному аккаунту роль logging.writer.
Создайте ВМ
- 
Создайте ВМ из публичного образа Ubuntu 24.04. В блоке Доступ укажите сервисный аккаунт sa-logger.
- 
Подключитесь к ВМ по SSH. 
Установите и настройте Unified Agent
- 
Скачайте последнюю версию deb-пакета: ubuntu_name="ubuntu-22.04-jammy" ua_version=$(curl --silent https://storage.yandexcloud.net/yc-unified-agent/latest-version) bash -c 'curl --silent --remote-name https://storage.yandexcloud.net/yc-unified-agent/releases/${ua_version}/deb/${ubuntu_name}/yandex-unified-agent_${ua_version}_amd64.deb'
- 
Посмотрите версию deb-пакета с помощью команды ls.
- 
Установите Unified Agent из deb-пакета, указав его версию: sudo dpkg -i yandex-unified-agent_24.09.03_amd64.debДругие способы установки описаны в разделе Установка и обновление Yandex Unified Agent. 
- 
Проверьте, что Unified Agent запущен: sudo systemctl status unified-agent.service
- 
Откройте конфигурационный файл Unified Agent: sudo nano /etc/yandex/unified_agent/config.yml
- 
Добавьте в файл конфигурацию для приема и отправки логов: status: port: "16241" routes: - input: plugin: http config: port: 22132 channel: output: plugin: yc_logs config: folder_id: "b1grj7grr1kn********" iam: cloud_meta: {} import: - /etc/yandex/unified_agent/conf.d/*.ymlГде folder_id— идентификатор каталога, в который будут записываться логи.
- 
Проверьте, что файл конфигурации составлен верно (команда должна вывести содержимое файла): unified_agent check-config -c /etc/yandex/unified_agent/config.yml
- 
Перезапустите Unified Agent: sudo systemctl restart unified-agent.service
- 
Посмотрите статус службы Unified Agent: sudo systemctl status unified-agent.service
Создайте и запустите приложение, генерирующее логи
- 
Создайте файл logtest.py:import time import requests import random # Возможные URL для запросов urls = [ '/', '/admin', '/hello', '/docs', '/api/resource1', '/api/resource2', '/api/resource3' ] # Конфигурация HTTP-входа Unified Agent unified_agent_url = 'http://51.250.98.18:22132/write' # Возможные коды ответа и их вероятности response_codes = [200, 201, 400, 404, 500] response_weights = [0.7, 0.1, 0.1, 0.05, 0.05] # Генерация и отправка логов на HTTP-вход def generate_and_send_logs(): while True: url = random.choice(urls) status_code = random.choices(response_codes, response_weights)[0] log_message = f"Requested {url}, received status code {status_code}" print(log_message) # Отправка лога на HTTP-вход Unified Agent send_logs_to_http(log_message) # Отправка логов каждые 5 секунд time.sleep(5) # Отправка логов на HTTP-вход def send_logs_to_http(log_message): headers = {"Content-Type": "text/plain"} response = requests.post(unified_agent_url, headers=headers, data=log_message) if response.status_code == 200: print("Log sent successfully") else: print(f"Failed to send log: {response.status_code}") if __name__ == "__main__": generate_and_send_logs()Где unified_agent_url— публичный IP-адрес виртуальной машины с Unified Agent.По умолчанию Unified Agent принимает данные на всех интерфейсах. Поэтому публичный IP-адрес можно указывать, 
 даже когда источник логов находится на той же ВМ. Если публичного адреса нет, укажитеlocalhost.
- 
Обновите версии установленных пакетов: sudo apt-get update
- 
Установите Python: sudo apt install python3
- 
Запустите приложение: python3 logtest.py
Посмотрите логи
- В консоли  управления- Выберите сервис Cloud Logging.
- Выберите лог-группу по умолчанию default.
- Перейдите на вкладку Логи.
- На открывшейся странице отобразятся записи.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы посмотреть записи в лог-группе, выполните команду:
yc logging read --folder-id=<идентификатор_каталога>
Где --folder-id — идентификатор каталога, который указан в настройках Yandex Unified Agent.
Чтобы посмотреть записи в лог-группе, воспользуйтесь вызовом gRPC API LogReadingService/Read.
Удалите созданные ресурсы
Если созданные ресурсы вам больше не нужны, удалите их: