DevOps | Вопросы собесов
5.14K subscribers
27 photos
780 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Как в линуксе посмотреть список дескрипторов файлов?

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

🚩Основные способы

🟠Команда `ls` в каталоге `/proc/[PID]/fd`
Каждый процесс в Linux имеет свой подкаталог в /proc с идентификатором процесса (PID). В подкаталоге fd хранятся ссылки на открытые дескрипторы файлов.
ls -l /proc/$(pidof <имя_процесса>)/fd


Вывод
lrwx------ 1 user user 64 Dec 23 12:00 0 -> /dev/pts/0
lrwx------ 1 user user 64 Dec 23 12:00 1 -> /dev/pts/0
lrwx------ 1 user user 64 Dec 23 12:00 2 -> /dev/pts/0


🟠Использование `lsof`
Команда lsof (list open files) отображает список всех открытых файлов в системе.
lsof -p <PID>


Пример для всех процессов
lsof


Вывод
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash 1234 user cwd DIR 8,1 4096 256 /home/user
bash 1234 user rtd DIR 8,1 4096 2 /
bash 1234 user 0u CHR 136,0 0 3 /dev/pts/0
bash 1234 user 1u CHR 136,0 0 3 /dev/pts/0
bash 1234 user 2u CHR 136,0 0 3 /dev/pts/0


🟠Использование `lsfd`
Утилита lsfd (из пакета util-linux) удобна для просмотра файловых дескрипторов.
lsfd


Вывод
PID    FD TTY      TYPE      DEVICE SIZE/OFF   NODE NAME
1234 0 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
1234 1 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
1234 2 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0


🚩Полезные флаги и фильтрация

Список дескрипторов определенного пользователя:
lsof -u <имя_пользователя>


Список файлов определенного типа (например, сокеты):
lsof -i


Фильтрация по определенному файлу или устройству:
lsof /path/to/file


🚩Почему важно знать про дескрипторы?

🟠Отладка приложений
Определение, какие файлы, сокеты или устройства использует процесс.
🟠Устранение утечек
Проверка, остаются ли ненужные дескрипторы открытыми.
🟠Администрирование
Диагностика проблем, связанных с блокировкой файлов.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2
🤔 RDS Aurora: автоскейлинг — базовая функция?

Нет, не включён по умолчанию. Нужно:
- Активировать Aurora Auto Scaling;
- Настроить CloudWatch alarms;
- Привязать к read-replicas или write-секциям.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🤔 Как linux выбирает, какой из процессов завершить?

Она использует механизм, известный как OOM Killer (убийца процессов при нехватке памяти), для завершения процессов с целью освобождения памяти. Выбор процесса для завершения базируется на ряде критериев, чтобы минимизировать влияние на работу системы.

🚩Как работает OOM Killer?

🟠Очки OOM (OOM Score)
Каждому процессу присваиваются очки OOM, которые рассчитываются на основе нескольких факторов, таких как: Объем памяти, используемой процессом. Приоритет процесса. Важность процесса для системы (например, системные демоны имеют более низкие очки).

🟠Формула расчета OOM Score
Основной фактор при расчете очков - это объем потребляемой процессом памяти. Чем больше памяти потребляет процесс, тем выше его OOM Score. Операционная система также учитывает приоритет процесса (nice value) и некоторые другие параметры.

🟠Принудительное завершение
Процесс с наибольшим OOM Score считается наименее критичным для системы и завершается первым.

🚩Пример расчета OOM Score

🟠Вот пример того, как может быть рассчитан OOM Score (упрощенный)
Процесс A использует 1 ГБ памяти.
Процесс B использует 2 ГБ памяти.
Процесс C использует 500 МБ памяти, но это критический системный процесс.
🟠OOM Score для этих процессов может выглядеть так
Процесс A: 300
Процесс B: 600
Процесс C: 100 (низкий, так как процесс критический)

🚩Настройка OOM Killer

Администраторы могут влиять на работу OOM Killer, настраивая параметры OOM Score для конкретных процессов с помощью файлов в каталоге /proc. Например, для изменения приоритета процесса:
echo -1000 > /proc/<PID>/oom_score_adj


🚩Логирование и мониторинг

При срабатывании OOM Killer соответствующие сообщения записываются в системный журнал (обычно /var/log/syslog или /var/log/messages), что позволяет администраторам анализировать причины и предпринимать меры по предотвращению в будущем.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍2
🤔 Как установить Node.js на Astra Linux?

