Передача логов через 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 или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
или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
Посмотрите логи
- В консоли управления
перейдите в каталог, который указали в настройках Yandex Unified Agent. - Выберите сервис Cloud Logging.
- Выберите лог-группу по умолчанию
default
. - Перейдите на вкладку Логи.
- На открывшейся странице отобразятся записи.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы посмотреть записи в лог-группе, выполните команду:
yc logging read --folder-id=<идентификатор_каталога>
Где --folder-id
— идентификатор каталога, который указан в настройках Yandex Unified Agent.
Чтобы посмотреть записи в лог-группе, воспользуйтесь вызовом gRPC API LogReadingService/Read.
Удалите созданные ресурсы
Если созданные ресурсы вам больше не нужны, удалите их: