Библиотека девопса | DevOps, SRE, Sysadmin
Все самое полезное для девопсера в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/25874ec4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Mostrar más📈 Análisis del canal de Telegram Библиотека девопса | DevOps, SRE, Sysadmin
El canal Библиотека девопса | DevOps, SRE, Sysadmin (@devopsslib) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 10 429 suscriptores, ocupando la posición 11 851 en la categoría Tecnologías y Aplicaciones y el puesto 62 903 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 10 429 suscriptores.
Según los últimos datos del 11 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de 3, y en las últimas 24 horas de 0, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 8.62%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 5.58% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 899 visualizaciones. En el primer día suele acumular 582 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 4.
- Intereses temáticos: El contenido se centra en temas clave como devops'a, навигация, скрипт, docker, git.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Все самое полезное для девопсера в одном канале.
По рекламе: @proglib_adv
Учиться у нас: https://proglib.io/w/25874ec4
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 12 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
price_update: scheduled for Jan 20
Завтра мы деплоим повышение цен на все программы. Успейте сегодня нажать apply, пока старые условия не превратились в legacy.
Настроить пайплайн саморазвитияHEALTHCHECK позволяет Docker периодически проверять состояние и выставлять статус healthy или unhealthy.
Самый простой вариант это дергать внутренний эндпоинт и падать по ненулевому коду, если ответ плохой. Docker поддерживает параметры interval, timeout и retries, чтобы настроить частоту и порог ошибок.
Пример:
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
CMD curl -f http://localhost:8080/health || exit 1
Команда может быть любой, главное чтобы успешный результат был exit 0, а неуспешный exit 1.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptRUN chown можно сразу копировать файлы с нужным владельцем через COPY с флагом chown.
Простой пример для приложения, которое запускается от appuser:
FROM alpine:3.20
RUN addgroup -S app && adduser -S -G app appuser
WORKDIR /app
COPY --chown=appuser:app . /app
USER appuser
CMD ["./app"]
Если в образе нет /etc/passwd или /etc/group, и указать имя пользователя или группы, сборка может упасть, поэтому для минимальных образов иногда проще использовать числовые UID и GID.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptsystemd-cglsВы увидите дерево, разделённое на слайсы: •
system.slice — системные службы
• user.slice — пользовательские сессии
• machine.slice — виртуальные машины и контейнеры
Показать только конкретный юнит:
systemd-cgls /system.slice/nginx.service
Показать процессы определённого пользователя:
systemd-cgls /user.slice/user-1000.slice📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека devops'a #арсенал_инженера
map для tags или labels и этот map должен применяться ко всем ресурсам, которые это поддерживают. Идея простая. В модуле есть базовые поля вроде окружения и владельца, а сверху можно передать дополнительные теги и объединить их через мерж.
Пример:
variable "environment" {
type = string
}
variable "owner" {
type = string
}
variable "tags" {
type = map(string)
description = "Общие теги для всех ресурсов"
default = {}
}
locals {
common_tags = merge(
{
env = var.environment
owner = var.owner
terraform = "true"
},
var.tags
)
}
resource "proglib_bucket" "this" {
bucket = var.owner
tags = local.common_tags
}
Последний шаг это запрет на ресурсы без обязательных тегов. Это можно сделать через policy as code и проверки, чтобы не разгребать мусор уже в проде.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptYAML-конфиги, но и умение автоматизировать процессы с помощью Python и понимание архитектуры систем. Рынок требует всё больше компетенций в ИИ.
Успейте забрать обучение в Proglib Academy по ценам 2025 года:
— Разработка ИИ-агентов
— Математика для разработки AI-моделей
— ML для старта в Data Science
— Математика для Data Science
— Специалист по ИИ
— Алгоритмы и структуры данных
— Программирование на Python
— Основы IT для непрограммистов
— Архитектуры и шаблоны проектирования
Выбрать направление
⚠️ Стоимость изменится 19 январяname: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm ci
- run: npm test
Выглядит просто? Но здесь довольно просто докинуть багов:
• Опечатка в node-version → silent fail
• Забыл @v3 в actions → неожиданная версия
• Отступы не там → непонятная ошибка
2. Дебаг — это пытка
В других CI можно:
• Подключиться по SSH к раннеру
• Запустить локально (GitLab Runner)
• Посмотреть полные логи
В GitHub Actions:
• Логи обрезаны
• Нельзя зайти на раннер
• Локальный запуск через костыли (act)
• Цикл «коммит → push → wait → fail» занимает минуты
3. Секреты — русская рулетка:
- name: Deploy
env:
API_KEY: ${{ secrets.API_KEY }}
run: ./deploy.sh
Проблемы:
• Секрет не установлен? Пустая строка
• Опечатка в имени? Пустая строка
• Секрет в форке? Не работает
• Дебажить? Удачи, secrets маскируются в логах
4. Кеширование — лотерея:
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
Проблемы:
• Кеш иногда не восстанавливается
• Иногда восстанавливается битый кеш
• Лимит 10 GB → старые кеши удаляются
5. Версии actions — dependency hell:
- uses: actions/checkout@v3 # Какая v3? v3.0? v3.5? - uses: actions/setup-node@v3 # Deprecated через месяц - uses: docker/build-push-action@v4 # Ломает старые workflow• Нет lock-файла для actions • Breaking changes в минорных версиях • @main — может сломаться завтра • @sha — нечитаемо и надо обновлять вручную 💬 Как у вас с GitHub Actions? Всё спокойно или тоже есть дровишки в огонь? 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека devops'a #пульс_индустрии
psql -qf pqr.sql -v payload='Hello, World!'
И на выходе нас ждёт QR-код.
➡️ Скрипт забираем здесь
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииdocker history показывает секреты, любой pull видит их в inspect.
Фикс и лучшие практики
Передавайте через --env-file только на runtime. Для build ARG без дефолтов и --build-arg снаружи. Multi-stage сборка сбрасывает промежуточные слои с данными.
➡️ Живой пример | Зеркало
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#разбор_полётовtouch как «создать пустой файл». Но это лишь верхушка айсберга.
Что на самом деле делает touch:
Обновляет временные метки файла (access time, modification time). Создание файла — побочный эффект, если файл не существует.
Базовое использование:
# Создать пустой файл
touch app.log
# Обновить время изменения существующего файла
touch config.yaml
# Создать несколько файлов
touch file1.txt file2.txt file3.txt
Продвинутые флаги:
# Установить конкретное время
touch -t 202501150830.00 file.txt
# Формат: [[CC]YY]MMDDhhmm[.ss]
# Установить время как у другого файла
touch -r reference.txt target.txt
# Изменить только access time
touch -a file.txt
# Изменить только modification time
touch -m file.txt
# Не создавать файл, если не существует
touch -c file.txt
Полезные комбинации:
# Создать структуру директорий с файлами
mkdir -p app/{config,logs,data}
touch app/config/.gitkeep app/logs/.gitkeep
# Найти файлы старше 30 дней и "омолодить"
find /tmp -type f -mtime +30 -exec touch {} \;
# Обновить timestamp только если файл существует
[ -f config.json ] && touch config.json
# Создать файл с правами в одну команду
(umask 077 && touch secret.key)
touch — это швейцарский нож для работы с временными метками и файловыми операциями.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера API;
— настройка окружений для работы мультиагентных систем;
— управление состоянием (`State`) и памятью агентов в кластерах;
— безопасность и контроль доступа при Tool Calling.
Курс «Разработка ИИ-агентов» поможет разобраться в архитектуре ИИ-сервисов и научиться внедрять их в продакшн.
Освоить ИИ-инструменты
Акция «3 в 1» до 19 января: купите курс и получите ещё два в подарок.Startup finished in 3.2s (firmware) + 2.1s (loader) + 1.8s (kernel) + 12.4s (userspace) = 19.5sСразу видно проблему — userspace съел 12 секунд из 19. Копаем дальше. Смотрим топ медленных сервисов:
systemd-analyze blame
8.234s postgresql.service 2.891s docker.service 1.456s NetworkManager-wait-online.service 0.234s nginx.servicePostgreSQL стартует 8 секунд. Может база огромная, либо что-то не так с конфигом. Сервисы запускаются не параллельно, а друг за другом по зависимостям:
systemd-analyze critical-chain
graphical.target @19.2s
└─multi-user.target @19.1s
└─postgresql.service @10.8s +8.2s
└─network.target @10.7s
└─NetworkManager.service @8.2s +2.4s
Видно: postgresql ждёт сеть, сеть ждёт NetworkManager. И все остальные сервисы встали в очередь за базой.
График покажет картину целиком:
systemd-analyze plot > boot.svg
firefox boot.svg
Получаете таймлайн с цветными полосками — когда каждый сервис стартовал, сколько времени занял, кто с кем параллелился. Узкие места видны сразу.
Узнать время старта отдельного сервиса:
systemd-analyze blame | grep nginx
Или посмотреть его зависимости:
systemd-analyze critical-chain nginx.service
Больше не нужно гадать почему сервер грузится как чугунный мост.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераeza --git покажет, какие файлы изменены, добавлены или проигнорированы.
Древовидная структура. Флаг --tree развернёт директории в дерево. Глубину контролируете параметром --level.
Детальная информация. Флаг --long выведет размеры, даты изменения, владельцев. Плюс человекочитаемые форматы: не «4096 байт», а «4.0 КБ».
Eza доступна через пакетные менеджеры большинства систем:
# macOS
brew install eza
# Ubuntu/Debian
apt install eza
# Arch
pacman -S eza
После установки можете создать алиас в .bashrc или .zshrc:
alias ls='eza --icons'
alias ll='eza --long --git --icons'
alias tree='eza --tree --icons'
Eza не меняет рабочий процесс радикально, но убирает микрораздражители. А в долгосрочной перспективе это экономит больше времени, чем кажется.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