1. Добавить репозиторий nodesource:
2. curl -fsSL
https://deb.nodesource.com/setup_18.x | sudo -E bash -
3. Установить Node.js:
4. sudo apt install -y nodejs
5. Проверить версию:
6. node -v
7. npm -v
Если Astra использует жёсткое разделение уровней доступа (например, в SE версии), может потребоваться временно изменить политику безопасности или установить из исходников.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊13🔥2🤔1
🤔 Как посмотреть размер папки на диске?

Для того чтобы узнать размер папки на диске, можно воспользоваться различными методами в зависимости от операционной системы. Вот несколько способов для наиболее распространённых ОС:

🚩Windows

🟠Использование проводника (Explorer)
Откройте Проводник Windows.
Наведите на папку, размер которой вы хотите узнать.
Кликните правой кнопкой мыши и выберите "Свойства".
В открывшемся окне "Свойства" вы увидите размер папки в разделе "Размер".

🟠Использование командной строки
Откройте командную строку (Cmd) или PowerShell.
Введите следующую команду, заменив ПутьКПапке на путь к интересующей вас папке:
du -sh ПутьКПапке   


Для PowerShell можно использовать
      Get-ChildItem ПутьКПапке -Recurse | Measure-Object -Property Length -Sum


🚩macOS и Linux

Использование терминала
Откройте терминал.
Введите команду du, чтобы узнать размер папки. Вот пример команды, которая показывает размер папки в читаемом виде (суммарный размер всех файлов)
du -sh /путь/к/папке


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие стейджи входят в пайп (CI/CD pipeline)?

Обычно pipeline в GitLab CI включает следующие стадии:
- build — сборка приложения или зависимостей
- test — выполнение unit/integration тестов
- lint/code-quality — проверка качества кода
- package — упаковка приложения в артефакт (например, Docker-образ)
- deploy — развёртывание на окружение
- cleanup — удаление временных файлов, очистка после деплоя
Конкретные стейджи зависят от проекта, но выше — наиболее распространённый порядок.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥9👍4
🤔 Как версионируете чарты?

Helm-чарты должны быть версионированы, чтобы отслеживать изменения и управлять развертываниями.

Версии чарта (Chart.yaml)
Версии приложения (appVersion)
Репозиторий Helm (helm repo)
Git-теги и CI/CD

🚩Версия чарта (`Chart.yaml`)

Каждый Helm-чарт содержит Chart.yaml, где указывается версия чарта.
yaml  
apiVersion: v2
name: my-app
description: Helm chart for my application
version: 1.2.3
appVersion: 2.0.1


🚩Хранение и обновление чарта в репозитории Helm

Helm-чарты можно хранить в локальном или удаленном репозитории.
sh  
helm package my-chart/


Обновить индекс в репозитории
sh  
helm repo index .


Добавить новый чарт в Helm-репозиторий
sh  
helm repo add my-repo https://charts.example.com
helm push my-app-1.2.3.tgz my-repo


🚩Автоматическое версионирование через Git и CI/CD

Обычно чарты хранятся в Git, и версии обновляются автоматически через CI/CD.

Пример автоматического увеличения версии (version) в Chart.yaml через helm/chart-releaser-action
yaml  
name: Release Helm Chart

on:
push:
tags:
- 'v*'

jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3

- name: Set up Helm
uses: azure/setup-helm@v3
with:
version: 'latest'

- name: Package Helm Chart
run: helm package my-chart/

- name: Upload to Helm Repo
uses: helm/chart-releaser-action@v1


🚩Как установить конкретную версию чарта?

Чтобы развернуть определенную версию Helm-чарта, указываем --version
sh  
helm install my-app my-repo/my-app --version 1.2.3

Или обновить до новой версии:
sh  
helm upgrade my-app my-repo/my-app --version 1.2.4


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍3
🤔 Что такое shared memory и зачем она?

Разделяемая память (/dev/shm, shmget, mmap) — используется для IPC между процессами.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2💊1
🤔 Что такое cherry pick?

Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки.

🚩Когда используется

🟠Применение отдельных изменений
Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки.
🟠Быстрое исправление ошибок
Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза.
🟠Избежание сложного слияния
Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям, cherry-pick позволяет аккуратно перенести только нужные коммиты.

🚩Примеры использования

🟠Простого `cherry-pick`
Перенос одного коммита из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick коммита
git cherry-pick <commit-hash>


🟠Применения нескольких коммитов
Перенос нескольких коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick нескольких коммитов
git cherry-pick <commit-hash-1> <commit-hash-2> <commit-hash-3>


