Главная страница » Открытый урок «Пишем Custom Prometheus Exporter на Python», 19 января
Открытый урок «Пишем Custom Prometheus Exporter на Python», 19 января
Блог компании Southbridge

Открытый урок «Пишем Custom Prometheus Exporter на Python», 19 января

19 января Слёрм проведёт открытый урок «Пишем Custom Prometheus Exporter на Python». В главной роли Денис Наумов – спикер курса «Python для инженеров». Начало в 19:00 по Москве.

Научим писать Prometheus Exporter для случаев, когда сервис не умеет работать по протоколу Prometheus, а готовых экспортеров нет. Все что нужно – Python и библиотеки.

Покажем, как экспортировать данные в популярные типы протокола Prometheus: Counters, Gauges, Histograms, Summary на примере задачи с расчетом SLA ответов по API и слежением за бизнес-метриками.

И расскажем, как запустить экспортер в продакшен.

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

Записаться и получить ссылку на трансляцию: https://slurm.io/course-python-for-ops#webinar (прим. ссылка открывается в текущем окне.)

Курс «Python для инженеров»

Это не будет «тот самый курс от Hello World до декораторов с «гарантированным» трудоустройством». Обучение для тех, кто готов совершенствовать уровень программирования и на деле внедрять автоматизацию, сокращая рутину.

Программа курса с комментариями спикеров, по датам

№1: Основы синтаксиса и структур в Python

Открытие темы и встреча: 31 января.

Зачем: научиться понимать логику программ на Python и не только, а так же писать простые программы – важнейшая задача. «Самое то», если вы не знакомы с синтаксисом Python.

  • Типы данных и переменные, мутабельные/иммутабельные и простые/составные типы данных, приемы отладки.

  • Условный оператор – логические операторы, простые условия, вложенные условия и замена оператора switch.

  • Базовые циклы – циклы while и for, итераторы, прерывания циклов.

  • Функции, методы строк, списков и словарей.

  • Генерация и обработка исключений.

  • Практика: набор небольших микрозаданий по каждому уроку.

№2: Улучшенное владение Python: оптимизации и ООП

Открытие темы: 7 февраля.

Зачем: Освоим особенности Python – именно за их счет он так прост и практичен. Также раскроем значение тех самых трех букв (мы про ООП) без академической теории и с понятным предназначением.

  • Продвинутая работа с циклами – оператор yield и генераторы, инсайты о циклах в Python, оператор else в цикле, оптимизации циклов comprehensions, etc.

  • Специальные типы структур: frozendict, defaultdict, etc.

  • Базовые понятия ООП: классы, экземпляры классов, инкапсуляция, наследование и полиморфизм.

  • Создание контекстных менеджеров для своих типов: конструкция with.

  • Практика: набор небольших микрозаданий по каждому уроку.

  • Продвинутая практика: аудит использования услуг.У CTO появилось подозрение, что некоторые услуги и сервисы уже не используются командами. Проблема заключается в том, что модуль мониторинга используемых услуг не обновлялся последние десять лет: он не может выгрузить агрегированные данные, да и формат возвращаемых значений не соответствует общепринятым стандартам. Вы были избраны, чтобы извлечь снятые показатели, агрегировать их по типу и команде и предоставить данную информацию CTO для первоначальной оценки масштабов проблемы.

№3: Подключения по сети

Открытие темы: 14 февраля.

Зачем: Практически каждый сервис имеет интерфейс для подключения по какому-либо сетевому протоколу. А без подключения невозможно взаимодействие, к счастью в экосистеме Python найдутся модули-клиенты практически для любых протоколов.

  • Пакет pip и установка сторонних модулей.

  • Модуль Paramiko для выполнения команд по ssh.

  • Модуль requests для выполнения HTTP запросов.

  • Обзор модулей для работы с базами данных и брокерами сообщений.

  • Практика. Команда разработки внедряет уже не новую методологию: Допустил возникновение алерта – получи задачу. Аналитическая подсистема ищет только отборные ошибки и складывает сообщения о них в брокер сообщений Kafka. Ваша задача завершить цикл возврата багов разработчикам: ваш консьюмер должен автоматически создавать задачи с нужным описанием и приоритетом в Trello.

№4: Работа с текстом в различных форматах

Открытие темы: 21 февраля.

Зачем: Подключение к сервису – только половина дела. Другая половина это обмен информацией. А информация зачастую представляет собой набор текстовых символов в определенном формате. Раскодировать и закодировать помогут модули. Информация не нужна вся целиком? Извлечь важное, отбросив остальное помогут регулярные выражения.

  • Модуль re и регулярные выражения.

  • Модули работы с данными в разных форматах: separated values, json, yaml, xml.

  • Использование аргументов командной строки: модуль argparse.

  • Практика: создание источника данных об использовании услуг.В ходе аудита использования услуг вы выявили важную для бизнеса информацию, заинтересовался даже CEO. Было принято решение проанализировать потерянные деньги и больше не допускать таких ситуаций. Для этого нужно дать аналитикам инструмент получения данных, чтобы они подготовили отчеты. Проблема заключается в том, что модуль мониторинга возвращает лимиты по услугам по отдельному запросу в форматах yaml, а цены за услуги возвращаются биллинговой системой в формате xml. Необходимо срастить данные о текущей загрузке с лимитами и ценами. Агрегированную информацию отдел аналитики запросил в формате JSON с возможностью указать интервал времени и шаг агрегации.

