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

https://github.com/BeryJu/gravity
👍6
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 без агентов и с недавних пор еще и с нормальной поддержкой секретов.
проверим, может ли заменить наше решение
👍6
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

Скрипты и видео с решениями экзаменов:
👍7
Forwarded from Go Library
Graceful Shutdown in Go: Practical Patterns

Graceful shutdown in any application generally satisfies three minimum conditions:

1. Close the entry point by stopping new requests or messages from sources like HTTP, pub/sub systems, etc. However, keep outgoing connections to third-party services like databases or caches active.
2. Wait for all ongoing requests to finish. If a request takes too long, respond with a graceful error.
3. Release critical resources such as database connections, file locks, or network listeners. Do any final cleanup.

This article focuses on HTTP servers and containerized applications, but the core ideas apply to all types of applications.


https://victoriametrics.com/blog/go-graceful-shutdown/index.html
Forwarded from Мониторим ИТ
rezolus

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

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

Документация со списком собираемых метрик
Forwarded from DevOps&SRE Library
L4-L7 Performance: Comparing LoxiLB, MetalLB, NGINX, HAProxy

As Kubernetes continues to dominate the cloud-native ecosystem, the need for high-performance, scalable, and efficient networking solutions has become paramount. This blog compares LoxiLB with MetalLB as Kubernetes service load balancers and pits LoxiLB against NGINX and HAProxy for Kubernetes ingress. These comparisons mainly focus on performance for modern cloud-native workloads.


https://dev.to/nikhilmalik/l4-l7-performance-comparing-loxilb-metallb-nginx-haproxy-1eh0
🔥1
Forwarded from Мониторим ИТ
Anomaly Detection in Time Series Using Statistical Analysis

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

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

❗️Статья на medium.com
👍21
📋 Чек-лист по синтаксису 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
👍3
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 ничего не знают друг о друге и никак не взаимодействуют между собой. Читать дальше на Хабре.
1
Forwarded from Positive Hack Days Media
Мы начали!

Смотрите трансляцию, если не смогли сегодня присоединиться лично.

Также трансляции доступны в «VK Видео» и на Rutube.

@PHDays. 22-24 мая. «Лужники»
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👎1
Forwarded from Код и Капуста
gRPC

Небольшой туториал как использовать gRPC в кубере

#golang

https://nyadgar.com/posts/scaling-grpc-with-kubernetes-using-go/
Forwarded from /usr/bin
Выкрутили автоматизацию на максимум: с чем кроме инвентаризации помог переход на NetBox

В этой статье кровавый крупный энтерпрайз рассказывает о своем опыте использования NetBox. А продукт и правда интересный. Поделитесь в комментариях о своем опыте его использования.
🔥2
Forwarded from Мониторим ИТ
VictoriaMetrics : Effective alerts, from theory to practice

Golden Signals, PromQL/MetricsQL и VMalert. В статье разобраны подходы к алертингу из VM.
Forwarded from /usr/bin
Подводные камни при работе с файлами в Linux с примерами на Python

Работа с файлами в Python кажется простой — open, read, write. Но на практике, особенно в системах с высокими требованиями к отказоустойчивости, стабильности и логированию, за банальными строками кода может скрываться целый мир проблем.

В этой статье разобрано, как знание внутренностей Linux может помочь избежать потерь данных и облегчить отладку. Все примеры будут на Python, но применимы к любым языкам, работающим через POSIX-интерфейсы.
#машины_разное

Позавчера закончилась Tech Internals Conf Berlin, и я был рад пообщаться с ветеранами индустрии.

Под конец конфы у нас был форум, посвященный извечному дискурсу «Скорость против Качества», где два лагеря обсуждали, стоит ли делать быстро, или же правильно.

Вне всяких сомнений, ответ на этот вопрос будет «it depends», но к нему есть важное дополнение.

Время - ограниченный ресурс, и тратить его надо на то, что важно и нужно сейчас, а значит, на некоторые недостатки (даже на страницу, которая грузится 15 секунд, да-да, я тебя запомнил!), можно и нужно закрывать глаза.

Интересная и одновременно с этим приятная мудрость придет тогда, когда вы начнете отпускать те маленькие и крупные недостатки, которые уж очень раздражают, но практическая польза от их устранения стремится к нулю.

Если же вы и только вы знаете, насколько это важно и нужно и надо прямо сейчас, я приглашаю вас прочитать хороший пост на тему избавления от острой потребности чинить все, до чего дотянутся руки.

Отвечать за весь мир нет необходимости. :)
Forwarded from DevOps FM
Всем DevOps! Деплоим средовую подборку новостей и статей.

⚫️ Обнаружена уязвимость в GitHub MCP-сервере, связанная с ИИ-агентами

Команда Invariant Labs опубликовала исследование уязвимости, которая позволяет злоумышленнику через Issue заставить ИИ-агента слить данные из приватных репозиториев. В отчете продемонстрировано, как атака реализуется на практике и предложены инструменты для обнаружения и предотвращения. Рекомендуем ознакомиться тем, у кого есть ИИ-ассистенты в репозиториях.

🟡 В Grafana появилась поддержка импорта алертов в через UI. Теперь можно перенести алерты из Prometheus, Loki и Mimir в Grafana-managed alerts через UI и API. О ньюансах — в статье.

⚫️ Ракан Аль-Зага опубликовал статью о современных подходах к авторизации. Он объясняет, почему традиционные модели (RBAC, ABAC) не справляются с масштабом микросервисов и мультиоблачной архитектуры и предлагает иные решения: Policy-as-Code и Authorization-as-a-Service.

🟡 Шон Вэбб рассказал о прогрессе внедрения Rust в FreeBSD.

Сейчас в отдельной ветке защищенных сборок FreeBSD уже можно собрать Rust-компоненты, при этом все зависимости лежат локально и собираются с пакетным менеджером Cargo. Поддержка библиотеки cdylib, нескольких программ в одном Makefile и прочие фичи — в планах.

⚫️ Крис Ричардсон выпустил вторую часть серии об аутентификации и авторизации в микросервисной архитектуре. На этот раз речь идёт об аутентификации — проверке личности пользователя. Крис объясняет, зачем микросервисам нужен отдельный IAM-сервис, как работают OAuth 2.0 и OpenID Connect, и как встроить всю эту механику в распределённую систему.
🔥1
Хоть и не пятница, но нет мочи терпеть
2025/07/13 13:08:13
Back to Top
HTML Embed Code: