Telegram Web
🛠 Что может пойти не так при записи данных на диск или чтении данных с него? А вот что, например - Things that go wrong with disk IO...

https://notes.eatonphil.com/2025-03-27-things-that-go-wrong-with-disk-io.html

#io #filesystem #будничное
SLA и снижение потерь от инцидентов

Рассказываю про то, как построить SLA для платформенных продуктов, в чём тут отличие от обычных, "продуктовых" продуктов, как с этим связаны SLI, SRE и другие страшные трёхбуквенные слова.
Пройдёмся по инфраструктуре, по управлению ожиданиями и заветным девяточкам.
Бонусом — пачка лулзов из реальной жизни.

https://youtu.be/hIvWnxdBtR8
Forwarded from infosec
💣 Zip-бомбы для защиты сервера.

Вы ведь знаете, что такое Zip-бомбы? Если коротко, то термин «Zip-бомба» был придуман более 20 лет назад, равно как и сами ZIP-бомбы. Принцип работы заключается в следующем: представьте файл в сжатом виде, который никаким образом не вызывает подозрений, но при распаковке он превращается в чудовищное количество данных, с котором не могут справиться ни память, ни жесткий диск компьютера жертвы. Чаще всего атака реализуется при помощи рекурсивного архива, то есть ZIP-архива, который распаковывается сам в себя. К примеру, файл в сжатом виде занимающий всего 42 килобайта, при распаковки может занимать в памяти более 4,5 петабайт.

Дело в том, что основной объём трафика в вебе возникает из-за ботов (читалки RSS-фидов, поисковые движки, выполняющие краулинг контента, а сегодня и боты ИИ, собирающие контент, чтобы скармливать его LLM), но помимо всего прочего есть и зловредные боты, которые находят уязвимости и могут встроить в наш сервер зловредный скрипт, а затем превратить машину в ботнет, используемый для DDOS. Таких ботов создают спамеры, скрейперы контента и хакеры.

В общем и целом, автор этого материала описывает методы, где боту в ответ на запрос страницы передаётся сжатое содержимое, размер которого при распаковке многократно превышает размер переданных по сети данных.

Происходит следующее: боты получают файл и считывают заголовок, сообщающий им, что файл сжат. Они пытаются распаковать файл размером 1 МБ, чтобы найти в нём тот контент, который ищут. Но файл продолжает распаковываться снова, и снова, и снова, пока у них не заканчивается память и на их сервере не происходит сбой. Файл на 1 МБ распаковывается в 1 ГБ. Этого более, чем достаточно для того, чтобы поломать большинство ботов. Однако для тех надоедливых скриптов, которые не останавливаются, можно использовать файл на 10 МБ. Он распаковывается в 10 ГБ и мгновенно убивает скрипт.

Если интересно почитать, то статью можно найти вот тут: https://idiallo.com/blog/zipbomb-protection. Либо почитать перевод этого материала на хабре.

#ИБ #Web
Please open Telegram to view this post
VIEW IN TELEGRAM
Исследование состояния DevOps в России 2025

Дорогие друзья, мы рады сообщить, что «Экспресс 42» при поддержке генеральных партнеров запустила ежегодное исследование состояния DevOps 2025! Мы планируем опросить больше 4000 представителей индустрии, связанных с DevOps: инженеров, разработчиков, администраторов, тестировщиков, техлидов и тимлидов, CIO и CTO.

Если тема DevOps вам не безразлична — пройдите опрос и внесите свой вклад в развитие индустрии. Важно мнение каждого респондента!

📊 Ключевой темой исследования в 2025 году становится Developer Experience (DX) — то, насколько опыт разработчиков влияет на эффективность команд и успех компании.

🎁 По завершении опроса вы сможете поучаствовать в лотерее с розыгрышем классных призов от организатора исследования и генеральных партнёров.

