Библиотека девопса | DevOps, SRE, Sysadmin
Все самое полезное для девопсера в одном канале. Наши курсы: https://clc.to/ZJ7Z1w По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787 Заявка: 8137718351
显示更多📈 Telegram 频道 Библиотека девопса | DevOps, SRE, Sysadmin 的分析概览
频道 Библиотека девопса | DevOps, SRE, Sysadmin (@devopsslib) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 10 342 名订阅者,在 技术与应用 类别中位列第 11 758,并在 俄罗斯 地区排名第 61 362 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 10 342 名订阅者。
根据 25 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -38,过去 24 小时变化为 -8,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 9.87%。内容发布后 24 小时内通常能获得 4.78% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 021 次浏览,首日通常累积 495 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 3。
- 主题关注点: 内容集中在 devops'a, навигация, скрипт, docker, git 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Все самое полезное для девопсера в одном канале.
Наши курсы: https://clc.to/ZJ7Z1w
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Заявка: 8137718351”
凭借高频更新(最新数据采集于 26 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
${{ ... }} внутри run: подставляются до запуска shell. Если напрямую вставить туда github.event.pull_request.title, чужой заголовок может изменить текст исполняемого скрипта.
Для inline-скриптов GitHub рекомендует передавать такое значение через промежуточную переменную окружения. Например, шаг внутри steps: job на Ubuntu runner:
- name: Print PR title
shell: bash
env:
TITLE: ${{ github.event.pull_request.title }}
run: |
printf '%s\n' "$TITLE"
Теперь заголовок передаётся как данные. Bash не разбирает содержимое "$TITLE" повторно как команды. Двойные кавычки также не дают разбить значение по пробелам, а фиксированный формат '%s\n' не превращает сам заголовок в форматную строку.
Этот шаг только печатает значение, дополнительных прав ему не нужно. Не передавайте переменную дальше в eval или bash -c, иначе снова получите исполнение текста как кода.
Исправление защищает эту подстановку. Права токена, доступ к секретам и checkout непроверенного кода в привилегированных pull_request_target или workflow_run требуют отдельной проверки.
Рекомендации GitHub по обработке недоверенного ввода
#арсенал_инженера💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета. А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога. Акция действует до 31 октября включительно ⏳ ⏮️ Пора прокачать свой стек
podSelector и policyTypes на обеих сторонах.
И сначала убедитесь, что сетевой плагин поддерживает NetworkPolicy. Само создание объекта в API фильтрацию трафика не включает.
Модель NetworkPolicy в документации Kubernetes
#архитектура_на_салфеткеPersistent=true.
Пример секции для backup.timer на Linux с systemd:
[Timer] OnCalendar=daily Persistent=true RandomizedDelaySec=15mЭто только секция таймера. Для выполнения работы нужен отдельный
backup.service. По умолчанию таймер активирует сервис с тем же базовым именем.
С Persistent=true systemd хранит время последнего срабатывания на диске. Если в период неактивности таймер должен был сработать хотя бы раз, при активации он вызовет сервис. Но не по разу за каждую пропущенную ночь.
У этой настройки две важные границы:
— она действует только с OnCalendar=. Для OnBootSec= и других монотонных таймеров эффекта нет
— догоняющий запуск тоже учитывает RandomizedDelaySec=. В примере он может дополнительно задержаться на случайный интервал до 15 минут
Точной секунды пример не обещает: у таймера есть ещё AccuracySec=, по умолчанию одна минута.
Параметры systemd.timer
#root_promptAND. Когда показатель за короткое окно опустится ниже порога, условие перестанет выполняться, хотя часовое окно ещё помнит сбой. Если добавляете пары для других скоростей расхода, их объединяют через OR.
Окна и пороги из примера нужно примерить к своему трафику. На малонагруженном сервисе даже несколько запросов заметно меняют долю ошибок. Точное время сброса алерта из одного размера окна не следует.
Разбор и примеры правил в SRE Workbook
#архитектура_на_салфетке💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽ 🔥 Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога. Акция действует до 31 октября включительно ⏳ ⏬ Собрать свой учебный билд
cancel-in-progress: false сохраняет выполняющийся запуск. Но само по себе это не гарантирует, что все ожидающие деплои дойдут до исполнения.
Например, на уровне workflow в GitHub.com задано:
concurrency: group: production cancel-in-progress: falseВ стандартном режиме
queue: single у группы один выполняющийся и один ожидающий запуск. A деплоится, B ждёт. Приходит C — и заменяет ожидающий B. Запущенный A при этом продолжает работать.
Если важно сохранить несколько ожидающих запусков, в текущей документации есть другой режим:
concurrency: group: production queue: maxТак могут ждать до 100 запусков. Когда очередь заполнена, новые отменяются. Сочетание
queue: max и cancel-in-progress: true вызовет ошибку валидации workflow.
Есть нюанс и с порядком. FIFO считается по моменту начала ожидания concurrency-группы, а не по времени отправки workflow. Порядок коммитов сам по себе не гарантирует порядок деплоев.
Используйте одну группу для workflow одного репозитория, которые должны делить блокировку. Внешнюю систему деплоя имя production не остановит. Для GitHub Enterprise Server доступность режима нужно сверить с документацией вашей версии.
Как работает concurrency
#арсенал_инженераrate() считает средний прирост counter в секунду и учитывает его сбросы. Если сначала сложить счётчики разных реплик, информация о сбросе отдельной серии потеряется. Поэтому сначала считаем скорость для каждой серии, затем суммируем:
sum by (job) (
rate(http_requests_total{job="api-server"}[5m])
)
Это запрос для Prometheus, где уже есть counter http_requests_total с меткой job="api-server". Результат — среднее число запросов в секунду за выбранное окно, суммарно по сериям этого job. Имена метрики и меток подставьте из своей системы.
Окно 5m здесь пример. Его нужно соотнести с интервалом сбора и нужной чувствительностью графика. Для gauge, например текущей занятой памяти, rate() не подходит.
Документация Prometheus
#арсенал_инженераuvx showboat --help
Эту команду автор предлагает дать агенту: в справке есть всё необходимое, чтобы тот создал документ с демонстрацией новой функции.
Уиллисон замечал и обход механизма: агент напрямую правит текст отчёта. Тогда записанный вывод может расходиться с реальным запуском. Содержимое демонстрации тоже требует проверки.
#ии #инструменты