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

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

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

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

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
#вопросы_с_собеседования

Если доступной (available) памяти 2919, почему свободной (free) памяти 843?

Total. Эта цифра представляет всю существующую память.
Used вычисление общего значения оперативной памяти системы за вычетом выделенной свободной, разделяемой, буферной и кэш-памяти.
Free — свободная память в системе.
Shared — память, используемая (преимущественно) в tmpfs
Buffer и Cache идентифицируют память, используемую для нужд ядра / ОС. Буфер и кеш складываются вместе, а сумма указывается в разделе buff/cache.
Available — примерное количество оперативной памяти, доступное для запуска новых приложений без использования ими раздела подкачки. В отличие от поля free, это поле принимает в расчёт cache и также то, что не вся пригодная для повторного использования память будет возвращена после освобождения.
❤‍🔥26👍4🥰21
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
1
CheatSheet по Расширенным параметрам в Bash.

Что такое расширенные параметры? Допустим у вас есть переменная ${var%}, что такое знак %?

${var%} удалит короткий суффикс
$(var%%} удалит длинный суффикс
${var#} & ${var##} удалит короткий и длинный префикс

var='hello world'
echo ${var%world}


На экран выведется слово hello. То есть произошло удаление короткого суффикса. Вот еще пример:

var='hello world'
echo ${var%o*} # hello w
echo ${var%%o*} # hell

Более подробно про расширенные параметры можно почитать на официальной странице.


PDF-ку можно забрать отсюда.
👍8👏85🔥5🎉3
🎉🎉 Docker Desktop 4.26: Rosetta, PHP Init, Builds View GA, Admin Enhancements и Docker Desktop Image для Microsoft Dev Box

В Docker Desktop 4.26 представлены последние достижения Rosetta в области оптимизации рабочего стола Docker. Новая версия также повышает производительность разработчиков, решая такие распространенные проблемы, как Node.js зависания и ошибки сегментации PHP, а также повышает производительность благодаря повышению скорости и новому представлению сборок Docker Desktop.

Вот тут можете детальнее изучить, что происходит

#новость
4🔥1
🤔😱 Траблшутинг BGP

BGP — это сложный протокол маршрутизации, и бывают ситуации, когда что-то идет не так как надо. Кроме того, что он сложный, он также совершенно отличается от наших IGP протоколов (OSPF и EIGRP). В материале повествование начнется с рассмотрения неполадок, возникающих в установлении соседства BGP и проблем с объявлением маршрутов, которые должны или не должны появляться

Изучить

#туториал
🎉10🤩10👍6👏1
🤔 Очередной #дайджест для DevOps-ов

🔺 Валидация данных при помощи Pydantic — зачем это нужно, чем софт лучше marshmallow, как пользоваться и как с его помощью правильно проверять данные

🔺 snips.sh — pastebin сервис, работающий по SSH и доступный как в tui, так и в веб-морде

🔺 Formatting an XFS Filesystem — инженеры Oracle пишут о работе mkfs.xfs и о том, что происходит в процессе форматирования раздела в этой файловой системе

🔺 Установка размера кучи Java внутри контейнера Docker — запуск Java-приложений в контейнере может показаться тривиальной задачей, но есть некоторые подводные камни...

🔺 Траблшутинг отсутствующих журналов Kubernetes в Elasticsearch — рассказ о том, почему это происходит и как это предотвратить
🤩16❤‍🔥132🔥1
😇🤲 Роль информационной безопасности в наше время — не остановить все инциденты, а не допустить нанесение ущерба

Контейнеризированные среды благоволят реализовывать концепцию Zero Trust, потому что они сами приносят определенные уровни изоляции и, непосредственно, есть дополнительные инструменты, как самой системы оркестрации, так и системы Linux, которая нам это позволяет делать. Проще сред чем контейнеризированная для оркестрации и для того, чтобы реализовывать модель Zero Trust, нет.

В концепции Zero Trust мы ничему не доверяем, то есть у нас нет такого понятия, как доверенное окружение, доверенный компонент или среда. Мы изначально исходим из концепции, что везде может быть уязвимость, вредоносный код и другие проблемы. Изначально, до обнаружения проблем, мы закладываем, что они уже могут существовать и система может, возможно, уже скомпрометирована.

Читать статью

#почитать
👍2🔥2
ZRAM позволяет сжимать оперативную память на лету и таким образом увеличить ее объём.

При включении zram, сжатие переносит часть нагрузки на процессор, но использование zram действительно может улучшить производительность.

Также есть zswap, которая сжимает данные в разделе подкачки. И которая по умолчанию включена почти во всех официальных ядрах.

Проблема zswap заключается в том, что его приоритет выше чем у zram, который остается неиспользуемым. Чтобы решить эту проблему, нужно отключить zswap в ядре.

CONFIG_ZSWAP_DEFAULT_ON=N


Но чтобы применить эту опцию, нужно пересобрать ядро. Пойдем легким путем и выключим zswap через загрузчик grub.

Редактируем файл /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="zswap.enabled=0" loglevel=3 quiet "


Не забываем перегенирировать конфиг grub:

grub-mkconfig -o /boot/grub/grub.cfg


Перезагружаем машину и проверяем отключение zswap:

cat /sys/module/zswap/parameters/enabled


Если вывелась буква N — значит все правильно.

Ну и наконец включаем zram. Для этого пишем bash скрипт и кидаем его в автозагрузку:

#!/bin/bash

modprobe zram
mkdir /sys/block/zram0
echo lz4 > /sys/block/zram0/comp_algorithm
echo 1G > /sys/block/zram0/disksize
echo 2 > /sys/block/zram0/max_comp_streams
mkswap --label zram0 /dev/zram0
swapon --priority 100 /dev/zram0


1. Загружаем модуль zram
2. Выбираем алгоритм сжатия lz4 (либо zstd)
3. Объем zram 1гиг физической оперативки
4. 2 это количество потоков сжатия (потоки процессора)
5. Создаем блочное устройство и включаем его

Запускаем скрипт и проверяем включение командой: zramctl. Если на экран что-то вывелось, значит всё хорошо и сжатие начало работать.

Если заморачиваться с bash скриптами не хочется, ставим утилиту которая будет работать через systemd.

apt install systemd-zram-generator


Правим конфиг /etc/systemd/zram-generator.conf

[zram0]
zram-size = ram
compression-algorithm = lz4


Активируем и запускаем:

systemctl daemon-reload
systemctl start /dev/zram0


Всё! Теперь оно само будет запускаться без лишних движений.
👍10🎉7🥰65🔥5
🥷💥 Container Security Fundamentals

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

#видео
👍32
💪💪 Kubernetes V1.27 : Защита поды с помощью MemoryThrottlingFactor

В стремлении к совершенству управления ресурсами в Kubernetes 1.22 появилась важная функция — ограничения памяти. Это позволило пользователям устанавливать явные границы использования памяти, предотвращая чрезмерное потребление ресурсов контейнерами.

Запросы к памяти и ограничения стали ключевыми с появлением ограничений памяти в Kubernetes. Эти элементы играют решающую роль в точной настройке распределения ресурсов внутри кластера.

Продолжение тут

#туториал
13🎉13👏2
Подробное дополнение по Container Security Fundamentals к этому посту т. к. тема интересная и стоит внимания.

Linux capabilities предоставляют процессу подмножество доступных привилегий root. Это эффективно разбивает привилегии root на более мелкие и отличающиеся друг от друга единицы. Каждая из этих единиц затем может быть независимо предоставлена процессам. Таким образом, сокращается полный набор привилегий и снижаются риски эксплуатации.

Читать статью

#туториал
👏2👍1🥰1
🤔 Очередной #дайджест для DevOps-ов

Память как у пингвина — работа памяти в Linux

Strace little book — короткие заметки о том, какие опции и в каких случаях можно использовать

Визуальный редактор для terraform — создавайте свою облачную инфраструктуру без особых усилий с помощью вебморды Brain board

Helm Dashboard — графический интерфейс для управления Helm-релизами в Kubernetes

Нагрузочное тестирование — про нагрузочное тестирование для DevOps-инженеров от Yandex Cloud
😁7👍5🥰5🔥4🎉4
#вопросы_с_собеседования

Как работают сертификаты? Как подтверждается соединение?

Браузер или сервер (клиент) пытается подключиться к веб-сайту (веб-серверу), защищенному с помощью SSL.
Клиент запрашивает идентификацию у веб-сервера.
В ответ веб-сервер отправляет копию своего SSL-сертификата и публичный ключ.
Клиент проверяет, является ли этот SSL-сертификат доверенным. В него зашиты сервера с помощью которых нужно производить проверку, с помощью центров сертификации. Если это так, он сообщает об этом веб-серверу. Генерирует сеансовый ключ, шифрует публичным ключом и отправляет на сервер.
Сервер расшифровывает сообщение и сохраняет сеансовый ключ. Затем веб-сервер возвращает подтверждение с цифровой подписью и начинает сеанс, зашифрованный с использованием SSL.
Зашифрованные данные используются совместно браузером или сервером и веб-сервером.

Этот процесс иногда называют подтверждением SSL-соединения. Хотя по описанию этот процесс выглядит длительным, в реальности он занимает миллисекунды.
18👍13👏2
🧑‍💻 Особенности работы в айти: результаты опроса подписчиков

В декабре мы провели среди вас опрос, изучили результаты и сделали аналитическую статью на vc.ru.

Вот некоторые выводы:

🧔‍♂️ В основном наша аудитория состоит из мужчин — 92,1% опрошенных. Женщин, соответственно, всего 7,9%.
🐍 В ТОП-10 специальностей входят питонисты — их 12,4%. Дата-инженерами или дата-сайентистами себя назвали 3.7% респондентов.
👨‍🎓 25% аудитории — самоучки, у которых нет профильного образования, и они не заканчивали никаких платных курсов.
💲 У разработчиков с опытом менее года преобладают зарплаты до 90 000 рублей (88%). Если опыта 1-3 года, то доля получающих 150 000+ увеличивается до 53,6%.
💰 Опытные и образованные Python-разработчики (15,44%) также входят в шестёрку самых высокооплачиваемых специалистов.

🔗 Полный отчёт можно прочесть по этой ссылке

💬 Пишите, какие ещё подобные материалы вам было бы интересно почитать
👍4👏31
Недавно выяснили, что nginx позволяет нативно писать логи в json формате. Для этого в конфиг nginx.conf нужно добавить такой блок:

log_format nginx_json escape=json '{"time_local":"$time_local", "cloud_ip":"$http_x_real_ip", "ip":"$http_cf_connecting_ip", "connection":"$connection", "request_completion":"$request_completion", "status":"$status", "rtime":"$request_time", "rlenght":"$request_length", "content_type":"$content_type", "content_length":"$content_length", "bytes_sent":"$bytes_sent", "body_bytes_sent":"$body_bytes_sent", "raddr":"$remote_addr", "ruser":"$remote_user","upstream_addr":"$upstream_addr", "upstr_resp_time":"$upstream_response_time", "upstr_cache_status":"$upstream_cache_status", "upst_status":"$upstream_status", "gzip_ratio":"$gzip_ratio", "http_x_forwarded_for":"$http_x_forwarded_for", "proxy":"$proxy_host:$proxy_port", "proxy_int_body_length":"$proxy_internal_body_length", "server_proto":"$server_protocol", "rmethod":"$request_method", "uri":"$uri", "args":"$args", "http_referer":"$http_referer", "uag":"$http_user_agent"}';

access_log /var/log/nginx/access.log nginx_json;
error_log /var/log/nginx/error.log;


Получаем максимальную информацию о клиенте в json формате, которую пробиваем средствами nginx. И теперь все это можно легко скармливать всяким эластикам и т.п. без парсинга и прочего.

Хранить логи в файлах не айс — хорошо бы запихать их в system journal.

Добавим пару строк в nginx.conf и всё логирование будет перенаправлено в system journal.

error_log syslog:server=unix:/dev/log;
access_log syslog:server=unix:/dev/log nginx_json;


А можно комбинировать, писать одновременно логи в файл в дефолтном шаблоне nginx’а и параллельно писать в system journal в json:

log_format nginx_json ...
log_format nginx_default ...

access_log /var/log/nginx/access_json.log nginx_json;
access_log /var/log/nginx/access_default.log nginx_default;


Чтобы посмотреть логи в system journal, воспользуйтесь командой: journalctl -f
👍24❤‍🔥21👏21