Вас ждут эксклюзивный мерч, подписки на полезные и развлекательные сервисы, промокоды на незаменимые в работе продукты, билеты на профильные конференции Highload++, DevOpsConf и другие подарки. Проходите опрос, участвуйте в розыгрыше подарков и побеждайте!

Участники первыми узнают о результатах и получат готовый отчёт, как только он будет готов.

Заполнить анкету 👉 по ссылке
SLA и снижение потерь от инцидентов

Рассказываю про то, как построить SLA для платформенных продуктов, в чём тут отличие от обычных, "продуктовых" продуктов, как с этим связаны SLI, SRE и другие страшные трёхбуквенные слова.
Пройдёмся по инфраструктуре, по управлению ожиданиями и заветным девяточкам.
Бонусом — пачка лулзов из реальной жизни.

https://youtu.be/hIvWnxdBtR8
Forwarded from Двач
Студенты, внимание: Cursor дарит год бесплатной Pro-подписки всем, кто подтвердит, что учится — достаточно загрузить фото студенческого билета.

Разработчики одного из лучших инструментов для «вайб-кодинга» реально расщедрились — подписка даёт почти неограниченный доступ к мощнейшим ИИ-моделям, и даже если вы не пишете код — польза огромная.

И да, заявки принимают даже из России:
cursor.com/students
Forwarded from linkmeup
Проверено на окружающих, что это не самый плохой вопрос, чтобы поставить задирающего нос на место – чем отличаются Shutdown, Poweroff и Halt. Интересно, что относительно виртуалок ответ знают многие, а вот касательно железных машин задумываются.

https://www.tecmint.com/shutdown-poweroff-halt-and-reboot-commands-in-linux/
Ох эти придирки к отступам!
Forwarded from Мониторим ИТ
Lokxy: A Smarter, Funnier Way to Query Multiple Loki Backends

Lokxy — агрегатор логов , работающий поверх нескольких бэкэндов Loki и предоставляющий единое представление всех логов. Он имеет открытый исходный код, создан на Go и не будет придираться к отступам в конфигурации YAML.

Статья на medium с описанием решения

Репыч на Гитхабе
Forwarded from linkmeup
Модно, молодёжно, с красивым интерфейсом и всё на гошечке - реплицируемый через etcd DNS и DHCP. Они даже туда до кучи TFTP запихнули для хранения всяких конфигов. Прям штаны сами до усов подвернулись.
Пробовал кто?

https://github.com/BeryJu/gravity
Forwarded from The Last of 9s
#postgres #observability #pgwatch

как мы сделали postgres наблюдаемым, не расширяя стек и не убивая прометеус кардинальностью от query_id.

и по традиции демо:
https://pgwatch.dblab.dev
лог/пас (да простит нас мировое ИБ): demo/demo

исходная проблема:
1. стандартный postgres_exporter метрики собирает, даже в разрезе query_id, но глубины не хватает и не хватает точности
2. метрики очень кардинальные за счет айдишника каждой квери в лейбле
3. смотреть в базе pg_activity или pg_stat не вариант - баз больше тысячи

