Как стать автором
Обновить
70.75
Слёрм
Учебный центр для тех, кто работает в IT

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

Время на прочтение7 мин
Количество просмотров3.5K

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

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

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

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

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

Записаться и получить ссылку на трансляцию (прим. ссылка открывается в текущем окне.)

Курс «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 месяца. Каждую неделю открываем по новой теме, в конце закрепим проектом. Рекомендуем решить рабочую задачу или предложим свои варианты. Больше интересного расскажем на открытом уроке.

Теги:
Хабы:
+10
Комментарии0

Другие новости

Информация

Сайт
slurm.io
Дата регистрации
Дата основания
Численность
51–100 человек
Местоположение
Россия
Представитель
Антон Скобин