Практическая работа. Отправка собственных метрик
Кратко:
- Отправка собственных метрик в Yandex Monitoring возможна через API.
- Для этого нужно получить IAM-токен и создать файл с телом запроса (my-metrics.json).
- В файле указывается список метрик и значения на разные моменты времени.
- Отправлять запрос с указанием идентификатора каталога и имени сервиса custom.
- На дашборде можно создать виджет с графиком пользовательских метрик.
- Мониторинг метрик Linux возможен с помощью Yandex Unified Agent.
- Установка Yandex Unified Agent на виртуальной машине с ОС Ubuntu.
- Создание файла config.yml с типовой спецификацией для доставки метрик Linux.
- Настройка виджета для мониторинга метрик Linux с использованием системных метрик Linux.
Практическая работа. Отправка собственных метрик
Часто бывает полезно отслеживать более широкий набор метрик, чем тот, что доступен в Yandex Monitoring «из коробки».
Предположим, вам интересно узнать, сколько людей заходит на ваш сайт и как их число зависит от времени дня или дня недели. Вы можете выгружать эти данные из Яндекс Метрики или вашей собственной аналитической системы и самостоятельно загружать в Yandex Monitoring с помощью API.
Давайте попробуем сделать это с нашим сайтом.
Отправка метрик через API
-
Получите IAM-токен:
- Инструкция для аккаунта на Яндексе.
- Инструкция для сервисного аккаунта.
Обратите внимание — токены устаревают через 12 часов после создания. Поэтому если вы сделаете паузу при выполнении данной практической работы, для продолжения лучше запросить новый токен.
-
Сохраните токен в переменной окружения, так его будет проще использовать:
export IAM_TOKEN=<IAM-токен> -
Создайте файл с телом запроса, например
my-metrics.json. В свойствеmetricsуказывается список метрик для записи. Пусть это будет количество пользователей сайта. В массивеtimeseriesуказываются значения на разные моменты времени (измените число на сегодняшнее в формате год-месяц-день).{ "metrics": [ { "name": "number_of_users", "labels": { "site": "aibolit" }, "type": "IGAUGE", "timeseries": [ { "ts": "2021-05-10T10:00:00Z", "value": "22" }, { "ts": "2021-05-10T11:00:00Z", "value": "44" }, { "ts": "2021-05-10T12:00:00Z", "value": "11" }, { "ts": "2021-05-10T13:00:00Z", "value": "55" }, { "ts": "2021-05-10T14:00:00Z", "value": "33" } ] } ] }
-
Отправьте запрос, указав в нем идентификатор каталога и имя сервиса
custom(это имя указывается для всех пользовательских метрик):curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@<путь_к_файлу_my-metrics.json>' \ 'https://monitoring.api.cloud.yandex.net/monitoring/v2/data/write?folderId=<идентификатор_каталога>&service=custom'
При выполнении этой команды может вернуться ошибка:
{"writtenMetricsCount":0,"errorMessage":"Response not OK from all clusters
UNKNOWN_SHARD: Metrics storage is not initialized yet, please wait
UNKNOWN_SHARD: Metrics storage is not initialized yet, please wait"}
Если это произошло - подождите несколько минут и повторите запрос.
Мониторинг пользовательских метрик
-
Создайте на вашем дашборде новый виджет с графиком, назовите его «Число пользователей сайта».
-
В виджете создайте запрос с параметрами
service = Custom Metricsиname = number_of_users. Убедитесь, что в виджете выбран нужный период:
Этот график станет нагляднее, если вместо точек отображать столбцы. Тип графика можно изменить с помощью кнопки в правом верхнем углу виджета:
Мониторинг метрик Linux
Другой пример — ваши приложения запущены на виртуальных машинах под Linux. По умолчанию вы можете посмотреть утилизацию ресурсов процессора или диска для ВМ в целом. Но вам будет полезно знать, сколько ресурсов потребляет каждое из них. В Yandex Monitoring вы можете отслеживать системные метрики Linux, такие как объём свободной памяти или загрузка процессора. Но для этого нужно дополнительно настроить отправку этих метрик с помощью Yandex Unified Agent, который мы уже упоминали.
Установка Yandex Unified Agent
-
Создайте виртуальную машину. На неё вы будете устанавливать Yandex Unified Agent. Можете использовать образ с ОС Ubuntu, который вы создали ранее и поместили в Container Registry. Назовите машину, например,
for-ua.При создании используйте ваш сервисный аккаунт. Задайте логин (напримерua-user) и ssh-ключ. -
Для сервисного аккаунта добавьте роль
monitoring.editor. -
Посмотрите публичный IP-адрес машины
for-uaи зайдите на неё по ssh:ssh ua-user@<публичный_адрес_ВМ>Теперь вы можете установить Yandex Unified Agent:ua_version=$(curl -s https://storage.yandexcloud.net/yc-unified-agent/latest-version) bash -c 'curl -s -O https://storage.yandexcloud.net/yc-unified-agent/releases/$ua_version/unified_agent && chmod +x ./unified_agent'Также вы можете выбрать опцию Установить в поле Агент сбора метрик при создании ВМ, тогда Yandex Unified Agent будет установлен автоматически. -
Создайте файл
config.ymlс типовой спецификацией для доставки метрик Linux.В параметреfolder_idукажите идентификатор вашего каталога.status: port: "16241" storages: - name: main plugin: fs config: directory: /var/lib/yandex/unified_agent/main max_partition_size: 100mb max_segment_size: 10mb channels: - name: cloud_monitoring channel: pipe: - storage_ref: name: main output: plugin: yc_metrics config: folder_id: "<идентификатор_каталога>" iam: cloud_meta: {} routes: - input: plugin: linux_metrics config: namespace: sys channel: channel_ref: name: cloud_monitoring - input: plugin: agent_metrics config: namespace: ua channel: pipe: - filter: plugin: filter_metrics config: match: "{scope=health}" channel_ref: name: cloud_monitoring import: - /etc/yandex/unified_agent/conf.d/*.ymlВ секцииstatusдостаточно указать порт для просмотра статуса Yandex Unified Agent.Секцияstorageсодержит список хранилищ, в которых будут находиться выгруженные данные. Для практической работы достаточно одного файлового хранилища (fs).Секцияchannelsсодержит список именованных каналов, к этим каналам можно обращаться по имени из других секций спецификации. Здесь обозначен один канал с именемcloud_monitoring. К нему идёт обращение из секцииroutes, которая содержит список маршрутов доставки метрик.Подробнее о конфигурировании Yandex Unified Agent вы можете почитать в документации. -
Скопируйте файл спецификации в виртуальную машину
for-ua:scp config.ymlАдрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. :config.yml -
Теперь запустите Unified Agent с созданной спецификацией:
sudo ./unified_agent --config config.ymlЕсли запуск прошел успешно, в конце вы увидите сообщение такого вида:... NOTICE agent started
Настройка виджета для мониторинга метрик Linux
-
Создайте на вашем дашборде новый виджет с графиком, назовите его «Метрики Linux».
-
В виджете создайте запрос с параметром
service = Custom Metrics. В параметреnameвыберите любой параметр, начинающийся сsys— всё это системные метрики, поставляемые Unified Agent. Например,name = sys.memory.MemAvailable.
Теперь в виджете отображается график наличия свободной оперативной памяти в виртуальной машинеfor-ua.
- Категория: Cloud Services Engineer
- Просмотров: 857
Начало работы с Yandex Monitoring
Кратко:
- Создание дашборда в Yandex Monitoring
- Мониторинг сайта клиники «Доктор Айболит» с помощью утилиты wget
- Добавление виджета с графиком в дашборд
- Настройка периода времени для графика
- Растяжка и перемещение виджета на дашборде
- Редактирование и настройка виджета
- Добавление функции суммирования трафика в виджет
Начало работы с Yandex Monitoring
В этой практической работе вы создадите свой дашборд в сервисе Yandex Monitoring.
Подготовка. Что мониторить
Для мониторинга используйте сайт клиники «Доктор Айболит», который вы создавали на уроке про Object Storage. Будем отслеживать объём трафика, поступающий на сайт. Чтобы имитировать нагрузку, мы воспользуемся утилитой
wget, которую уже использовали в практической работе с кластером Managed Kubernetes. Если у вас не установлена эта утилита, её можно скачать здесь. Адрес же своего сайта можно посмотреть в Object Storage.
while true; do wget -q -O- <адрес_сайта>; done
Создание дашборда и виджета
-
Откройте начальную страницу Yandex Monitoring. На вкладке Главная нажмите кнопку Создать дашборд.

-
Открылось окно создания дашборда. В правом верхнем углу нажмите кнопку Сохранить, введите название нового дашборда и сохраните его.
-
Новый дашборд пустой, он не содержит виджетов. Давайте добавим виджет с графиком. Нажмите кнопку Редактировать и в блоке Добавить виджет выберите График.
-
Метрики добавляются в виджет с помощью запросов. Но это совсем не сложно — запросы создаются с помощью удобного конструктора, размещённого в нижней части страницы.Конструктор сам предлагает, какие параметры нужно заполнить, и показывает доступные значения.

-
Выберите
service = Object Storage, затемname = trafficиresource_id = <имя_бакета_с_сайтом>. Больше ничего выбирать не нужно. Этот запрос означает, что вы хотите мониторить входящий и исходящий трафик своего сайта.Сразу после сохранения запроса вверху отобразятся графики, которые соответствуют указанным параметрам.
-
Вы можете настроить период времени, который хотите видеть на графике. В нашем случае будет более наглядно, если вы укажете небольшой период, например, 10 или 15 минут.

-
Нажмите кнопку Сохранить, чтобы созданный виджет появился на вашем новом дашборде.Вы можете растянуть или сжать виджет до нужного размера, потянув мышью за правый нижний угол с треугольником, и перетащить виджет на нужное место на дашборде.В правом верхнем углу виджета отображаются значки для редактирования («карандаш») и настройки («шестеренка»). Вы можете в любой момент отредактировать запрос, по которому строится график, а в настройках можете изменить название виджета или включить отображение легенды. Также вы можете удалить виджет, если он больше не нужен.

-
Задайте название для вашего виджета, например: «Трафик сайта клиники Айболит».
-
Нажмите кнопку Сохранить, чтобы сохранить новый виджет на дашборде.
Использование функций в виджетах
-
На виджете вы видите два отдельных графика для входящего и исходящего трафика. Допустим, вы хотите также посмотреть и суммарный трафик. Вернёмся в созданный ранее виджет и добавим к нему еще один график.Нажмите на виджете значок редактирования («карандаш»).
-
Внизу нажмите кнопку Добавить запрос. Повторите все настройки предыдущего запроса. Затем в строке ниже добавьте функцию — нажмите значок «+», выберите раздел Комбинирование и функцию
series_sum(). В скобках в данном случае ничего указывать не нужно.
-
На графике появилась ещё одна линия, которая показывает значения суммарного трафика. Если вы наведете на неё указатель мыши, то во всплывающем окне увидите, что у этой метрики нет имени.Чтобы добавить имя, в той же строке, где вы описывали функцию, снова нажмите на значок «+», выберите раздел Другое и функцию alias. В скобках введите имя метрики, например,
Traffic_Total.Теперь при наведении указателя мыши на график будет отображаться это имя.
-
Нажмите кнопку Сохранить. На дашборде вы увидите обновленный виджет с тремя графиками. Снова нажмите кнопку Сохранить, чтобы сохранить изменения на дашборде.
-
Виджеты можно копировать с одного дашборда на другой с помощью меню:

- Категория: Cloud Services Engineer
- Просмотров: 702
Зачем нужен мониторинг. Yandex Monitoring
Кратко:
- Мониторинг - контроль за изменяющимися со временем характеристиками системы (метриками).
- Задачи мониторинга: хранение и визуализация метрик в реальном времени, оповещение пользователя о проблемах.
- Мониторинг необходим для построения надёжных приложений и сервисов.
- Yandex Monitoring - инструмент для мониторинга облачной инфраструктуры Yandex Cloud.
- Системные метрики регистрируются сразу при создании ресурса в Yandex Cloud.
- Метрики визуализируются с помощью графиков, виджеты позволяют группировать метрики.
- В Yandex Monitoring есть готовые дашборды для облачных сервисов.
- Пользовательские дашборды позволяют вывести любые метрики, включая свои.
- Метрики Yandex Cloud можно использовать в других сервисах и приложениях.
Зачем нужен мониторинг. Yandex Monitoring
Мониторинг — это контроль за характеристиками системы, меняющимися со временем. Это могут быть трафик сайта, утилизация памяти или ресурсов процессора и т.д. Такие характеристики называются метриками. Их изменение отслеживают для того, чтобы они не выходили за границы приемлемых значений. Например, если загруженность процессора близка к 100%, то стоит нарастить вычислительные ресурсы.
Задачи мониторинга — хранить и визуализировать метрики в реальном времени, а также оповещать пользователя, если что-то пошло не так.
Нужен ли вам мониторинг
Единственно верный ответ — да, мониторинг нужен всегда. Без мониторинга невозможно построить надёжное приложение или сервис.
Даже если ваше приложение небольшое и не критически важное, мониторинг будет полезен. Он поможет вовремя обнаружить, что на сервере заканчивается оперативная память или свободное место на диске, позволит отследить аномально быстрый рост числа аккаунтов и т.д.
В Yandex Cloud есть собственный инструмент для мониторинга облачной инфраструктуры и размещённых в ней сервисов — Yandex Monitoring.
Обзор Yandex Monitoring
У каждого ресурса в Yandex Cloud есть набор системных метрик. Такие метрики начинают регистрироваться сразу же в момент создания ресурса. Например, для виртуальной машины можно следить за загрузкой процессора и утилизацией оперативной памяти.
Метрики обычно визуализируются с помощью графиков (значения метрик можно выводить и в текстовом виде, но это менее наглядно). Блоки с графиками или текстом называются виджетами. Несколько виджетов можно расположить рядом, тогда получается дашборд.
В Yandex Monitoring есть готовые дашборды для облачных сервисов — виртуальных машин, балансировщиков, кластеров Managed Kubernetes и других. Сервисные дашборды не надо настраивать, они работают из коробки.

Когда вы наводите указатель мыши на какой-то график на дашборде, всплывает окно со значением метки.

Если на сервисных дашбордах информации недостаточно, можно настроить собственные, пользовательские дашборды и вывести на них практически любые системные или пользовательские метрики. Вы узнаете, как это сделать, в следующей практической работе.
Пользовательские метрики можно создавать не только для сервисов Yandex Cloud, но и для своих приложений. Так вы сможете собрать все критические показатели вместе и наблюдать за ними, не переключаясь между различными системами мониторинга.
Выгрузка и загрузка метрик
Вы можете использовать метрики Yandex Cloud в другом сервисе или приложении. Для этого их выгружают в файл. И наоборот, в Yandex Cloud Monitoring можно загружать метрики из других приложений и сервисов, чтобы было удобнее контролировать их работу без переключения на разные дашборды. Подробнее мы рассмотрим эти кейсы в практических работах.
За загрузку метрик отвечает агент для поставки метрик Yandex Unified Agent.
Хранение метрик и удаление устаревших метрик
Как мы уже говорили, системные метрики автоматически собираются со всех активных ресурсов Yandex Cloud. После удаления ресурса сбор метрик с него прекращается, но уже собранные метрики не удаляются сразу, а хранятся в течение 30 дней.
Например, если вы удалили виртуальную машину 1 августа, то её метрики будут доступны в Yandex Monitoring до 31 августа.
Любые системные метрики, для которых новые значения не поступали в течение 30 дней, считаются устаревшими. Такие метрики автоматически удаляются из Yandex Monitoring раз в сутки.
Например, даже если вы не удаляли виртуальную машину, а просто остановили её и не запускали в течение месяца, то собранные для неё метрики будут удалены.
Автоматическое удаление затрагивает только системные метрики и не распространяется на пользовательские.
- Категория: Cloud Services Engineer
- Просмотров: 1044
ПР. Сбой приложения
Кратко:
- Сбой приложения: ситуация, когда ВМ работоспособна, но произошла ошибка в приложении.
- Проверка состояния ВМ: активация проверки состояний в консоли управления и проверка доступности сервера в браузере.
- Остановка процессов nginx на виртуальной машине для имитации сбоя приложения.
- Переключение трафика на другую виртуальную машину при обнаружении сбоя приложения.
- Подтверждение недоступности сервера после остановки NGINX.
- Наблюдение за изменением состояния виртуальной машины при сбое приложения.
- Автоматическая работа Yandex Cloud над восстановлением работоспособности группы виртуальных машин.
Практическая работа. Сбой приложения
Последний сценарий, который мы рассмотрим, это сбой приложения. Ситуация, когда сама ВМ работоспособна, но по каким-то причинам произошла ошибка в приложении. Это может быть потеря соединения с базой данных или какой-то баг в запущенном приложении (например утечка памяти). Давайте сымитируем такой сценарий. На наших виртуальных машинах запущен только веб-сервер NGINX, давайте остановим его. Но сначала включим проверку состояния ВМ.
- В консоли управления откройте вкладку Обзор для вашей группы виртуальных машин, нажмите кнопку Изменить и активируйте проверку состояний. Сохраните изменения.

-
В браузере откройте страницу с внешним IP-адресом балансировщика, привязанного к вашей группе, и посмотрите, на какую из машин выводится трафик. Узнайте внешний IP-адрес этой машины.
-
В новой вкладке браузера откройте IP-адрес этой виртуальной машины и убедитесь, что выводится приветственная страница, т. е. сервер доступен.
-
Помните, когда вы меняли файл конфигурации для группы машин, вы добавили в него пользователя
my-user? Теперь он вам пригодится — из консоли зайдите на ВМ от его имени:ssh my-user@<внешний_IP-адрес_ВМ> -
Посмотрите список запущенных процессов:
ps auxУбедитесь, что в списке есть процессыnginx:

-
Теперь остановите эти процессы, чтобы сделать сервер недоступным:
sudo killall nginx -
В браузере обновите страницу балансировщика. Вы увидите, что теперь трафик направляется на другую виртуальную машину группы. Это означает, что Instance Group обнаружил сбой приложения и переключил трафик.
-
Теперь обновите страницу виртуальной машины, на которой вы остановили NGINX. Убедитесь, что сервер теперь недоступен.
-
Откройте список машин вашей группы и проследите, как меняется состояние одной из машин.Сначала будет закрыт трафик (статус
Closing traffic), затем виртуальная машина будет остановлена (статусStopping instance), а затем перезапущена (статусRunning actual). -
Убедитесь, что веб-сервер на этой ВМ снова доступен.
Мы проверили четыре основных сценария сбоев и убедились, что Yandex Cloud автоматически отрабатывает их и восстанавливает работоспособность группы.
Теперь вы можете удалить группу виртуальных машин, в этом курсе она больше не понадобится.
- Категория: Cloud Services Engineer
- Просмотров: 571
ПР. Обновление приложения
Кратко:
- Обновление приложений на виртуальных машинах происходит по тем же правилам, что и обновление ОС.
- Первый вариант обновления: изменить шаблон ВМ и выбрать образ с Ubuntu 22.04, параметры политики развертывания: группу нельзя расширять, уменьшать только на одну ВМ.
- Второй вариант обновления: изменить параметры развертывания, выбрать образ с Ubuntu и NGINX, создать новую машину, открыть трафик, вывести из строя устаревшие ВМ.
Практическая работа. Обновление приложения
В практической работе с CLI вы уже научились обновлять операционную систему для группы виртуальных машин. Любые приложения, установленные на ВМ, обновляются по тем же правилам. Давайте рассмотрим этот процесс ещё раз.
Первый вариант обновления
- Если вы работаете в консоли управления, измените шаблон ВМ и выберите образ с ОС Ubuntu 22.04. Убедитесь, что параметры политики развертывания такие: группу нельзя расширять, а уменьшать можно только на одну ВМ.

Политика развёртывания группы виртуальных машин (вариант 1)
Если вы работаете в командной строке, в спецификации
specification.yaml измените параметр image_id (например с fd8s2gbn4d5k2rcf12d9 на fd8l45jhe4nvt0ih7h2e) и запустите обновление группы:
yc compute instance-group update \
--id <instance_group_id> \
--file <путь_к_файлу_specification.yaml>
-
В консоли управления на странице группы ВМ перейдите на вкладку Список ВМ и проследите, как меняются статусы машин.
-
Сначала вы увидите статус
Running outdated. Это означает, что машины работают со старой версией приложения. -
Затем одна из машин начинает обновляться: для неё закрывается трафик (статус
Closing traffic), она останавливается (статусStopping instance), обновляется (статусUpdating instance), затем трафик снова открывается (статусOpening traffic), и наконец статус меняется наRunning actual. Обновление выполнено. -
Затем то же самое последовательно выполняется для остальных машин в группе.
Порядок обновления зависит от политики развёртывания. Мы запретили увеличивать размер группы и указали, что одновременно неработоспособной может быть только одна машина. Именно так и произошло обновление: машины по одной выводились из строя, обновлялись и запускались снова.
Второй вариант обновления
- Теперь давайте изменим настройки политики развёртывания.
Если вы работаете в консоли управления, измените шаблон ВМ и выберите образ с Ubuntu и NGINX, созданный ранее и помещённый в Container Registry.
Измените параметры развёртывания. Теперь группу можно расширять на одну ВМ, а уменьшать нельзя:

Политика развёртывания группы виртуальных машин (вариант 2)
Если вы работаете в командной строке, в спецификации
specification.yaml измените параметр image_id (например, снова с fd8ju9iqf6g5bcq77jns на fd8s2gbn4d5k2rcf12d9). Параметры обновления измените так:
deploy_policy:
max_unavailable: 0
max_expansion: 1
Запустите обновление группы.
-
В консоли управления на странице группы ВМ перейдите на вкладку Список ВМ и проследите, как меняются статусы машин.
-
Сначала вы увидите статус
Running outdated. Затем создаётся новая машина (статусCreating instance), для неё открывается трафик (статусOpening traffic), статус машины меняется наRunning actual, при этом одна из «устаревших» ВМ выводится из строя (статусыClosing trafficиStopping instance). -
Затем то же самое последовательно выполняется для остальных машин в группе.
- Категория: Cloud Services Engineer
- Просмотров: 503