№5: Взаимодействие с операционной системой

Открытие темы: 28 февраля.

Зачем: Важность взаимодействия с операционной системой не нужно объяснять дополнительно. Как подружить её с Python – в этом уроке.

  • Чтение и запись файлов.

  • Модуль os – чтение environment variables, работа с директориями и правами, работа с процессами.

  • Модуль subprocess для интерактивного взаимодействия с процессами.

  • Практика: автоматическое предоставление доступов к серверам.В ходе кампании по отказу от неиспользуемых услуг возникла курьезная ситуация: сервер продуктовой команды отключили, но инфраструктурная команда периодически использовала его в качестве хоста для стейджинга. Выяснилось, что продуктовая команда не использовала его потому что периодически кто-то перезаписывал их настройки своими. Было решено, что теперь ресурс будет закрепляться только за членами одной команды, а избежать ошибок поможет автоматика. Вам, как заварившему эту кашу, необходимо написать агент, который будет периодически опрашивать систему управления правами и вносить изменения в конфигурации прав внутри установленных сервисов и по необходимости давать сервисам команду перечитать конфигурации.

№6: K8S оператор на Python (live-coding stream)

Открытие темы и встреча: 9 марта.

Зачем: расширим возможности K8S под свои задачи.

№7: Пишем свой модуль для Ansible

Открытие темы: 14 марта.

Зачем: Ansible – мощная система управления конфигурациями, да еще и с возможностью расширения собственными модулями. Какое совпадение, что она сама и большинство модулей написаны на Python.

  • Написание своих модулей для ansible.

  • Практика: написание модуля управления правами.Давным-давно, в далёкой-далёкой галактике вы уже писали агент для выдачи прав к определенным сервисам. Пришло время поменять pull на push и в этом поможет ansible. Все что нужно – лишь модуль.

№8: Создание и кейсы использования своего API

Открытие темы: 21 марта.

Зачем: подготовка кода к деплою – одна из важнейших задач. Сделать этот процесс гибче и удобнее помогают собственные скрипты для stage пайплайнов.

  • Создание REST API на Flask.

  • Создание своего prometheus exporter с Prometheus Python Client и Flask.

  • Практика: выгрузка данных в стороннюю систему мониторинга.Затраты на неиспользуемое оборудование превысили даже пессимистичные прогнозы. Теперь у команды инженеров есть еще одна зона ответственности – мониторинг неиспользуемых услуг. Для этого вам необходимо периодически опрашивать биллинговую систему через ваш скрипт и передавать данные в Prometheus. Формат получаемых данных все еще не подходит. Вам необходимо реализовать коннектор. А заодно и написать эндпоинт, чтобы отдел аналитики всегда имел под рукой актуальную информацию в формате JSON.

АМА-сессия со спикерами курса

Встреча: 25 марта.

Встречаемся, чтобы обсудить волнующие вопросы участников курса.

№9: Тестирование API своего приложения

Открытие темы: 28 марта.

Зачем: иногда лучше не иметь никакого кода, чем код, который работает нестабильно. Для того, чтобы не бояться сломать свой код нужно писать тесты.

  • Виды тестов: unit, интеграционные и end-to-end.

  • Обзор модуля pyhamcrest и его матчеров.

  • Архитектура и возможности pytest.

  • Использование pytest и pyhamcrest для написания юнит-тестов.

  • Практика: написание тестов при помощи pytest и pyhamcrest для вашего API.

№10: Взаимодействие с CVS и DevOps системами

Открытие темы: 4 апреля.

  • Использование сторонних модулей на примере интеграции в пайплайны Gitlab.

  • Использование pygit для получения информации об изменениях в коде.

  • Практика: генерация change log из коммитов.Ваши решения настолько понравились команде инженеров, что они вдохновились ими и начали писать свои. Только вот описания к релизам сделать всегда забывают. Для этого командой было принято решение внедрить commit conventions и генерировать ченджлоги прямо из коммитов при слиянии dev-бранча с релизным, а если название коммита не соответствует commit conventions – не допускать merge-request до merge.

№11: Chatops с Errbot на Python

Открытие темы: 11 апреля.

Зачем: Основные проблемы бизнеса не в производительности приложений и даже не в возникающих в коде ошибках. Самые серьезные проблемы возникают когда коммуникация сотрудников происходит неэффективно. Chatops является одним из способов решения этой проблемы.

  • Концепция Chatops: какие проблемы решает внедрение Chatops?

  • Фреймворк Errbot: установка, создание базового шаблон плагина, конфигурирование и запуск.

  • Фреймворк Errbot: создание своего плагина для Chatops с различными вариантами обработки сообщений.

Итоговый проект

Старт: 18 апреля.

Дедлайн ревью и защита для желающих: 29 апреля.

  • После курса у вас останется проект на гите: можете автоматизировать рабочую задачу или сделать один из предложенных вариантов.

  • Готовый проект можно использовать в качестве кейса для портфолио и показывать при трудоустройстве.

На этом курсе можно выбрать удобный формат обучения: от самостоятельного изучения материалов до ревью каждого задания спикером. На каждом формате обучения места ограничены.

Третий поток запустим 31 января, обучение продлится 3 месяца. Каждую неделю открываем по новой теме, в конце закрепим проектом. Рекомендуем решить рабочую задачу или предложим свои варианты. Больше интересного расскажем на открытом уроке.


Источник

Добавить комментарий

Оставить комментарий

четыре × 1 =

Рубрики