Forwarded from k8s (in)security (r0binak)
Сегодня хотим поделиться очередным новым проектом с просторов
Авторы позиционируют его как легковесный инструмент, для эксплуатации которого не нужен опыт настройки
GitHub – Dracan. Довольно сложно описать Dracan одним предложением, однако скорее его можно отнести к чему-то между Authorization Policy от Istio, Network Policy и WAF. Сейчас он умеет следующее:- HTTP Method Filtering
- JSON Validation
- Request Limiting
- Payload Limitation
- URI Filtering
- Header ValidationАвторы позиционируют его как легковесный инструмент, для эксплуатации которого не нужен опыт настройки
WAF или большая DevOps экспертиза.Forwarded from System Design & Highload (Alexey Rybak)
Очереди в 2025м, что выбрать: Kafka, RabbitMQ, NATS или что-то ещё?
Готова статья-расшифровка нашего стрима с Владимиром Перепелицей. Она получилась очень длинная, никогда в жизни такого на Хабре ещё не публиковали, но это потому что видео длинное. Ну и просмотреть расшифровку всё быстрее, чем просмотреть видео.
Для затравки вот кусочек статьи, где Владимир критикует RabbitMQ.
Алексей Рыбак: Где “накосяпорили” разработчики Rabbit, что скейлинг настолько неудобный? В двух словах это можно каким-то образом описать?
Владимир Перепелица: Смотри, мое личное впечатление от Rabbit, где накосячили его разработчики.
Взяв Erlang, они не сделали архитектуру масштабируемой, при том, что Erlang вроде бы под это заточен, он должен уметь раскидывать все по разным хостам, но они под это не заточили всю систему. Они не сделали систему, как в Kafka, докинул брокеров, раскидал на них задачи и система тащит больше. То есть они предусматривают, что у тебя есть узел, вот он брокер, все, у тебя все задачи проходят через этот брокер. Ты можешь поставить запасной, ты можешь поставить реплики, но они тоже будут запасными.
Алексей Рыбак: Я не могу сделать proxy-брокер?
Владимир Перепелица: Ну, можешь.
Алексей Рыбак: Взять и сказать, типа, раунд-робином давай кидай на этот апстрим.
Владимир Перепелица: Это все сделано костылями. Там есть федерация, через которую можно это все раскидывать. Я пока в курсе был Rabbit, то есть хотел показать, как бы это можно масштабировать так, чтобы красиво. Красиво не получилось. А показывать гору костылей как-то не очень. То есть, в общем, из коробки, вот прям поставил кластер, и он у тебя скейлится. Этого нет. Да, сделать это можно, но это, опять же, уже что-то добавленное сбоку, расширениями, не всегда просто устанавливаемыми. И странно, при том, что сама платформа языковая, кажется, это могла бы дать.
Ну и вторая ошибка – это, собственно, да, выбор платформы. Дефицит разработчиков всегда сказывается на популярности инструмента. То есть найти Erlang-разработчика – это такой, скажем так, челлендж, который еще захочет поинвестировать свое личное время, потому что это open-source. Гораздо проще сейчас найти GO'шный или RUST'овый open-source, или Java'вый, собственно, Kafka – тому пример. Java у нас много. Ее можно недолюбливать, у нее есть куча проблем, но она чертовски популярна. Поэтому выбор Erlang как инструмента, скажем так, скорее затормозил его развитие. И сейчас, если человек приходит, смотрит, возможно, пытается что-то улучшить, такой: «Ой, там что-то, что сейчас не популярно», человек уходит.
Читайте полную версию на Хабре: https://habr.com/ru/articles/899670/
——
Наши ближайшие запуски: PostgreSQL 17: архитектура и тюнинг SQL, Highload-буткемп, Системный дизайн.
Готова статья-расшифровка нашего стрима с Владимиром Перепелицей. Она получилась очень длинная, никогда в жизни такого на Хабре ещё не публиковали, но это потому что видео длинное. Ну и просмотреть расшифровку всё быстрее, чем просмотреть видео.
Для затравки вот кусочек статьи, где Владимир критикует RabbitMQ.
Алексей Рыбак: Где “накосяпорили” разработчики Rabbit, что скейлинг настолько неудобный? В двух словах это можно каким-то образом описать?
Владимир Перепелица: Смотри, мое личное впечатление от Rabbit, где накосячили его разработчики.
Взяв Erlang, они не сделали архитектуру масштабируемой, при том, что Erlang вроде бы под это заточен, он должен уметь раскидывать все по разным хостам, но они под это не заточили всю систему. Они не сделали систему, как в Kafka, докинул брокеров, раскидал на них задачи и система тащит больше. То есть они предусматривают, что у тебя есть узел, вот он брокер, все, у тебя все задачи проходят через этот брокер. Ты можешь поставить запасной, ты можешь поставить реплики, но они тоже будут запасными.
Алексей Рыбак: Я не могу сделать proxy-брокер?
Владимир Перепелица: Ну, можешь.
Алексей Рыбак: Взять и сказать, типа, раунд-робином давай кидай на этот апстрим.
Владимир Перепелица: Это все сделано костылями. Там есть федерация, через которую можно это все раскидывать. Я пока в курсе был Rabbit, то есть хотел показать, как бы это можно масштабировать так, чтобы красиво. Красиво не получилось. А показывать гору костылей как-то не очень. То есть, в общем, из коробки, вот прям поставил кластер, и он у тебя скейлится. Этого нет. Да, сделать это можно, но это, опять же, уже что-то добавленное сбоку, расширениями, не всегда просто устанавливаемыми. И странно, при том, что сама платформа языковая, кажется, это могла бы дать.
Ну и вторая ошибка – это, собственно, да, выбор платформы. Дефицит разработчиков всегда сказывается на популярности инструмента. То есть найти Erlang-разработчика – это такой, скажем так, челлендж, который еще захочет поинвестировать свое личное время, потому что это open-source. Гораздо проще сейчас найти GO'шный или RUST'овый open-source, или Java'вый, собственно, Kafka – тому пример. Java у нас много. Ее можно недолюбливать, у нее есть куча проблем, но она чертовски популярна. Поэтому выбор Erlang как инструмента, скажем так, скорее затормозил его развитие. И сейчас, если человек приходит, смотрит, возможно, пытается что-то улучшить, такой: «Ой, там что-то, что сейчас не популярно», человек уходит.
Читайте полную версию на Хабре: https://habr.com/ru/articles/899670/
——
Наши ближайшие запуски: PostgreSQL 17: архитектура и тюнинг SQL, Highload-буткемп, Системный дизайн.
👎1
Forwarded from DevOps FM
Disaster recovery — это стратегии и инструменты, которые помогают быстро восстановить инфраструктуру после сбоев и минимизировать простой. Традиционные DR-решения могут стоить сотни тысяч долларов в год. Terraform помогает реализовать эффективные стратегии аварийного восстановления, сокращая время простоя и потери данных, а также уменьшая затраты на инфраструктуру.
4 основных стратегии, которые можно реализовать с Terraform:
1. Backup & Restore
Самая базовая и наименее затратная стратегия. Однако, в зависимости от объема данных и процесса восстановления, может привести к высоким показателям RTO и RPO. Используйте
-refresh-only для синхронизации состояния после восстановления из резервной копии, чтобы избежать дрейфа.2. Pilot Light
Это стратегия, когда минимально необходимая инфраструктура постоянно поддерживается в рабочем состоянии, а при сбое быстро разворачивается полноценная копия. Через условные выражения в Terraform можно разворачивать только минимальный набор ресурсов, а остальные оставить выключенными. С такой стратегией масштабировать инфраструктуру до необходимого состояния быстрее, чем в Backup & Restore.
3. Active/Passive
При выборе данной стратегии, у вас будет два окружения: активное и пассивное, которое стоит в режиме ожидания и включается в случае сбоя основной. Пассивное минимально синхронизируется с активным, но не обслуживает пользователей. В Terraform можно отдельно помечать активный и пассивный стенд в конфигурации через conditionals. А при инциденте менять роли, активируя пассивную инфраструктуру и почти мгновенно масштабируя её до полной.
4. Multi-Region Active/Active
Дорогостоящая, но надёжная стратегия. Полноценные среды развёрнуты в нескольких регионах и одновременно обслуживают пользователей. Если один регион выходит из строя, трафик автоматически перенаправляется в другие работоспособные среды. Здесь модули Terraform могут использоваться для инкапсуляции и повторного использования компонентов инфраструктуры.
#devops #terraform
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4👍3❤1
Forwarded from Go Library
How to Troubleshoot OOM Issues in Go Applications Running on Kubernetes
https://medium.com/@csepulvedab/how-to-troubleshoot-oom-issues-in-go-applications-running-on-kubernetes-149e8bb104ac
https://medium.com/@csepulvedab/how-to-troubleshoot-oom-issues-in-go-applications-running-on-kubernetes-149e8bb104ac
Forwarded from Azalio_tech (Mikhail [azalio] Petrov)
🔒 Отключаем анонимный доступ к kube-apiserver, но оставляем health checks!
Привет! Недавно ко мне пришел коллега-безопасник (Дима привет!) с интересным вопросом: как полностью отключить анонимный доступ к API-серверу Kubernetes, но оставить рабочими проверки
Проблема в том, что по умолчанию (`--anonymous-auth=true`) любой может дернуть эндпоинты health-чеков и не только health-чеков:
Это удобно, но создает потенциальный вектор атаки, если RBAC настроен не идеально или найдется уязвимость. Безопасники такое не любят. 😟
К счастью, в KEP-4633 сообщество Kubernetes предложило решение! Теперь можно тонко настроить, к каким путям разрешен анонимный доступ, даже если глобально он выключен.
Сделать это можно так:
Сначала выключаем глобальный анонимный доступ в манифесте
Затем создаем файл конфигурации
*(Не забудьте добавить
В итоге получаем:
- Запросы к
- Запросы к другим путям (например,
Кстати, эта функциональность появилась как Alpha в Kubernetes 1.31 и стала Beta в 1.32.
Теперь можно спать спокойнее, зная, что анонимный доступ под контролем!
#kubernetes #k8s #security #authentication #kubeadm #devops #infosec
Привет! Недавно ко мне пришел коллега-безопасник (Дима привет!) с интересным вопросом: как полностью отключить анонимный доступ к API-серверу Kubernetes, но оставить рабочими проверки
/livez, /readyz и /healthz? 🤔 Сходу не ответил, полез копаться в исходниках и KEPах.Проблема в том, что по умолчанию (`--anonymous-auth=true`) любой может дернуть эндпоинты health-чеков и не только health-чеков:
curl -k https://<API_SERVER_IP>:6443/livez
# Output: ok
Это удобно, но создает потенциальный вектор атаки, если RBAC настроен не идеально или найдется уязвимость. Безопасники такое не любят. 😟
К счастью, в KEP-4633 сообщество Kubernetes предложило решение! Теперь можно тонко настроить, к каким путям разрешен анонимный доступ, даже если глобально он выключен.
Сделать это можно так:
Сначала выключаем глобальный анонимный доступ в манифесте
kube-apiserver:
spec:
containers:
- command:
- kube-apiserver
# ... другие флаги ...
- --anonymous-auth=false # <--- Выключаем!
- --authentication-config=/etc/kubernetes/auth-config.yaml # <--- Указываем конфиг
Затем создаем файл конфигурации
/etc/kubernetes/auth-config.yaml на control plane нодах и монтируем его в под kube-apiserver:
# /etc/kubernetes/auth-config.yaml
apiVersion: apiserver.config.k8s.io/v1beta1
kind: AuthenticationConfiguration
anonymous:
enabled: true # Включаем анонимный доступ *только* для указанных путей
conditions:
- path: /livez
- path: /readyz
- path: /healthz
*(Не забудьте добавить
volume и volumeMount в манифест kube-apiserver для этого файла)*В итоге получаем:
- Запросы к
/livez, /readyz, /healthz проходят как system:anonymous.- Запросы к другим путям (например,
/apis) без аутентификации получают 401 Unauthorized.Кстати, эта функциональность появилась как Alpha в Kubernetes 1.31 и стала Beta в 1.32.
Теперь можно спать спокойнее, зная, что анонимный доступ под контролем!
#kubernetes #k8s #security #authentication #kubeadm #devops #infosec
👍3
Forwarded from /usr/bin
Как работает ptrace в Linux и зачем он нужен
С ptrace можно подключаться к чужим процессам, читать и менять их память, перехватывать системные вызовы — и даже вежливо уволить sleep 9999. Читать дальше.
С ptrace можно подключаться к чужим процессам, читать и менять их память, перехватывать системные вызовы — и даже вежливо уволить sleep 9999. Читать дальше.
Forwarded from DevOps&SRE Library
updatecli
https://github.com/updatecli/updatecli
Automatically open a PR on your GitOps repository when a third party service publishes an update
https://github.com/updatecli/updatecli
Forwarded from Мониторим ИТ
How to use Prometheus to efficiently detect anomalies at scale
Допустим, вы работаете в дежурной смене и вам посреди ночи приходит уведомление. Вы его открываете, там ссылка на дашборд мониторинга, где вы задержку выполнения транзакций. Но является ли этот всплеск нормальным для этого времени суток? Является ли он вообще актуальным? Следующее, что вы делаете — вы расширяете временное окно и проверяете другие связанные показатели, пытаясь выяснить, что происходит.
Такая вот обычная ситуация. В этой статье в блоге Grafana разбираются какие математические выражения помогут наиболее эффективно и быстро обнаружить аномалии на различных графиках производительности.
Допустим, вы работаете в дежурной смене и вам посреди ночи приходит уведомление. Вы его открываете, там ссылка на дашборд мониторинга, где вы задержку выполнения транзакций. Но является ли этот всплеск нормальным для этого времени суток? Является ли он вообще актуальным? Следующее, что вы делаете — вы расширяете временное окно и проверяете другие связанные показатели, пытаясь выяснить, что происходит.
Такая вот обычная ситуация. В этой статье в блоге Grafana разбираются какие математические выражения помогут наиболее эффективно и быстро обнаружить аномалии на различных графиках производительности.
Forwarded from Библиотека Go-разработчика | Golang
🔧 Установка
go get github.com/patrickmn/go-cache
🚀 Быстрый пример
c := cache.New(5*time.Minute, 10*time.Minute)
c.Set("foo", "bar", cache.DefaultExpiration)
val, found := c.Get("foo")
if found {
fmt.Println("Found:", val)
}
• 5m — TTL по умолчанию для всех ключей
• 10m — интервал очистки просроченных ключей
• можно указать cache.NoExpiration — чтобы хранить вечно
🛠 Полезные методы
// Установить с TTL
c.Set("key", "value", time.Minute)
// Получить значение
c.Get("key")
// Удалить ключ
c.Delete("key")
// Очистить всё
c.Flush()
💬 Какой либой для кэша пользуетесь вы? Делитесь в комментариях👇
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from monhouse.tech
Дорогие друзья, уже на следующей неделе, 23 апреля в Амфитеатре Санкт-Петербургского конгресс-центра Ленполиграфмаш состоится очередной [ Big Monitoring Meetup ] 12!
Программа посвящена мониторингу и включает доклады по тематикам разработки, связи, менеджменту. BMM - площадка, где встречаются профессионалы и энтузиасты отрасли, чтобы обсудить современные тренды, обменяться опытом и найти новые решения для актуальных задач.
Нетворкинг, дружеская атмосфера, способствующая открытому общению и обмену знаниями. Одной из главных ценностей нашей конференции является возможность установить прямой контакт между разработчиками и пользователями.
Встречайте докладчиков двенадцатой конференции:
Презентация "3D визуализация в мониторинге: модный тренд или рабочий инструмент?"
— Андрей Никифоров. Генеральный директор [ ООО «ТРИТВИН» ]
Дискаверинг и мониторинг сетевого оборудования в системе мониторинга Saymon, часть вторая.
— Дмитрий Хандыго. Начальник отдела программных решений [ Inline Technologies ]
Мониторинга много не бывает. Или бывает? А наследованного и самописного?
— Михаил Еграмин. Главный инженер [ ООО «Сети ВЕБА» ]
Мониторинг не ограничен потреблением. Как FinOps помогает не упустить контроль над инфраструктурой.
— Гуляев Андрей. Руководитель развития продукта [ Инферит Клаудмастер ]
Облачная система мониторинга радиовещания.
— Александр Орлов. Менеджер [ ООО "Тракт-Софт" ]
Мониторинг — это просто.
— Вадим Исаканов. Старший инженер [ Платформа контейнеризации «Боцман» ]
Если инциденты случаются - значит это кому-нибудь нужно?
— Вероника Шапиро. Руководитель направления инфраструктурного мониторинга [ CLOUD.ru ]
Не упустите шанс стать частью профессионального сообщества, получить новые знания и вдохновение для развития своих проектов!
✔️ Зарегистрируйтесь сейчас, количество билетов ограничено
Подпишитесь на наш ТГ канал или ВК сообщество, чтоб не пропустить важные новости
До встречи на конференции [ Big Monitoring Meetup ] 12!
Программа посвящена мониторингу и включает доклады по тематикам разработки, связи, менеджменту. BMM - площадка, где встречаются профессионалы и энтузиасты отрасли, чтобы обсудить современные тренды, обменяться опытом и найти новые решения для актуальных задач.
Нетворкинг, дружеская атмосфера, способствующая открытому общению и обмену знаниями. Одной из главных ценностей нашей конференции является возможность установить прямой контакт между разработчиками и пользователями.
Встречайте докладчиков двенадцатой конференции:
Презентация "3D визуализация в мониторинге: модный тренд или рабочий инструмент?"
— Андрей Никифоров. Генеральный директор [ ООО «ТРИТВИН» ]
Дискаверинг и мониторинг сетевого оборудования в системе мониторинга Saymon, часть вторая.
— Дмитрий Хандыго. Начальник отдела программных решений [ Inline Technologies ]
Мониторинга много не бывает. Или бывает? А наследованного и самописного?
— Михаил Еграмин. Главный инженер [ ООО «Сети ВЕБА» ]
Мониторинг не ограничен потреблением. Как FinOps помогает не упустить контроль над инфраструктурой.
— Гуляев Андрей. Руководитель развития продукта [ Инферит Клаудмастер ]
Облачная система мониторинга радиовещания.
— Александр Орлов. Менеджер [ ООО "Тракт-Софт" ]
Мониторинг — это просто.
— Вадим Исаканов. Старший инженер [ Платформа контейнеризации «Боцман» ]
Если инциденты случаются - значит это кому-нибудь нужно?
— Вероника Шапиро. Руководитель направления инфраструктурного мониторинга [ CLOUD.ru ]
Не упустите шанс стать частью профессионального сообщества, получить новые знания и вдохновение для развития своих проектов!
Подпишитесь на наш ТГ канал или ВК сообщество, чтоб не пропустить важные новости
До встречи на конференции [ Big Monitoring Meetup ] 12!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👎1
Forwarded from Находки в опенсорсе
PythoNN: видео с апрельского митапа
4 апреля прошел очередной #python митап в Нижнем Новгороде.
Было очень душевно и интересно.
Случился аншлаг! Пришло много нижегородцев и приехало очень много гостей: из Москвы, Питера, Кирова и других городов. Спасибо всем!
Было 4 крутых доклада:
- "Are you NATS?" – Гурбанов Михаил https://youtube.com/watch?v=atD3JVWurno
- "Почему исправление опечаток сложнее, чем кажется, и как мы с этим српавляемся" – Дмитрий Бровкин https://youtube.com/watch?v=9HRBwwaMIfA
- "Современный web с современными темплейтами" – Алексей Гончарук https://youtube.com/watch?v=lN3Pz_hUCio
- "Демистификация PostgreSQL-индексов" – Алексей Голобурдин https://youtube.com/watch?v=6kVGSLdj28k
А потом мы сидели в баре до 5 утра.
Что улучшить?
- Первый раз записывал на StreamYard, сделал плохую композицию слайдов и видео докладчика, исправим в следующий раз. Прикрепил все слайды в описании докладов – чтобы была возможность все прочитать и скопировать код
- Поработаем над звуком, сейчас он немного прыгал
Хотите присоединиться?
- Если хотите сделать доклад, пишите мне в личку – лично учу новичков выступать и делать слайды, полная свобода в выборе темы
- Если хотите просто послушать – следите за анонсами в чате и подписывайтесь на мой канал с записями
У нас в Нижнем – просто офигенно, всех ждем в гости! 🌆
| Поддержать | YouTube | GitHub | Чат |
4 апреля прошел очередной #python митап в Нижнем Новгороде.
Было очень душевно и интересно.
Случился аншлаг! Пришло много нижегородцев и приехало очень много гостей: из Москвы, Питера, Кирова и других городов. Спасибо всем!
Было 4 крутых доклада:
- "Are you NATS?" – Гурбанов Михаил https://youtube.com/watch?v=atD3JVWurno
- "Почему исправление опечаток сложнее, чем кажется, и как мы с этим српавляемся" – Дмитрий Бровкин https://youtube.com/watch?v=9HRBwwaMIfA
- "Современный web с современными темплейтами" – Алексей Гончарук https://youtube.com/watch?v=lN3Pz_hUCio
- "Демистификация PostgreSQL-индексов" – Алексей Голобурдин https://youtube.com/watch?v=6kVGSLdj28k
А потом мы сидели в баре до 5 утра.
Что улучшить?
- Первый раз записывал на StreamYard, сделал плохую композицию слайдов и видео докладчика, исправим в следующий раз. Прикрепил все слайды в описании докладов – чтобы была возможность все прочитать и скопировать код
- Поработаем над звуком, сейчас он немного прыгал
Хотите присоединиться?
- Если хотите сделать доклад, пишите мне в личку – лично учу новичков выступать и делать слайды, полная свобода в выборе темы
- Если хотите просто послушать – следите за анонсами в чате и подписывайтесь на мой канал с записями
У нас в Нижнем – просто офигенно, всех ждем в гости! 🌆
| Поддержать | YouTube | GitHub | Чат |
Forwarded from Находки в опенсорсе
Perforator — система непрерывного профилирования для разных языков
https://github.com/yandex/perforator
Главные фичи:
> Efficient and high-quality collection of kernel + userspace stacks via eBPF
> Scalable storage for storing profiles and binaries
> Support of unwinding without frame pointers and debug symbols on host
> Convenient query language and UI to inspect CPU usage of applications via flamegraphs
> Support for C++, C, Go, and Rust, with experimental support for Java and Python
> Generation of sPGO profiles for building applications with Profile Guided Optimization (PGO) via AutoFDO
Но самое главное – у Perforator есть режим Continuous Profiling, где на сервак ставится агент, который передает информацию о производительности всех сервисов. На что тратит всего около 1% CPU.
Очень полезный и полный пост с анонсом на хабре.
Важное ограничение: пока работает только на x86_64 Linux, ARM поддержка планируется в ближайшем будущем.
Профилируем код на Python
Нас конечно же больше всего интересует, как данная штука умеет профилировать код на питоне.
Пока что работают только версии после 3.12, потому что нативная поддержка
Смотрим доку, как профилировать питон: https://perforator.tech/docs/en/tutorials/python-profiling
Сначала собираем при помощи
Прямо в примере в доке есть код, который будет работать неоптимально. Запустим его:
И запускаем профилировщик:
На
Перед тем, как его смотреть, нагрузим наш сервак простейшим скриптом:
Получится вот такой замечательный flamegraph.
Но! Пример из документации не заканчивается просто созданием графика, пример показывает, как его анализировать. Что очень важно. Далее нам предлагают найти узкое место в коде: https://perforator.tech/docs/en/tutorials/python-profiling#optimizing-the-bottleneck
После оптимизации получится так. Потребление CPU упадет с 96% до 26%
Чего хочется?
- Хочется поддержки macos для локального профилирования
- Хочется попробовать в реальном проде :)
- Хочется понять, насколько такие данные помогут средней компании писать более производительные сервисы
Обсуждение: как у вас в компаниях дела с Continuous Profiling?
Про Perforator я узнал благодаря своему старому и доброму товарищу – Евгению Антонову, он ведет канал про важные навыки для тимлидов и два подкаста: КодаКода – про менеджмент и харды, "Три тимлида заходят в бар" – про разные тимлидские штуки, которые будут безусловно полезны для тех, кто решил развиваться в данную ветку карьеры. Советую!
Хотите рассказать про свой опенсорс проект? Пишите в наш чат :)
| Поддержать | YouTube | GitHub | Чат |
https://github.com/yandex/perforator
Главные фичи:
> Efficient and high-quality collection of kernel + userspace stacks via eBPF
> Scalable storage for storing profiles and binaries
> Support of unwinding without frame pointers and debug symbols on host
> Convenient query language and UI to inspect CPU usage of applications via flamegraphs
> Support for C++, C, Go, and Rust, with experimental support for Java and Python
> Generation of sPGO profiles for building applications with Profile Guided Optimization (PGO) via AutoFDO
Но самое главное – у Perforator есть режим Continuous Profiling, где на сервак ставится агент, который передает информацию о производительности всех сервисов. На что тратит всего около 1% CPU.
Очень полезный и полный пост с анонсом на хабре.
Важное ограничение: пока работает только на x86_64 Linux, ARM поддержка планируется в ближайшем будущем.
Профилируем код на Python
Нас конечно же больше всего интересует, как данная штука умеет профилировать код на питоне.
Пока что работают только версии после 3.12, потому что нативная поддержка
perf появилась именно там: https://docs.python.org/3/howto/perf_profiling.html Смотрим доку, как профилировать питон: https://perforator.tech/docs/en/tutorials/python-profiling
Сначала собираем при помощи
docker в пару строк: https://perforator.tech/docs/en/guides/build#containerПрямо в примере в доке есть код, который будет работать неоптимально. Запустим его:
» python server.py
My pid is 53000
Serving on port 9007
И запускаем профилировщик:
sudo perforator record --pid $YOUR_PID --duration 1m --serve ":9006"На
http://localhost:9006 вас будет ждать flamegraph работы скрипта.Перед тем, как его смотреть, нагрузим наш сервак простейшим скриптом:
import requests
import random
while True:
user_id = random.randint(1, 1000000)
requests.get(f"http://localhost:9007/search_user?user_id={user_id}")
Получится вот такой замечательный flamegraph.
Но! Пример из документации не заканчивается просто созданием графика, пример показывает, как его анализировать. Что очень важно. Далее нам предлагают найти узкое место в коде: https://perforator.tech/docs/en/tutorials/python-profiling#optimizing-the-bottleneck
После оптимизации получится так. Потребление CPU упадет с 96% до 26%
Чего хочется?
- Хочется поддержки macos для локального профилирования
- Хочется попробовать в реальном проде :)
- Хочется понять, насколько такие данные помогут средней компании писать более производительные сервисы
Обсуждение: как у вас в компаниях дела с Continuous Profiling?
Про Perforator я узнал благодаря своему старому и доброму товарищу – Евгению Антонову, он ведет канал про важные навыки для тимлидов и два подкаста: КодаКода – про менеджмент и харды, "Три тимлида заходят в бар" – про разные тимлидские штуки, которые будут безусловно полезны для тех, кто решил развиваться в данную ветку карьеры. Советую!
Хотите рассказать про свой опенсорс проект? Пишите в наш чат :)
| Поддержать | YouTube | GitHub | Чат |
GitHub
GitHub - yandex/perforator: Perforator is a cluster-wide continuous profiling tool designed for large data centers
Perforator is a cluster-wide continuous profiling tool designed for large data centers - yandex/perforator
Forwarded from k8s (in)security (Дмитрий Евдокимов)
Мы начинаем публиковать доклады с программы БеКон 2025!
1) "Без секретов! Workload Identity Federation: безопасная аутентификация в облаке" (Дмитрий Лютов,
Строить безопасность в облаке без механизма
2) "Неочевидные и непонятные моменты безопасности Kubernetes" (Дмитрий Евдокимов,
Рабочее название доклада было "Ворчание старого деда про k8s security". А лейтмотивом стали вопросы на тренингах "Почему так?", "Почему до сих пор так?", "Почему не иначе?", "Доколе?" и т.д. В итоге, сформировался список таких моментов.
За детальным описанием можно обратиться сюда.
1) "Без секретов! Workload Identity Federation: безопасная аутентификация в облаке" (Дмитрий Лютов,
Yandex Cloud)Строить безопасность в облаке без механизма
Workload Identity очень сложная задача. И если в западных облаках его наличие уже само собой разумеющееся, то в наших просторах далеко не все вообще знают что это за зверь такой. Задача этого доклада рассказать как опасно жить без него, как он устроен и как спасает.2) "Неочевидные и непонятные моменты безопасности Kubernetes" (Дмитрий Евдокимов,
Luntry)Рабочее название доклада было "Ворчание старого деда про k8s security". А лейтмотивом стали вопросы на тренингах "Почему так?", "Почему до сих пор так?", "Почему не иначе?", "Доколе?" и т.д. В итоге, сформировался список таких моментов.
За детальным описанием можно обратиться сюда.
👎2
🚀EvaTeam выпустила бесплатную версию EvaDev для IT-компаний, версия доступна в варианте on-premise на 10 пользователей.
✅ В EvaDev вся линейка продуктов EvaTeam для управления IT-проектами: EvaProject (Jira 2.0), EvaWiki (Сonfluence 2.0), EvaServiceDesk (Jira SM 2.0), EvaRMS, EvaTest, EvaGit.
1️⃣ Более 1200 функций по управлению IT-проектами от управления требованиями до поддержки готового приложения и сбора обратной связи.
2️⃣ Легкая миграция данных из других систем (Jira, YouTrack, Confluence и др.) в полном объеме и без потерь.
3️⃣ Масштабируемость под предприятия любого размера.
🚀Решениям EvaTeam доверяют: «Авито», «ВкусВилл», «СберМобайл», ДОМ.PФ, Knauf и сотни других.
👉 Получить бесплатную версию можно по ссылке
✅ В EvaDev вся линейка продуктов EvaTeam для управления IT-проектами: EvaProject (Jira 2.0), EvaWiki (Сonfluence 2.0), EvaServiceDesk (Jira SM 2.0), EvaRMS, EvaTest, EvaGit.
1️⃣ Более 1200 функций по управлению IT-проектами от управления требованиями до поддержки готового приложения и сбора обратной связи.
2️⃣ Легкая миграция данных из других систем (Jira, YouTrack, Confluence и др.) в полном объеме и без потерь.
3️⃣ Масштабируемость под предприятия любого размера.
🚀Решениям EvaTeam доверяют: «Авито», «ВкусВилл», «СберМобайл», ДОМ.PФ, Knauf и сотни других.
👉 Получить бесплатную версию можно по ссылке
👎7👍2
Forwarded from Флант | Специалисты по DevOps и Kubernetes
Как правильно настроить запросы и лимиты CPU для контейнеров? Какие ошибки могут привести к снижению производительности приложений?
Джон Такер делится подробным анализом работы CPU в Kubernetes, включая базовые понятия, примеры настройки и рекомендации по оптимизации. Узнайте, как добиться стабильной работы ваших кластеров.
Джон Такер делится подробным анализом работы CPU в Kubernetes, включая базовые понятия, примеры настройки и рекомендации по оптимизации. Узнайте, как добиться стабильной работы ваших кластеров.
👎3❤1👍1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🕐 Команда дня: время запроса
Когда профессионал хочет узнать, тормозит ли API — он не запускает браузер, он пишет curl. Это секретное оружие:
➖ Бонус: замеры в цикле
🐸 Библиотека devops'a #буст
Когда профессионал хочет узнать, тормозит ли API — он не запускает браузер, он пишет curl. Это секретное оружие:
curl -s -w "%{time_total}\n" -o /dev/null https://example.com-s — тихо, без прогресс-бара.-w "%{time_total}\n" — выводит только общее время запроса (секунды с миллисекундами).-o /dev/null — не сохраняет ответ, он нам не нужен.for i in {1..5}; do curl -s -w "%{time_total}\n" -o /dev/null https://example.com; donePlease open Telegram to view this post
VIEW IN TELEGRAM
👎11👍5
Forwarded from HABR FEED + OPENNET
[Перевод] Чек-лист для Kubernetes в продакшене: лучшие практики для SRE #habr
https://habr.com/ru/companies/otus/articles/902972/
Tags: k8s, kubern, sre, gitops, мониторинг инфраструктуры, управление ресурсами, Автоматизация в Kubernetes, оптимизация затрат
Author: kmoseenk (OTUS)
https://habr.com/ru/companies/otus/articles/902972/
Tags: k8s, kubern, sre, gitops, мониторинг инфраструктуры, управление ресурсами, Автоматизация в Kubernetes, оптимизация затрат
Author: kmoseenk (OTUS)
👎4
Forwarded from Enabling.team Insights
В начале апреля вышел 32-й выпуск технологического радара от компании Thoughtworks. На радаре упоминаются 22 практики, 28 платформ и более 50 инструментов и фреймворков. Что интересного мы отметили:
1. Развитие платформ и инструментов, связанных с CI/CD и Release Engineering:
- Платформа GitLab для автоматизации процессов CI/CD;
- Инструмент Nyx для автоматизации управления релизами;
- Инструмент OpenRewrite для рефакторинга кода;
- Инструмент Renovate для автоматизации обновления зависимостей;
- Инструмент Jujutsu для управления и контроля версий, работающий поверх Git;
- Инструмент Turborepo для сборки больших JavaScript или TypeScript проектов;
- Инструмент Mergiraf для разрешения конфликтов в Git.
2. Развитие Observability платформ и инструментов:
- Стандарт и набор инструментов OpenTelemetry для сбора, обработки и передачи данных телеметрии (метрик, логов, трассировок);
- Платформа Grafana Loki для агрегации и анализа логов;
- Платформа Grafana Tempo для распределенной трассировки;
- Инструмент Grafana Alloy для сбора, обработки и передачи телеметрии, поддерживающий OpenTelemetry.
3. Возникновение практик, платформ и инструментов для нового направления Observability for AI:
- Практика структурирования вывода LLM (Structured output from LLMs);
- Практика использование графов знаний для улучшения качества ответов LLM (GraphRAG)
- Платформа Weights & Biases для мониторинга и оценки производительности моделей;
- Платформа Arize Phoenix для наблюдаемости LLM;
- Платформа Helicone для мониторинга LLM;
- Платформа Humanloop для повышения надежности AI-систем;
- Инструменты Gemma Scope для наблюдаемости LLM;
- Инструменты NeMo Guardrails для обеспечения безопасности и наблюдаемости LLM.
4. Развитие практик и инструментов, связанных с Infrastructure as Code:
- Практика управление доступом для инфраструктуры (Just-in-time privileged access management);
- Платформа Railway для упрощения развертывания и управления инфраструктурой
- Инструмент System Initiative для визуального управления инфраструктурой;
5. Развитие практик и инструментов, связанных с Security Engineering:
- Практика тестирования приложений с использованием случайных данных (Fuzz testing);
- Практика обеспечения прозрачности цепочки поставок (Software Bill of Materials);
- Практика анализа угроз для проектирования безопасных систем (Threat modeling)
- Платформа Chainloop для обеспечения безопасности цепочки поставок;
- Платформа Plerion для анализа безопасности облачных рабочих нагрузок;
- Платформа Redactive для обработки конфиденциальных данных.
6. Развитие практик и инструментов, связанных с Data Engineering:
- Подход к данным как к продукту (Data product thinking);
- Платформа Synthesized для генерации синтетических данных;
- Платформа Tonic.ai для создания синтетических данных;
- Платформа Databricks Delta Live Tables для управления потоками данных;
- Инструмент Trino для распределенных SQL-запросов;
- Инструмент Metabase для визуализации и анализа данных.
7. Практика Architecture advice process для улучшения принятия решений по архитектуре и инструмент для создания диаграмм D2;
8. Применение модели Competence envelope для анализа системных сбоев, полезная для SRE (Competence envelope as a model for understanding system failures);
9. Упоминание Agile фреймворка SAFe в качестве антипаттерна;
10. Появление антипаттернов применения AI: AI-accelerated shadow IT, Complacency with AI-generated code, Local coding assistants, Replacing pair programming with AI;
11. Развитие практик, платформ и инструментов, связанных с AI и LLM: Model distillation, Prompt engineering, Small language models, Using GenAI to understand legacy codebases, AI-friendly code design, AI-powered UI testing, Unblocked, Deepseek R1, Model Context Protocol (MCP), Open WebUI, Reasoning models, Claude Sonnet, AnythingLLM, OpenRouter, LangGraph, Graphiti, turbopuffer, FastGraphRAG, Cursor, v0, Windsurf, Cline.
1. Развитие платформ и инструментов, связанных с CI/CD и Release Engineering:
- Платформа GitLab для автоматизации процессов CI/CD;
- Инструмент Nyx для автоматизации управления релизами;
- Инструмент OpenRewrite для рефакторинга кода;
- Инструмент Renovate для автоматизации обновления зависимостей;
- Инструмент Jujutsu для управления и контроля версий, работающий поверх Git;
- Инструмент Turborepo для сборки больших JavaScript или TypeScript проектов;
- Инструмент Mergiraf для разрешения конфликтов в Git.
2. Развитие Observability платформ и инструментов:
- Стандарт и набор инструментов OpenTelemetry для сбора, обработки и передачи данных телеметрии (метрик, логов, трассировок);
- Платформа Grafana Loki для агрегации и анализа логов;
- Платформа Grafana Tempo для распределенной трассировки;
- Инструмент Grafana Alloy для сбора, обработки и передачи телеметрии, поддерживающий OpenTelemetry.
3. Возникновение практик, платформ и инструментов для нового направления Observability for AI:
- Практика структурирования вывода LLM (Structured output from LLMs);
- Практика использование графов знаний для улучшения качества ответов LLM (GraphRAG)
- Платформа Weights & Biases для мониторинга и оценки производительности моделей;
- Платформа Arize Phoenix для наблюдаемости LLM;
- Платформа Helicone для мониторинга LLM;
- Платформа Humanloop для повышения надежности AI-систем;
- Инструменты Gemma Scope для наблюдаемости LLM;
- Инструменты NeMo Guardrails для обеспечения безопасности и наблюдаемости LLM.
4. Развитие практик и инструментов, связанных с Infrastructure as Code:
- Практика управление доступом для инфраструктуры (Just-in-time privileged access management);
- Платформа Railway для упрощения развертывания и управления инфраструктурой
- Инструмент System Initiative для визуального управления инфраструктурой;
5. Развитие практик и инструментов, связанных с Security Engineering:
- Практика тестирования приложений с использованием случайных данных (Fuzz testing);
- Практика обеспечения прозрачности цепочки поставок (Software Bill of Materials);
- Практика анализа угроз для проектирования безопасных систем (Threat modeling)
- Платформа Chainloop для обеспечения безопасности цепочки поставок;
- Платформа Plerion для анализа безопасности облачных рабочих нагрузок;
- Платформа Redactive для обработки конфиденциальных данных.
6. Развитие практик и инструментов, связанных с Data Engineering:
- Подход к данным как к продукту (Data product thinking);
- Платформа Synthesized для генерации синтетических данных;
- Платформа Tonic.ai для создания синтетических данных;
- Платформа Databricks Delta Live Tables для управления потоками данных;
- Инструмент Trino для распределенных SQL-запросов;
- Инструмент Metabase для визуализации и анализа данных.
7. Практика Architecture advice process для улучшения принятия решений по архитектуре и инструмент для создания диаграмм D2;
8. Применение модели Competence envelope для анализа системных сбоев, полезная для SRE (Competence envelope as a model for understanding system failures);
9. Упоминание Agile фреймворка SAFe в качестве антипаттерна;
10. Появление антипаттернов применения AI: AI-accelerated shadow IT, Complacency with AI-generated code, Local coding assistants, Replacing pair programming with AI;
11. Развитие практик, платформ и инструментов, связанных с AI и LLM: Model distillation, Prompt engineering, Small language models, Using GenAI to understand legacy codebases, AI-friendly code design, AI-powered UI testing, Unblocked, Deepseek R1, Model Context Protocol (MCP), Open WebUI, Reasoning models, Claude Sonnet, AnythingLLM, OpenRouter, LangGraph, Graphiti, turbopuffer, FastGraphRAG, Cursor, v0, Windsurf, Cline.
👍6❤1
Полезная статья с множеством актуальных рекомендаций по использованию python https://ashishb.net/programming/python-in-production-2/
ashishb.net
How to run Python in production
Harness the power of Python for production-grade data analysis and machine learning. Discover essential tools and best practices for seamless deployments.
Forwarded from k8s (in)security (Дмитрий Евдокимов)
Вышел Kubernetes v1.33: Octarine!
Это значит, что помимо новых фич, так же что уже
А вы уже успели перекатиться на
Это значит, что помимо новых фич, так же что уже
29 июня закончится поддержка версии 1.30.А вы уже успели перекатиться на
30-ю серию или все еще на 20-й?)👍6
Forwarded from DevOps&SRE Library
Simplifying Kubernetes Limits Range with sxlimits
https://startxfr.medium.com/simplifying-kubernetes-limits-range-with-sxlimits-604a96eaaf2c
https://startxfr.medium.com/simplifying-kubernetes-limits-range-with-sxlimits-604a96eaaf2c