🟠Применения диапазона коммитов
Перенос диапазона коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick диапазона коммитов
git cherry-pick <start-commit-hash>..<end-commit-hash>


🚩Разрешение конфликтов

1⃣Разрешите конфликты в файлах.

2⃣Добавьте изменения в индекс
git add <filename>   


3⃣Завершите процесс cherry-pick
git cherry-pick --continue   


🚩Прерывание

Если вы хотите прервать процесс cherry-pick, можно использовать команду
git cherry-pick --abort


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Как можно увеличить скорость чтения по большой таблице?

- Использовать индексы на полях фильтрации.
- Денормализация или кэширование популярных данных.
- Разбивка на шарды или партиции.
- Чтение batch-ами, а не всё сразу.
- Оптимизация запросов, EXPLAIN PLAN.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Зачем нужны теги в Ansible?

Теги в Ansible позволяют запускать только определенные задачи или роли, а не весь плейбук. Это ускоряет выполнение и упрощает управление конфигурацией.

🚩Когда использовать теги?

🟠Запуск только нужных задач
если плейбук содержит много шагов, можно выполнить только нужные.
🟠Разделение задач по категориям
например, отдельно установка, обновление, настройка сервиса.
🟠Оптимизация CI/CD
ускорение развертывания, выполняя только измененные задачи.

🚩Как использовать теги?

🟠Теги в задачах (`tasks`)
Простой пример – установка и перезапуск Nginx
yaml  
- name: Установить Nginx
apt:
name: nginx
state: present
tags: install

- name: Перезапустить Nginx
service:
name: nginx
state: restarted
tags: restart



Запуск только установки (install)
sh  
ansible-playbook playbook.yml --tags install



Запуск только перезапуска (restart)
sh  
ansible-playbook playbook.yml --tags restart



🟠Теги в ролях (`roles`)
Если у вас несколько ролей, можно запускать только нужную:
yaml  
- hosts: all
roles:
- { role: nginx, tags: web }
- { role: database, tags: db }



Запуск только роли database
sh  
ansible-playbook playbook.yml --tags db



🟠Исключение тегов (`--skip-tags`)
Можно пропустить выполнение определенных задач
sh  
ansible-playbook playbook.yml --skip-tags restart


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🤔 Как проверять merge request в бесплатном GitLab?

- Использовать pipelines only for MRs:
- only:
- merge_requests
- Включить проверки на наличие:
- mr.labels, mr.title, mr.assignee.
- Автоматизировать через .gitlab-ci.yml с rules и only.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊8
🤔 Что такое SLA, SLO, SLI?

Эти три термина относятся к управлению надежностью и качеством IT-сервисов. Они помогают определить, измерить и гарантировать уровень обслуживания пользователей.

🚩SLI (Service Level Indicator) – Показатель уровня сервиса

SLI – это метрика, которая показывает, насколько хорошо работает сервис.
- Доступность (например, uptime 99.9%)
- Время ответа API (например, менее 200 мс)
- Ошибки запросов (например, не более 1% 5xx ошибок)

🚩SLO (Service Level Objective) – Целевой уровень сервиса

SLO – это цель, которую компания ставит для SLI.
Доступность 99.9% сервиса в месяц.
Среднее время ответа API ≤ 200 мс.

🚩SLA (Service Level Agreement) – Соглашение об уровне сервиса

SLA – это официальное соглашение между клиентом и провайдером сервиса, которое описывает обязательства и штрафы за их невыполнение.
- Если доступность меньше 99.9%, клиент получает возврат денег.
- Если среднее время ответа API больше 500 мс, клиент получает скидку.

🚩Как они связаны?

SLI (метрика) → измеряет, насколько хорош сервис.
SLO (цель) → устанавливает, каким должен быть сервис.
SLA (договор) → фиксирует обязательства и штрафы.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤔 Какие Cloud есть?

- AWS — лидер по функциональности;
- Azure — хорош для интеграции с Microsoft;
- GCP — оптимизирован под Big Data и AI;
- Также: IBM Cloud, Oracle Cloud, DigitalOcean, Hetzner, Yandex Cloud.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊16🔥2
🤔 Что такое дешборды в графане?

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

🚩Почему нужны дешборды в Grafana?

🟠Мониторинг в реальном времени
Позволяют наблюдать за ключевыми показателями производительности (KPI) систем в реальном времени. Например, загрузка CPU, использование памяти, число запросов в секунду.

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

🟠Простота анализа данных
Объединяют данные из разных источников в одном месте (Prometheus, Elasticsearch, Loki, InfluxDB, PostgreSQL и др.). Упрощают анализ данных благодаря визуализации.