как решили:
1. нашли тогда еще не очень зрелое решение, которое не расширяло наш технологический стек ни на грамм - pgwatch (рекомендуем именно https://gitlab.com/postgres-ai/pgwatch2 не https://github.com/cybertec-postgresql/pgwatch)
2. просто подняли рядом отдельный postgres-инстанс только под метрики
3. туда начали сливать pg_stat_activity, pg_stat_statements и другие системные таблицы
4. взяли дашборды, которые идут в комплекте с pgwatch и чуть-чуть докрутили

что получили:
1. дашборды с drill-down вплоть от кластера до конкретного запроса.
2. графики с планами выполнения (через плагины)
3. видно кривые настройки, autovacuum, недоиндексы из коробки без танцев с бубном
4. все это существенно на пониженной нагрузке в сравнении с экспортером для прометеуса

почему postgres-ai а не cybertec:
1. первое и главное - баги
2. второе не супер важное, в cybertec своя графана в инсталляции и не очень полезный UI (может вам будет полезен)
3. появляется поддержка кастомных метрик, что дает большую гибкость

и подтверждаю слова авторов форка от postgres-ai, действительно:
- Improved dashboards for fast troubleshooting
- Custom metrics and configs
- Support of pg_wait_sampling and pg_stat_kcache
- Used YAML based setup
- Metrics storage DB: PostgreSQL with timescaledb extension (by default)

что дальше:
посматриваем в сторону coroot - умеет вытаскивать медленные запросы через eBPF без агентов и с недавних пор еще и с нормальной поддержкой секретов.
проверим, может ли заменить наше решение
Forwarded from Мониторим ИТ
Grafana 12 release: observability as code, dynamic dashboards, new Grafana Alerting tools, and more

Вышла Grafana 12! Что нового:

🚀 наблюдаемость как код. В Grafana 12 появился новый набор инструментов наблюдения в виде кода, которые помогут автоматизировать процессы наблюдения в организации. Новая функциональность позволяет версионировать, проверять и развертывать дашборды. Кроме того, есть возможность использования шаблонов кода.

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

🚀 улучшенное отображение таблиц. В Grafana 12 можно загружать, сортировать и фильтровать большие таблицы быстрее, чем раньше. Визуализация таблиц была переработана для использования библиотеки react-data-grid. Дашборд в Grafana теперь легко обрабатывает огромные наборы данных: по 40 000+ строк и почти 20 столбцов с производительностью CPU на 97,8% выше.

🚀 новые темы в дашбордах. Появились темы Sapphire dusk, Tron, Gilded grove, Gloom и Desert bloom.

🚀 объединение и преобразование данных из нескольких источников. Теперь одним выражением в формате SQL-синтаксиса можно забирать данные из разных источников: Loki, MySQL, PostgreSQL и пр.

🚀 легкая миграция в Grafana Alerting. Упрощена миграция правил оповещений, которая позволяет импортировать правила оповещений Prometheus и Loki в правила оповещений, управляемые Grafana.

🚀 Grafana Drilldown в GA. Теперь возможность перехода из одного дашборда в другой перестала быть экспериментальной функцией.

Больше подробностей в блоге Grafana
Forwarded from AWS Notes
Всех с новой рабочей неделей .
🔥 Выпущена версия 0.20.1 платформы для изучения SRE! 🔥
GitHub

📌 Что нового:
- добавлен подсчёт размеров headers , body и полный размер запроса в ping_pong server
- добавлен body в ответ для методов POST и PUT в ping_pong server
- добавлена возможность задавать дополнительный размер в ответ (поумолчанию 0 ) в ping_pong server
- добавлена 1.33 версия K8s в k8s_self_management module.
- добавлена CKS Lab 27. Cilium network policy with mTLS решение видео
- добавлена CKS Lab 28. Detect and stop unauthorized access with Falcoрешение видео
- добавлена CKS Lab 29. Perform Docker security configurationрешение видео
- добавлена CKA Lab 09. Gateway API in Kubernetesрешение видео

документация ping-pong сервера

🧪 Доступные пробные экзамены:
CKA
CKAD
CKS
KCNA
KCSA
LFCS

Скрипты и видео с решениями экзаменов:
Forwarded from Go Library
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Мониторим ИТ
rezolus

Rezolus — это агент для сбора телеметрии производительности Linux, который собирает подробную информацию о поведении системы с помощью инструментария eBPF. Собранные метрики отправляются напрямую в Prometheus.

Репыч на Гитхабе

Документация со списком собираемых метрик
Forwarded from DevOps&SRE Library
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Мониторим ИТ
Anomaly Detection in Time Series Using Statistical Analysis

Иногда простое пороговое значение работает отлично — например, мониторинг дискового пространства на сервере. Можно просто установить оповещение при оставшихся 10%, и все будет в порядке. То же самое касается отслеживания доступной памяти на сервере.

Но что, если нужно отслеживать что-то вроде поведения пользователей на веб-сайте? Представьте себе, что вы управляете интернет-магазином, где продаете товары. Один из подходов может заключаться в том, чтобы установить минимальный порог для ежедневных продаж и проверять его раз в день. Но что, если что-то пойдет не так, и нужно будет обнаружить проблему гораздо раньше — в течение нескольких часов или даже минут? В этом случае статический порог не справится, потому что активность пользователей колеблется в течение дня. Вот тут-то и вступает в дело обнаружение аномалий. Читать дальше в статье.

❗️Статья на medium.com
📋 Чек-лист по синтаксису Go

Для разработчика на Go важно не только написать работающий код, но и сделать его понятным, чистым и соответствующим идиомам языка.

Составили для вас чек-лист, который поможет ускорить разработку в разы за счёт правильного и чистого кода.

Основы синтаксиса

• Используется правильный package — каждый файл начинается с корректного определения пакета
• Импорты сгруппированы и отсортированы (стандартная библиотека, внешние пакеты, внутренние)
• Константы и переменные объявлены с типами, где это необходимо (var и const)
• Используется короткое объявление переменных := в локальной области

Функции и методы

• Функции имеют четкие и понятные имена (глаголы для действий)
• Используется явный возврат значений (не прячем error)
• Обработка ошибок — всегда проверяется if err != nil
• Используются именованные возвращаемые значения для улучшения читаемости (по необходимости).
• Методы объявлены с указателем *Type для изменения состояния (если нужно).

Циклы и условия

• Циклы for написаны лаконично и с понятной логикой (без лишних вложенностей).
• Используется switch вместо цепочек if-else там, где это уместно.
• В условных выражениях нет лишних скобок — Go этого не требует.

Структуры и интерфейсы

• Структуры и интерфейсы объявлены с понятными именами.
• Используются теги для JSON, если структура используется для сериализации (json:"fieldName").
• Методы интерфейса определены минимально и по назначению.
• Композиция структур вместо наследования, где это возможно.

Работа с ошибками

• Ошибки возвращаются явно из функций (return err).
• Используются кастомные типы ошибок или fmt.Errorf с %w для обёртки ошибок.
• Важные ошибки логируются или обрабатываются на уровне вызова.

Чистота кода и стиль

• Форматирование соответствует gofmt / goimports.
• Лишние комментарии и неиспользуемые переменные удалены.
• Функции не слишком длинные — каждая отвечает за одну задачу.
• Использование defer для освобождения ресурсов и закрытия файлов/соединений.
• Нет глобальных переменных, если это можно избежать.

Работа с пакетами

• Пакеты не слишком большие, разделены по функционалу.
• Используются правильные уровни видимости: экспортируемые (с большой буквы) и неэкспортируемые элементы.
• Пакеты имеют README с описанием назначения (по возможности).

Оптимизация и производительность

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

Документация

• Публичные функции, типы и пакеты имеют комментарии в формате GoDoc.
• Документы объясняют назначение и использование, а не только перефразируют имена функций.

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Код и Капуста
Обсервабилити

Неплохой гайд по обсервабилити Go приложений

#golang

https://www.lucavall.in/blog/opentelemetry-a-guide-to-observability-with-go
Forwarded from /usr/bin
Шардированный не значит распределённый: что важно знать, когда PostgreSQL становится мало

В основе большинства шардированных решений для PostgreSQL лежит очень простая идея: вместо одного PostgreSQL берут N, где каждый из Postgres'ов отвечает за определённый диапазон ключей таблицы. Знанием об этих диапазонах обладает специальный слой маршрутизации (координатор), который теперь для пользователя становится точкой входа. Слой маршрутизации может как находиться на стороне сервера (Citus-подобные решения), так и быть частью клиентского приложения. Важно понимать, что эти N инстансов PostgreSQL ничего не знают друг о друге и никак не взаимодействуют между собой. Читать дальше на Хабре.
2025/05/17 20:04:36
Back to Top
HTML Embed Code: