Библиотека девопса | DevOps, SRE, Sysadmin
10.2K subscribers
1.62K photos
75 videos
4 files
2.89K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Download Telegram
❗️ Новая версия ClickFix маскируется под обновление Windows

Исследователи безопасности из Huntress обнаружили новую версию ClickFix, которая развёртывает полноэкранную страницу браузера с имитацией обновления Windows и индикатором прогресса на 95% для «критического обновления безопасности.»

Злоумышленники обманывают пользователей, заставляя вставлять вредоносные команды в окно «Выполнить». Особенность атаки — использование данных пикселей PNG для загрузки инфостилеров, которые крадут пароли, данные банковских карт, криптокошельки и личную информацию.

➡️ Источник

🔹
Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека devops'a

#разбор_полётов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 Автоматически перезапускаем упавший сервис

Сервис упал ночью, никто не заметил, а клиенты уже час не могут подключиться. Или упал в выходной, когда все спят. Вручную проверять сервисы каждый день — это неправильно. Нужно, чтобы система сама заметила, что что-то не так, и исправила.

Вот эта команда делает ровно это: проверяет, работает ли критичный сервис, и если нет — перезапускает его
systemctl is-active --quiet nginx || systemctl restart nginx


Это одна логическая цепочка. Давайте разберёмся:

systemctl is-active --quiet nginx — проверяет, работает ли сервис nginx прямо сейчас. Флаг --quiet говорит не выводить никакую информацию на экран, просто вернуть результат: работает или не работает.

systemctl restart nginx — перезапускает сервис nginx. Остановит текущий процесс и запустит заново.

Как использовать

Самый простой способ — добавить эту команду в cron, чтобы она проверяла сервис каждую минуту:
* * * * * /usr/bin/systemctl is-active --quiet nginx || /usr/bin/systemctl restart nginx


Если используете systemd, есть более продвинутый способ — встроенный Restart в конфиге сервиса:
[Unit]
Description=Nginx Web Server

[Service]
Type=notify
Restart=on-failure
RestartSec=5s
ExecStart=/usr/sbin/nginx

[Install]
WantedBy=multi-user.target


🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека devops'a

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👾2
🍔 Топ-вакансий для девопсов за неделю

DevOps Engineer — от 4 500 до 6 500 $

DevOps-инженер — от 180 000 ₽

DevOps Engineer — от 250 000 ₽

Бустер — Офис у вас дома.

➡️ Еще больше топовых вакансий — в нашем канале Devops Jobs

🐸Библиотека devops'a

#вакансия_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
⚙️ MiniOS v5.1.0

В свежем релизе MiniOS разработчики сосредоточились на исправлении багов, улучшении стабильности и удобства использования.

Важные изменения:

• Обновлена система сборки: улучшена генерация man-страниц и локализация, оптимизирована работа с пакетами.

• В загрузочные меню добавлена поддержка нескольких языков, теперь часовой пояс и раскладка клавиатуры настраиваются автоматически.

• Для виртуальных машин появилась утилита адаптации разрешения экрана. Также улучшена совместимость с Ventoy.

• Расширена поддержка Ubuntu Bionic и Focal, изменена логика работы с ядром, добавлен пакет для поддержки MediaTek адаптеров.

• Аудиоподсистема переведена с PulseAudio на PipeWire для большей производительности.

• Новый менеджер сессий умеет экспортировать и импортировать сессии с конвертацией форматов, установщик и конфигуратор получили многоязычную поддержку и улучшенную интеграцию с загрузчиками.

• Появился упрощённый файловый менеджер и новый терминальный меню-утилит.

• Экспериментально добавлена поддержка альтернативного сборщика initramfs — dracut, при этом по умолчанию остаётся livekit. Система автоматически определяет используемый сборщик.

➡️ Release Notes

🔹 Программирование на языке Python
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳 Ставим Docker одинаково на все сервера

Когда вы разворачиваете Docker на пяти серверах вручную, на каждом может получиться по-своему. На одном установилась одна версия, на другом — другая. На третьем забыли добавить репозиторий. На четвёртом пропустили зависимость.