🟠Настраиваемость и удобство
Можно создавать персонализированные панели под конкретные задачи или роли (разработчики, SRE, менеджеры).

🚩Основные элементы дешборда

🟠Панели (Panels)
Каждая панель отображает отдельный набор данных в определенном виде (график, таблица, heatmap, текст и др.). Пример: График использования памяти на сервере.

🟠Источник данных (Data Source)
Данные, отображаемые на панели, поступают из определённого источника (Prometheus, Elasticsearch, MySQL и т.д.). Grafana поддерживает множество интеграций.

🟠Переменные (Variables)
Динамические параметры, которые позволяют изменять отображаемые данные без необходимости редактировать панель. Пример: Переключение между разными серверами или метриками.

🟠Алёрты (Alerts)
Настраиваемые уведомления, которые активируются при достижении определённого порога метрики. Пример: Отправка уведомления в Slack при увеличении загрузки CPU выше 90%.

🟠Теги и аннотации
Обозначают ключевые события на графиках, например, развёртывание нового релиза.

🚩Пример использования дешборда

🟠Панели
1. Время отклика API (Response Time).
2. Число активных пользователей (Active Users).
3. Использование ресурсов (CPU, RAM).
4. Ошибки HTTP (5xx, 4xx).
🟠Источники данных
- Prometheus для метрик.
- Loki для логов.
- MySQL для аналитических данных.
🟠Переменные
- Выбор региона (например, Европа, США).
- Фильтрация по микросервисам.

🚩Создание дешборда в Grafana

🟠Добавление панели
В интерфейсе Grafana создайте новый дешборд. Добавьте панель и выберите тип визуализации (график, таблица, бар-чарт и т.д.).

🟠Настройка источника данных
Укажите источник данных для каждой панели. Например, Prometheus: rate(http_requests_total[5m]).

🟠Настройка фильтров и переменных
Добавьте переменные, чтобы дешборд был динамичным.

🟠Добавление алертов
Настройте триггеры для уведомлений (например, при высоком времени отклика).

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как провести трафик к ingress изнутри кластера?

1. Использовать имя сервиса ingress-контроллера (ingress-nginx-controller, например).
2. Обратиться через DNS:
3. curl http://<ingress-hostname>.<namespace>.svc.cluster.local
4. Или использовать внутренний адрес Ingress через curl/wget прямо по его ClusterIP.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2💊2
Главные по контейнеризации в России приглашают на второй митап Deckhouse User Community.
21 августа | Москва


Приходите, если работаете с Kubernetes или планируете начать. Разберём три практических кейса:
как DKP управляет узлами кластера — от создания до вывода из кластера;
как построить платформу обучения на Community Edition быстрее ванильного Kubernetes;
как автоматизировать контроль архитектуры с помощью фитнес-функций.

Будет полезно инженерам эксплуатации, платформенным разработчикам и всем, кто хочет прокачать навыки работы с современными подходами в DevOps.

Только офлайн. Пицца и нетворкинг в программе. Регистрируйтесь!
🤔 Как посмотреть логи в уже работающем контейнере?

Чтобы посмотреть логи работающего контейнера в Docker, используйте команду:
docker logs <container_id>


или
docker logs <container_name>


🚩Основные флаги

🟠`-f` (follow)
следить за логами в реальном времени (как tail -f):

  docker logs -f <container_id>


🟠`--tail N`
показать только последние N строк:

  docker logs --tail 100 <container_id>


🟠`-t` (timestamps)
добавить метки времени:
docker logs -t <container_id>


🚩Просмотр логов через `docker-compose`

Если контейнер запущен через docker-compose, можно использовать:
docker-compose logs -f


или для конкретного сервиса:
docker-compose logs -f <service_name>


🚩Логи для контейнера с systemd (если Docker пишет в `journald`)

journalctl -u docker -f


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Чем firewalld отличается от iptables?

firewalld — это высокоуровневая оболочка над iptables или nftables, предоставляющая динамическое управление зонной политикой. iptables — низкоуровневый инструмент, требующий ручной настройки.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7💊1
🤔 Какая самая главная питоновская библиотека?

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

🚩Примеры важных модулей из `stdlib`

🟠`os`
работа с файловой системой
🟠`sys`
доступ к системным параметрам
🟠`re`
регулярные выражения
🟠`math`
математика
🟠`datetime`
работа с датами
🟠`json`
парсинг JSON
🟠`logging`
логирование
🟠`asyncio`
асинхронность
🟠`http.server`
встроенный HTTP-сервер

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1