notes_devops_engineer
97 subscribers
7 photos
22 links
Записки DevOps инженера
Download Telegram
При работе с кластерами 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/
Разработчики 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
Протестировал Pyroscope + Gradle для профилирования сборок Android APK , но название проекта в Pyroscope создается сгенерированное, а не передается через параметры. Сделал issue https://github.com/grafana/pyroscope/issues/4243
Полезный шаблон для 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) Следующее выражение вернёт правила оповещения, которые, скорее всего, содержат опечатку или неправильный селектор временных рядов: 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/
Форк kaniko https://github.com/chainguard-dev/kaniko, который обещают поддерживать так как исходный проект больше не поддерживается.
В 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 сделает релиз.