Вот для этого и нужна автоматизация. Вы один раз описываете правильную установку Docker — и она раскатывается идентично на все серверы.

Используется всё тот же Ansible. Он подключается к каждому серверу и выполняет одни и те же команды по порядку:
- name: Install Docker
hosts: all
become: yes
tasks:
- name: Install required packages
apt:
name: "{{ item }}"
state: present
loop:
- apt-transport-https
- ca-certificates
- curl
- name: Install Docker
shell: curl -fsSL https://get.docker.com | bash


Разберём:

hosts: all — плейбук запустится на всех серверах из вашего инвентаря.

become: yes — нужны права администратора для установки пакетов.

apt: — модуль Ansible для управления пакетами в Debian/Ubuntu. Он знает, как работать с apt-get, и сделает это правильно.

loop: — устанавливает пакеты по одному: apt-transport-https, ca-certificates, curl. Они нужны, чтобы безопасно загрузить Docker.

shell: curl -fsSL https://get.docker.com | bash — официальный скрипт установки Docker от разработчиков. Он сделает все остальное: добавит репозиторий, установит Docker Engine, настроит сервис.

state: present — пакет должен быть установлен. Если его нет, установит. Если есть, проверит версию и обновит при необходимости.

После установки проверьте, что Docker работает:
- name: Verify Docker installation
shell: docker run hello-world
register: docker_test
failed_when: "'Hello from Docker!' not in docker_test.stdout"


Или добавьте проверку в конец плейбука:
- name: Check Docker status
systemd:
name: docker
state: started
enabled: yes


🔹 Программирование на языке Python
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека devops'a

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
4🌚1
💡 Linux 6.18 готов к использованию

Linux 6.18 — новый релиз ядра от Линуса Торвальдса. Несмотря на активное исправление багов в последние дни перед выпуском, разработчик считает, что ядро готово к использованию и не требует дополнительного времени на доработку.

Большинство исправлений касается драйверов, а также Bluetooth, Ceph и AFS.

➡️ Прочитать письмо Торвальдса

🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека devops'a

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏2
MLOps: понимай метрики, а не только контейнеры

Почему модель деградирует? Что такое дрифт данных? Как мониторить точность? Ответы на эти вопросы лежат в области статистики. Девопс, который понимает математику ML, стоит в два раза дороже.

Приходите на курс «Математика для разработки AI-моделей». Старт завтра.

🛠 Прайс: 28 200 ₽.
🛠 Формат: Интенсив.

👉 Стать MLOps-инженером

Тест:
Проверь знания
⚙️ journactl: управление логами systemd

journactl — утилита для работы с журналом systemd, которая позволяет просматривать, фильтровать и анализировать системные логи.

Журналы systemd хранятся в бинарном формате, что позволяет искать по различным полям — юнитам, уровню приоритета, идентификаторам процессов и другим метаданным.

Что можно делать с journactl:

Просматривать все системные логи с момента старта:
journalctl


Фокусироваться на конкретном сервисе, например, nginx:
journalctl -u nginx.service


Фильтровать логи по времени, например, за последний час:
journalctl --since "1 hour ago"


Смотреть логи в реальном времени (аналог tail -f):
journalctl -f


Отфильтровать сообщения с ошибками:
journalctl -p err


Узнать, сколько места занимает журнал на диске:
journalctl --disk-usage


Очистить журнал, например, ограничив размер до 500 Мб:
journalctl --vacuum-size=500M


jurnactl позволяет девопсам быстро ориентироваться в событиях системы, находить сбои и контролировать состояние сервисов.

🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🖥 Смотрим загрузку CPU в реальном времени

Сервер тормозит, но вы не знаете, почему. Может, какой-то процесс сходит с ума и съедает все ресурсы? Или это просто пики нагрузки? Нужно быстро посмотреть, что происходит с процессором прямо сейчас.

Вот для этого и нужна команда, которая покажет текущую загрузку CPU:
top -b -n 1 | grep "Cpu(s)"


top — это команда, которая показывает, чем занимается система. Она выводит процессы, их загрузку, использование памяти, всё подряд.

-b — batch mode. Вместо интерактивного режима top просто выдаёт результат и завершается.

