Библиотека девопса | 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 338 名订阅者,在 技术与应用 类别中位列第 11 808,并在 俄罗斯 地区排名第 61 456 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 10 338 名订阅者。
根据 26 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -42,过去 24 小时变化为 -6,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 10.35%。内容发布后 24 小时内通常能获得 4.81% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 070 次浏览,首日通常累积 497 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 3。
- 主题关注点: 内容集中在 devops'a, навигация, скрипт, docker, git 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Все самое полезное для девопсера в одном канале.
Наши курсы: https://clc.to/ZJ7Z1w
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Заявка: 8137718351”
凭借高频更新(最新数据采集于 27 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
leaf — терминальный превьювер Markdown на Rust. Показывает .md файлы прямо в консоли с подсветкой синтаксиса, таблицами, оглавлением и навигацией. По ощущениям ближе к GUI, чем к обычному cat.
В версии 1.21.0 два заметных обновления.
Флаг --inline для вывода в stdout
Раньше leaf работал только в интерактивном режиме — открывал TUI и ждал ввода. Теперь можно рендерить Markdown и сразу печатать результат в stdout без запуска интерфейса.
Это полезно, когда нужно встроить leaf в пайплайн или скрипт. Например, отрендерить файл и сохранить результат:
leaf --inline README.md > rendered.txt
Или прокинуть через пайп:
cat CHANGELOG.md | leaf --inline
Обновиться:
leaf --update➡️ Источник 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека devops'a #пульс_индустрии
wc -l считает строки в файле или в пайпе. Одна из тех вещей, которые используешь каждый день. Логи, CSV, исходники, конфиги.
Везде, где нужно быстро понять объём:
$ wc -l server.log
4821 server.log
Набирать wc -l несложно, но можно сделать ещё проще. Создаём алиас lc (line count) и добавляем в конфиг шелла:
# Добавьте в ~/.bashrc или ~/.zshrc, затем: source ~/.bashrc
alias lc='wc -l'
Теперь вместо wc -l пишем просто lc:
$ lc server.log
4821 server.log
Работает и с пайпами:
$ cat access.log | grep "500" | lc
37
37 пятисотых ошибок. Быстро и понятно.
➡️ du -sh * — сколько весит каждая папка
Когда заканчивается место на диске, первым делом хочется понять, кто его съел.
du -sh * покажет размер каждого элемента в текущей директории в человекочитаемом формате:
$ du -sh * 1.2G node_modules 4.0K README.md 256M dist 12K src
node_modules на первом месте. Как обычно.
Если нужно отсортировать по размеру, добавляем sort:
$ du -sh * | sort -rh
1.2G node_modules
256M dist
12K src
4.0K README.md
Флаг -r сортирует по убыванию, -h понимает суффиксы K, M, G.
➡️ xargs — передать результат одной команды как аргументы другой
xargs берёт строки из stdin и подставляет их как аргументы. Например, найти все .log файлы и удалить их:
$ find /tmp -name "*.log" | xargs rm
Если в именах файлов есть пробелы, безопаснее использовать разделитель через null:
$ find /tmp -name "*.log" -print0 | xargs -0 rm
Ещё полезный приём. Посчитать общее количество строк во всех Python файлах проекта:
$ find . -name "*.py" | xargs wc -l
➡️ column -t — превратить текст в ровную таблицу
Вывод многих команд выглядит как каша из слов, разделённых пробелами. column -t выравнивает столбцы и делает вывод читаемым:
$ cat data.txt
name age city
alice 30 berlin
bob 25 munich
$ column -t data.txt
name age city
alice 30 berlin
bob 25 munich
Хорошо работает с CSV, если указать разделитель:
$ column -t -s',' users.csv
➡️ watch — повторять команду каждые N секунд
watch запускает любую команду с заданным интервалом и обновляет вывод в терминале. По умолчанию интервал 2 секунды:
$ watch df -hЭта команда будет каждые 2 секунды показывать состояние дисков. Удобно, когда ждёте, пока освободится место, или следите за каким-то процессом. Можно изменить интервал через
-n:
$ watch -n 5 kubectl get pods
Каждые 5 секунд обновляет статус подов. Проще, чем жать стрелку вверх и Enter раз за разом.
Все эти команды работают в любом Linux и macOS из коробки. Ничего ставить не нужно.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptПрошел путь от фулстека до Backend Platform Developer в SMIT.Studio.🟣 Международный исследовательский опыт
Работал исследователем в Институте ИИ НИУ ВШЭ и в Национальном университете Сингапура (NUS).🟣 Преподаватель-практик
Ведет семинары в НИУ ВШЭ, в том числе по проектированию и разработке агентских систем.🟣 Мастер интеграции AI в Backend
Его главная суперсила — умение правильно встраивать LLM через API, выстраивать workflow и агентную логику в сложных распределенных системах.🔗 Зарегистрироваться на вебинар
ratty это эмулятор на Rust, который добавляет в консоль полноценный 3D-рендеринг через Bevy и GPU-ускоренную отрисовку текста.
Что умеет
Вместо обычного курсора в ratty крутится 3D-модель крысы. Модель, скорость вращения, амплитуду покачивания и яркость можно настроить через TOML-конфиг.
Главная фича — 3D-режим. По нажатию Ctrl+Alt+Enter терминал «выгибается» в трёхмерное пространство. Степень искривления регулируется через Ctrl+Alt+Up/Down.
Как устроен рендеринг
Пайплайн рендеринга выглядит так. ratatui формирует UI-буфер на CPU. parley_ratatui через Vello рендерит текст на GPU. Результат считывается обратно в CPU как RGBA-данные и передаётся в Bevy, который отображает картинку в 2D или 3D.
Установка
Нужен Rust-тулчейн и GPU-стек, совместимый с Bevy/wgpu.
cargo install --git https://github.com/orhun/ratty```
Конфиг по умолчанию лежит в config/ratty.toml. Его нужно скопировать в $HOME/.config/ratty/ratty.toml и менять под себя.
Пример настройки курсора:
[cursor.model]
path = "CairoSpinyMouse.obj"
scale_factor = 6.0
brightness = 0.5
x_offset = 0.5
plane_offset = 18.0
visible = true
[cursor.animation]
spin_speed = 1.4
bob_speed = 2.2
bob_amplitude = 0.08
Через spin_speed можно разогнать крысу до абсурдных скоростей. Судя по отзывам, это одно из главных развлечений в проекте.
➡️ Покрутить крысу
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииleaf рендерит Markdown прямо в терминале, с подсветкой синтаксиса, таблицами, оглавлением и поиском.
Инструмент написан на Rust, работает на macOS, Linux, Windows и даже в Termux на Android.
Что умеет
leaf отображает Markdown-файлы с форматированием, максимально близким к графическому превью. Поддерживаются жирный текст, курсив, зачёркивание, цитаты, списки, горизонтальные линии и таблицы с Unicode-рамками.
Есть боковая панель с оглавлением (TOC) — она отслеживает текущую секцию и поддерживает двухуровневую навигацию. Переключается по клавише t.
Поиск по тексту работает через / или Ctrl+F, навигация по совпадениям — n и N.
Watch-режим
При запуске с флагом -w файл автоматически перезагружается каждые 250 мс при сохранении.
# Терминал 1 — генерация claude "explain Rust lifetimes" > notes.md # Терминал 2 — живой просмотр leaf -w notes.mdТакже
leaf принимает Markdown через stdin, что позволяет использовать его в пайплайнах:
cat README.md | leaf
claude "explain async in Python" | leaf
Выбор файлов
Если запустить leaf без аргументов, откроется fuzzy-поиск по Markdown-файлам в текущей директории. Для классического файлового браузера есть флаг --picker. Оба режима можно комбинировать с -w — после выбора файла сразу включается watch-режим.
Темы и редактор
Через Shift+T открывается выбор тем с предпросмотром прямо в терминале. Ctrl+E открывает текущий файл в системном редакторе, а Shift+E позволяет выбрать редактор из списка.
Установка
macOS, Linux, Termux:
curl -fsSL https://raw.githubusercontent.com/RivoLink/leaf/main/scripts/install.sh | sh
Windows:
irm https://raw.githubusercontent.com/RivoLink/leaf/main/scripts/install.ps1 | iexОбновление до последней версии:
leaf --updateКоманда скачивает бинарник, проверяет SHA256-хеш по опубликованному
checksums.txt и устанавливает.
leaf — компактный и для тех, кто много работает с Markdown и не хочет выходить из терминала ради превью.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераnwinfo.exe --format=json > report.json
Или через готовый PowerShell-скрипт из репозитория:
.\hw_report.ps1
Что появилось в v1.6.3
Основные изменения касаются работы с процессорами Intel и AMD.
Для Intel добавлены сенсоры через MCHBAR и PCH, определение микроархитектуры, OC Mailbox API для чтения данных по разгону, отображение TDP и VDDQ TX IccMax/Voltage. Исправлено чтение напряжений через MSR.
Для AMD исправлена PM-таблица для Pinnacle Ridge, обновлён ryzen_smu.c.
Из общих изменений: системный трей с возможностью установки PawnIO прямо из него, настраиваемые единицы температуры (Цельсий / Фаренгейт), отключён WoW64-редирект реестра для корректного чтения на 64-битных системах, обновлены libcpuid и Nuklear.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрии0 — выключение системы.
1 — однопользовательский режим, только root, сеть не поднята. Используется для восстановления.
2 — многопользовательский без NFS (в Debian/Ubuntu — полноценный многопользовательский).
3 — многопользовательский с сетью, без графики. Типичный режим для серверов.
4 — не используется стандартно, резерв.
5 — многопользовательский с графическим интерфейсом.
6 — перезагрузка.
Как проверить
Команда runlevel выводит предыдущий и текущий уровень:
runlevelВывод выглядит так:
N 3
N означает, что предыдущего уровня не было (система только загрузилась). 3 — текущий runlevel.
На системах с systemd та же команда работает, но под капотом systemd транслирует уровни в targets. Можно спросить напрямую:
systemctl get-default
Это покажет default target — то, в каком режиме система запускается по умолчанию:
multi-user.targetА текущее активное состояние:
systemctl list-units --type=target --state=active
Когда это нужно
Чаще всего runlevel проверяют при диагностике — когда нужно понять, почему сервис не запустился, или убедиться, что сервер поднялся в правильном режиме после перезагрузки.
На современных системах с systemd runlevel остаётся для совместимости, но systemctl get-default даёт более точный ответ.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера# Debian/Ubuntu
sudo apt install fail2ban
# RHEL/CentOS
sudo dnf install fail2ban
После установки проверяем, что всё работает:
fail2ban-client -h fail2ban-client versionКак это настраивается Конфигурация хранится в
/etc/fail2ban. Основной файл — jail.conf, но менять его напрямую не стоит. Вместо этого создаём /etc/fail2ban/jail.local и переопределяем нужные параметры.
Пример минимальной конфигурации для защиты SSH:
[sshd] enabled = true port = ssh logpath = /var/log/auth.log maxretry = 5 bantime = 3600 findtime = 600
maxretry — сколько неудачных попыток допускается за период findtime (в секундах). Если их больше, IP блокируется на bantime секунд.
В данном примере пять ошибок за 10 минут приведут к блокировке на час.
Управление банами
Посмотреть активные джейлы и заблокированные IP:
sudo fail2ban-client status
sudo fail2ban-client status sshd
Разблокировать IP вручную:
sudo fail2ban-client set sshd unbanip 1.2.3.4
Fail2Ban снижает нагрузку от перебора, но не заменяет нормальную аутентификацию.
Если сервис работает на паролях, лучше перейти на ключи или двухфакторку. Fail2Ban при этом остаётся полезным дополнительным слоем защиты.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#дайджест_недели# Debian/Ubuntu
sudo apt install fail2ban
# RHEL/CentOS
sudo dnf install fail2ban
После установки проверяем, что всё работает:
fail2ban-client -h fail2ban-client versionКак это настраивается Конфигурация хранится в
/etc/fail2ban. Основной файл — jail.conf, но менять его напрямую не стоит. Вместо этого создаём /etc/fail2ban/jail.local и переопределяем нужные параметры.
Пример минимальной конфигурации для защиты SSH:
[sshd] enabled = true port = ssh logpath = /var/log/auth.log maxretry = 5 bantime = 3600 findtime = 600Что означают эти параметры:
maxretry — сколько неудачных попыток допускается за период findtime (в секундах). Если их больше, IP блокируется на bantime секунд.
В данном примере пять ошибок за 10 минут приведут к блокировке на час.
Управление банами
Посмотреть активные джейлы и заблокированные IP:
sudo fail2ban-client status
sudo fail2ban-client status sshd
Разблокировать IP вручную:
sudo fail2ban-client set sshd unbanip 1.2.3.4
Что важно учитывать
Fail2Ban снижает нагрузку от перебора, но не заменяет нормальную аутентификацию. Если сервис работает на паролях, лучше перейти на ключи или двухфакторку.
Fail2Ban при этом остаётся полезным дополнительным слоем защиты.
➡️ https://clc.to/rCL1dg
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt- Разберем реальные кейсы стартапов и ограничения LLM. - Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества. - Ответим на ваши вопросы и разберем кейсы участников.🎁 Бонусы: в конце вебинара подарим промокод на скидку 10.000 ₽ на курсы и разыграем подписки на полезные AI-сервисы. 👉 Зарегистрироваться на вебинар
kubectl get pods -o wide выдаёт слишком много данных, которые в этот момент не нужны.
Для таких случаев есть флаг -o custom-columns. Он позволяет выбрать только те поля, которые важны прямо сейчас.
Чтобы получить таблицу с именем пода и образом контейнера, достаточно одной команды:
kubectl get pods -o custom-columns='NAME:.metadata.name,IMAGE:.spec.containers[*].image'
Результат — чистая таблица без лишнего. [*] в пути означает, что команда учитывает все контейнеры в поде, включая сайдкары.
Формат колонки строится по простому правилу: сначала заголовок, потом путь к полю в JSON-структуре объекта. Любое поле из kubectl get pod -o json можно вытащить таким же способом.
Это особенно удобно в скриптах и CI, где важна предсказуемость вывода. Никаких сюрпризов при обновлении версии kubectl.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptnetwork address sets, драйверы хранилища Linstor и TrueNAS, а также перебалансировка кластера через placement scriptlet.
➡️ Полный changelog | онлайн-демо
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииpayment-service в продакшне шлёт DEBUG-логи, которые никто не смотрит:
service_name = payment-service log_level = DEBUG drop rate = 100%Batch-джоба пишет одно и то же тысячи раз в день. Оставляем 10% для выборки:
service_name = batch-processor
drop rate = 90%
Выбросить конкретный паттерн. Сервис пишет GET /healthz 200 каждые несколько секунд. Указываем строку в теле лога и дропаем 100%.
Как это работает внутри
Каждый входящий лог проходит три шага по порядку:
1. Exemptions — если лог попадает под исключение, он записывается без изменений.
2. Drop rules — правила применяются по приоритету. Первое совпавшее правило задаёт процент дропа.
3. Patterns — к оставшимся логам применяются рекомендации от самого Adaptive Logs на основе анализа 15 дней запросов.
Exemptions нужны для логов, которые нельзя терять ни при каких условиях, — аудит, ошибки из критичных сервисов. Drop rules — для того, что точно не нужно. Patterns — для всего остального, что Grafana сама определит как малоценное.
Как начать
Функция доступна в public preview в Grafana Cloud. Нужна роль plugins:grafana-adaptivelogs-app:admin — по умолчанию она есть у Grafana Admin и Org Admin.
Путь в интерфейсе:
Adaptive Telemetry → Adaptive Logs → Drop rules → Create a new drop rule
Управлять правилами также можно через CLI gcx если нужна автоматизация или интеграция с агентами.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptutilyze решает именно эту проблему. Он измеряет SOL (Speed-of-Light) — насколько GPU использует свой теоретический максимум по вычислениям и пропускной способности памяти. И делает это в реальном времени, не замедляя нагрузку.
Что под капотом
Инструмент написан на Go и C++, использует NVIDIA CUPTI и Perf SDK для сбора аппаратных счётчиков. Работает на Linux amd64, требует GPU архитектуры Ampere и CUDA 11.0+.
Установка:
curl -sSfL https://systalyze.com/utilyze/install.sh | sh
При установке потребуется sudo — инструмент ставится системно. Если CUPTI 12+ не найден, при первом запуске предложит доустановить его через PyPI.
Запуск:
# мониторинг всех GPU
sudo utlz
# только конкретные устройства
sudo utlz --devices 0,2
# показать эндпоинты инференс-серверов на каждом GPU
sudo utlz --endpoints
По умолчанию NVIDIA ограничивает доступ к профилировочным счётчикам для не-root пользователей.
Чтобы запускать без sudo, нужно один раз отключить это ограничение:
echo 'options nvidia NVreg_RestrictProfilingToAdminUsers=0' | sudo tee /etc/modprobe.d/nvidia-profiling.conf
sudo reboot
Поддержка инференс-серверов
utlz умеет обнаруживать эндпоинты инференс-серверов и показывать roofline-потолки для каждого GPU — то есть, какой максимум достижим при текущей конфигурации. Сейчас поддерживается только vLLM, поддержка других бэкендов заявлена.
Сборка из исходников
Если нужна сборка самостоятельно — потребуется Go 1.25+, Docker и CUDA Toolkit:
# собрать нативную библиотеку и CLI
make all
# только CLI
make utlz
Есть экспериментальная поддержка ARM64 через sbsa-linux CUDA target.
Если вы занимаетесь LLM-инференсом или любой другой GPU-нагрузкой и хотите понять, насколько эффективно используется железо, utilyze даёт ответ конкретными числами, а не процентом занятости.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера