При работе с кластерами PostgreSQL, особенно в конфигурациях с высокой доступностью (High Availability, HA), разработчики часто сталкиваются с ошибками типа "cannot execute INSERT in a read-only transaction". Эти ошибки возникают, когда приложение пытается выполнить операцию записи на узел, который в данный момент является репликой (read-only). Особенно остро эта проблема проявляется в моменты переключения мастера: пул соединений вашего приложения может все еще содержать коннекты к бывшему мастеру, ставшему репликой, или же балансировщик может направить новый запрос на запись к реплике.
К счастью, драйверы PostgreSQL предоставляют элегантное решение этой проблемы – параметр строки подключения target_session_attrs. В версии PostgreSQL 14 были добавлены новые значения для target_session_attrs: read-only, primary, standby и prefer-standby. Этот параметр позволяет указать, какого типа сессию ожидает ваше приложение. Наиболее полезным значением для приложений, выполняющих операции чтения и записи, является read-write. В этой статье мы подробно разберем, почему это так важно, продемонстрируем проблему на практике и покажем, как target_session_attrs=read-write спасает ситуацию. Использование target_session_attrs=primary, включая его специфические отличия от read-write, будет подробно рассмотрено далее в статье.
https://habr.com/ru/articles/910508/
К счастью, драйверы PostgreSQL предоставляют элегантное решение этой проблемы – параметр строки подключения target_session_attrs. В версии PostgreSQL 14 были добавлены новые значения для target_session_attrs: read-only, primary, standby и prefer-standby. Этот параметр позволяет указать, какого типа сессию ожидает ваше приложение. Наиболее полезным значением для приложений, выполняющих операции чтения и записи, является read-write. В этой статье мы подробно разберем, почему это так важно, продемонстрируем проблему на практике и покажем, как target_session_attrs=read-write спасает ситуацию. Использование target_session_attrs=primary, включая его специфические отличия от read-write, будет подробно рассмотрено далее в статье.
https://habr.com/ru/articles/910508/
Хабр
Всегда используйте target_session_attrs=read-write (или primary) при подключении к кластеру PostgreSQL по FQDN в YC
При работе с кластерами PostgreSQL по http://c-xxxx.rw.mdb.yandexcloud.net , особенно в конфигурациях с высокой доступностью (High Availability, HA), разработчики часто сталкиваются с ошибками типа...
Отличная новость. Смержили MR в sentry-kubernetes chart по параметризации SENTRY_WEB_OPTIONS: https://github.com/sentry-kubernetes/charts/pull/1765
Функционал будет доступен в следующем релизе после v26.17.1.
Функционал будет доступен в следующем релизе после v26.17.1.
GitHub
Refactor Sentry web configuration from hardcoded to values.yaml by patsevanton · Pull Request #1765 · sentry-kubernetes/charts
Description
This PR moves hardcoded Sentry configuration values from the _helper-sentry.tpl template to values.yaml. This change follows the Helm best practices by making configuration parameters e...
This PR moves hardcoded Sentry configuration values from the _helper-sentry.tpl template to values.yaml. This change follows the Helm best practices by making configuration parameters e...
Смержили MR https://github.com/sentry-kubernetes/charts/pull/1769
по очистке Symbolicator. Ранее в helm чарте Sentry этого функционала не было. Будет доступен в версии после 26.18.0.
по очистке Symbolicator. Ранее в helm чарте Sentry этого функционала не было. Будет доступен в версии после 26.18.0.
GitHub
Add Symbolicator Cleanup and Increase dbInit Memory by patsevanton · Pull Request #1769 · sentry-kubernetes/charts
Summary
This PR introduces automatic cleanup functionality for Symbolicator and addresses memory issues with database initialization.
Changes Made
Symbolicator Cleanup Enhancement
Added automatic ...
This PR introduces automatic cleanup functionality for Symbolicator and addresses memory issues with database initialization.
Changes Made
Symbolicator Cleanup Enhancement
Added automatic ...
Разработчики Coroot зарелизили версию 1.12:
1. Availability risks
https://docs.coroot.com/risks/overview
2. Dashboards
https://docs.coroot.com/dashboards/overview
3. GPU monitoring
https://docs.coroot.com/inspections/gpu
4. New layout (the main navigation menu on the left)
https://demo.coroot.com
1. Availability risks
https://docs.coroot.com/risks/overview
2. Dashboards
https://docs.coroot.com/dashboards/overview
3. GPU monitoring
https://docs.coroot.com/inspections/gpu
4. New layout (the main navigation menu on the left)
https://demo.coroot.com
Протестировал Pyroscope + Gradle для профилирования сборок Android APK , но название проекта в Pyroscope создается сгенерированное, а не передается через параметры. Сделал issue https://github.com/grafana/pyroscope/issues/4243
GitHub
The Java Pyroscope agent does not use `pyroscope.application.name ` when profiling Gradle assemblies · Issue #4243 · grafana/pyroscope
Problem description When trying to profile a Gradle project build using the Java Pyroscope agent, the application name that is set in the gradle.properties file via the system property -Dpyroscope....
Полезный шаблон для gitlab merge request (
.gitlab/merge_request_templates/default.md
):/assign_reviewer @user1 @user2 @user2
/assign me
## Required
Обязательные условия прохождения **merge request**.
- [ ] **Я** отвечаю за доведение функционала до **production** окружения.
- [ ] Код соответствует принятым [соглашениям IT департамента](ссылка)
- [ ] Не нарушена обратная совместимость миграций.
- [ ] Не нарушена обратная совместимость API.
- [ ] Перед созданием **merge request** были выполнены `make format`, `make lint` и `make test`.
## Conformity
Соглашения которые можно пропустить/выполнить из-за особенностей задачи.
- [ ] Функционал протестирован перед отправкой Merge Request.
- [ ] Необходимо тестирование на dev/uat окружении.
- [ ] Необходим пропуск job `migrations-lint`.
Обнаружение отсутствия данных или результатов в алертах и recording rules:
1) Следующее выражение вернёт правила оповещения, которые, скорее всего, содержат опечатку или неправильный селектор временных рядов:
2) Чтобы найти recording rules, которые не генерируют данные, выполните следующий запрос:
Подробности: https://victoriametrics.com/blog/never-firing-alerts/
1) Следующее выражение вернёт правила оповещения, которые, скорее всего, содержат опечатку или неправильный селектор временных рядов:
max(vmalert_alerting_rules_last_evaluation_series_fetched) by (group, alertname) == 0
2) Чтобы найти recording rules, которые не генерируют данные, выполните следующий запрос:
sum(vmalert_recording_rules_last_evaluation_samples) by (group, recording) < 1
Подробности: https://victoriametrics.com/blog/never-firing-alerts/
VictoriaMetrics
Never-firing alerts: What they are and how to deal with them
Read how vmalert helps to find alerting rules which don’t match any time series. Such rules will never fire and only trick users with a false sense of protection.
Форк kaniko https://github.com/chainguard-dev/kaniko, который обещают поддерживать так как исходный проект больше не поддерживается.
GitHub
GitHub - chainguard-dev/kaniko: Build Container Images In Kubernetes
Build Container Images In Kubernetes. Contribute to chainguard-dev/kaniko development by creating an account on GitHub.
В sentry-kubernetes чарт смержили 2 интересных PR:
1) Adds support for configuring a separate distributedClusterName for external ClickHouse - https://github.com/sentry-kubernetes/charts/pull/1780
2) add errors-only mode from original self-hosted compose - https://github.com/sentry-kubernetes/charts/pull/1810
Функционал будет доступен в версии 26.22.0 как только Mokto сделает релиз.
1) Adds support for configuring a separate distributedClusterName for external ClickHouse - https://github.com/sentry-kubernetes/charts/pull/1780
2) add errors-only mode from original self-hosted compose - https://github.com/sentry-kubernetes/charts/pull/1810
Функционал будет доступен в версии 26.22.0 как только Mokto сделает релиз.
GitHub
feat: add distributed cluster name config by brewle · Pull Request #1780 · sentry-kubernetes/charts
Summary
Adds support for configuring a separate distributedClusterName for external ClickHouse setups, while maintaining backward compatibility.
Motivation
Currently, both cluster_name and distribu...
Adds support for configuring a separate distributedClusterName for external ClickHouse setups, while maintaining backward compatibility.
Motivation
Currently, both cluster_name and distribu...