-n 1 — одна итерация. Без этого top обновлял бы данные каждую секунду.

grep "Cpu(s)" — выбирает из всего вывода только строку с информацией о CPU.

Если нужна более глубокая диагностика, есть другие команды:

Смотрим среднюю загрузку за 1, 5 и 15 минут:
uptime //14:35:22 up 10 days, 2:45, 1 user, load average: 0.45, 0.52, 0.48


Три числа в конце — это средняя нагрузка за последние 1, 5 и 15 минут.

Смотрим загрузку каждого ядра отдельно:
mpstat -P ALL 1 1


Смотрим, какой процесс больше всего грузит CPU:
ps aux --sort=-%cpu | head -10


Или используйте специализированные инструменты мониторинга вроде Prometheus или Grafana — они будут отслеживать метрики автоматически и хранить историю.

🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека devops'a

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👏4
📎 Лучшие практики конфигурации в Kubernetes

Вот несколько проверенных правил, которые помогут сделать вашу конфигурацию чистой, понятной и удобной в поддержке.

— Используйте актуальные версии API

Kubernetes быстро развивается. Старые версии API со временем устаревают и перестают работать. Перед созданием ресурсов всегда проверяйте, что используете самые свежие стабильные версии. Команда kubectl api-resources поможет выявить доступные версии.

— Храните конфигурацию в системе контроля версий

Никогда не применяйте манифесты напрямую с локальной машины. Всегда держите их под контролем версий, например в Git. Это поможет быстро откатиться при ошибках и отслеживать изменения без паники.

— Пишите конфигурацию в YAML, а не JSON

Технически работают оба формата, но YAML удобнее для человека — читается легче и занимает меньше места. Однако в YAML есть нюансы: используйте только true или false для булевых значений и избегайте yes, no, on или off, поскольку они могут некорректно интерпретироваться.

— Минимализм — ваш друг

Не задавайте значения по умолчанию, уже обработанные Kubernetes. Минимальные манифесты легче дебажить, они чисты и реже вызывают ошибки.

— Группируйте связанные объекты

Если ваш Deployment, Service и ConfigMap принадлежат одному приложению, объедините их в один манифест. Это упростит управление и развертывание. Можно даже применять целые директории командой kubectl apply -f configs/.

— Добавляйте поясняющие аннотации

Манифесты — это не только инструкции для системы, но и документация для команды. Используйте аннотации, например kubernetes.io/description, чтобы описывать, зачем нужен тот или иной объект. Это очень поможет при отладке и совместной работе.

— Управление рабочими нагрузками: выбирайте правильный контроллер

• Избегайте «голых» Pod без контроллера — они не восстанавливаются при сбоях.

• Для приложений используйте Deployments с ReplicaSet — они обеспечивают поддержание нужного количества копий и позволяют безопасно обновлять версии.

• Для одноразовых задач подойдут Jobs — выполняют работу и завершаются, перезапускаются при сбоях.

— Службы и сетевое взаимодействие

Создавайте Services до запуска зависимых подов — это гарантирует правильную инициализацию переменных окружения для подключения.

Используйте DNS для сервисов — обращайтесь к ним по имени, а не IP. Это упрощает масштабирование и управление.

Осторожно с опциями hostPort и hostNetwork — они ограничивают масштабируемость и усложняют планирование.

— Эффективное использование лейблов

Хорошо подобранные лейблы позволяют легко группировать и фильтровать ресурсы. Следуйте официальным рекомендациям по семантическим меткам:
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/component: web
tier: frontend
phase: test


Полезные команды и советы

• Применяйте сразу целые папки с манифестами:
kubectl apply -f configs/


• Используйте селекторы меток для массового просмотра или удаления ресурсов:
kubectl get pods -l tier=frontend
kubectl delete pod -l phase=test


• Для быстрого прототипирования создавайте деплойменты и сервисы из командной строки:
kubectl create deployment webapp --image=nginx
kubectl expose deployment webapp --port=80


➡️ Оригинальная статья из блога k8s

🐸Библиотека devops'a

#локализация
Please open Telegram to view this post
VIEW IN TELEGRAM
2