Сначала удаляются поды с самым низким приоритетом — это BestEffort (без requests и limits). Затем идут Burstable (имеют только requests или разные values). В последнюю очередь будут удаляться Guaranteed-поды, где requests и limits заданы и совпадают. Это позволяет защитить критически важные приложения от неожиданного завершения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍2
Terraform стал популярнее, чем SaltStack, потому что он лучше решает задачи управления инфраструктурой как кодом (IaC) и обеспечивает декларативный и удобный подход.
Terraform = управление инфраструктурой (создание виртуальных машин, баз данных, сетей и т. д.).
SaltStack = управление конфигурацией (разворачивание ПО, управление пользователями, файлами и т. д.).
В современном DevOps важнее быстро и гибко создавать инфраструктуру (AWS, Kubernetes, облака).
Salt же больше заточен под настройку серверов, но это стало второстепенным.
Terraform = декларативный язык HCL (HashiCorp Configuration Language)
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Terraform = не требует агентов, просто вызывает API облачных провайдеров.
Salt = требует установки Salt Master и Minion'ов на серверах.
Terraform нативно интегрируется с облаками (AWS, GCP, Azure, Kubernetes).
Salt тоже умеет работать с облаками, но его основное применение – настройка серверов.
- У Terraform больше модулей и провайдеров.
- Salt – сложнее настроить для облаков, и сообщество у него меньше.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
DevOps помогает:
- ускорить выпуск продуктов (CI/CD);
- обеспечить надежность и стабильность инфраструктуры;
- наладить сотрудничество между разработкой и операциями;
- повысить гибкость, автоматизацию и прозрачность процессов.
Это напрямую влияет на скорость вывода продукта на рынок и устойчивость систем.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
ClickHouse – это высокопроизводительная колоночная база данных для аналитики.
Она предназначена для быстрого выполнения аналитических запросов на больших объемах данных (миллиарды строк). Используется в BI-системах, логировании, мониторинге и обработке событий.
за счёт хранения данных по колонкам и сжатия.
работает на одной машине или в кластере.
работает с привычными SQL-запросами.
обработка миллионов событий в секунду.
использует Primary Key + MergeTree, что упрощает оптимизацию.
благодаря специальным алгоритмам хранения.
BI-системы (анализ продаж, маркетинга, поведения пользователей).
Агрегация данных по времени (финансы, реклама, ретеншн).
Хранение логов (NGINX, Kubernetes, Clickstream).
Аналитика событий в реальном времени.
Обработка телеметрии с датчиков.
Анализ поведения пользователей в приложениях.
CREATE TABLE visits (
user_id UInt32,
url String,
duration UInt32,
event_time DateTime
) ENGINE = MergeTree()
ORDER BY event_time;
INSERT INTO visits VALUES (1, 'https://example.com', 30, now());
SELECT url, AVG(duration)
FROM visits
GROUP BY url
ORDER BY AVG(duration) DESC;
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
В AWS автоскейлинг реализуется через:
- EC2 Auto Scaling – динамическое увеличение/уменьшение серверов.
- ECS Auto Scaling – масштабирование контейнеров на Fargate или EC2.
- EKS Cluster Autoscaler – масштабирование нод Kubernetes.
- Application Auto Scaling – регулировка ресурсов на основе метрик.
- DynamoDB Auto Scaling – адаптация производительности базы данных.
Автоскейлинг работает на основе CloudWatch Metrics, например CPU Utilization или Network Traffic.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤔1
В Astra Linux (как и в Debian/Ubuntu) системный Python используется для работы ОС, и его обновление может привести к проблемам. Поэтому лучше устанавливать другую версию Python отдельно**, не заменяя системную.
Если Astra Linux основана на Debian 9/10 (например, Astra Smolensk или Orlov), можно использовать PPA
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
sudo apt install -y python3.10 # Устанавливаем нужную версию
После установки можно проверить
python3.10 --version
Если нужная версия недоступна в репозитории, компилируем Python вручную.
Устанавливаем зависимости
sudo apt update
sudo apt install -y build-essential libssl-dev \
libreadline-dev libsqlite3-dev \
zlib1g-dev libbz2-dev libffi-dev
Скачиваем исходники Python
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tgz
sudo tar xvf Python-3.11.6.tgz
Компилируем Python
cd Python-3.11.6
sudo ./configure --enable-optimizations
sudo make -j$(nproc)
sudo make altinstall # НЕ make install, чтобы не затереть системный Python
Проверяем
python3.11 --version
Если нужно переключаться между разными версиями Python, лучше использовать
pyenv
.curl https://pyenv.run | bash
Добавляем в
~/.bashrc
или ~/.profile
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"
Активируем изменения
source ~/.bashrc
Устанавливаем новую версию Python
pyenv install 3.10.12
pyenv global 3.10.12 # Делаем версию по умолчанию
Проверяем:
python --version
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊6👍1
По умолчанию в Astra Linux (Смоленск, Орел) может быть отключён доступ к репозиториям.
1. Открой файл /etc/apt/sources.list.
2. Убедись, что в нём указаны актуальные репозитории.
3. Выполни:
4. sudo apt update
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5👍4💊4
Выполнить rebase на main в Git означает "перенести" ваши изменения поверх актуального состояния основной ветки (
main
). Допустим, вы работаете в ветке
feature-branch
: git checkout feature-branch
Сначала убедимся, что
main
обновлена: git checkout main
git pull origin main
Теперь выполняем сам rebase:
git checkout feature-branch
git rebase main
Если у вас есть конфликты, Git остановит процесс и попросит их решить.
Откройте файлы с конфликтами, исправьте их.
Добавьте исправленные файлы:
git add <файл>
Продолжите rebase:
git rebase --continue
Если rebase прошёл успешно, вам нужно форсированно обновить удалённую ветку (так как история изменилась):
git push origin feature-branch --force
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
- Сжатие заголовков (HPACK).
- Сервер push — сервер может отправить данные заранее.
- Меньше оверхеда, нет блокировок запросов.
Итог: быстрее, надёжнее, меньше сетевой нагрузки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
В DevOps используются разные инструменты для автоматизации развертывания и конфигурации серверов.
Используются для настройки ОС, пакетов, сервисов и приложений.
Ansible – прост в освоении, использует SSH, без агентов
Puppet – декларативный подход, работает по клиент-серверной модели
Chef – использует Ruby DSL, сложнее в настройке
SaltStack – быстрый, поддерживает master-minion и режим без мастера
yaml
- name: Установка Nginx
hosts: web
tasks:
- name: Установить Nginx
apt:
name: nginx
state: present
Используются для автоматического развертывания серверов и облачной инфраструктуры.
Terraform – лучший выбор для облаков (AWS, GCP, Azure)
CloudFormation – инструмент от AWS для управления ресурсами
Pulumi – позволяет писать инфраструктуру на Python, TypeScript
hcl
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Используются для создания готовых образов ОС с предустановленным ПО.
Packer – создает образы для AWS AMI, Docker, VMware
Docker – контейнеризация для изолированных окружений
Vagrant – для локального тестирования инфраструктуры
json
{
"builders": [{
"type": "amazon-ebs",
"region": "us-east-1",
"source_ami": "ami-123456",
"instance_type": "t2.micro",
"ssh_username": "ubuntu"
}]
}
Используются для управления контейнерами и кластеризацией.
Docker Compose – для локального запуска нескольких контейнеров
Kubernetes – для управления контейнерами в продакшене
Nomad – альтернатива Kubernetes от HashiCorp
yaml
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍1
Визуализация логов — это процесс представления лог-файлов в удобном графическом виде для более легкого анализа, поиска аномалий и устранения проблем. Для этого используются различные инструменты, которые собирают, агрегируют и отображают логи в виде графиков, дашбордов и диаграмм.
вместо просмотра тысяч строк логов можно быстро увидеть тенденции и аномалии.
можно отслеживать изменения в режиме реального времени.
легче выявить причину ошибки, если видеть всплески или изменения в логах.
миллионы строк логов можно представить в виде сводных диаграмм.
Logstash – собирает и обрабатывает логи.
Elasticsearch – хранит и индексирует логи для быстрого поиска.
Kibana – визуализирует данные, строит графики и дашборды.
Пример: Можно создать график с количеством ошибок 500 за последние 24 часа.
Loki – хранит и обрабатывает логи.
Grafana – строит красивые дашборды с логами и метриками.
Пример: Можно создать панель с последними логами приложений, используя
tail
-подобное обновление. Обрабатывает логи, хранит их в Elasticsearch, строит графики и отправляет алерты.
Пример: Можно отфильтровать логи по уровню
ERROR
и вывести их в виде диаграммы. Коммерческие решения с мощными инструментами аналитики логов.
Пример: Автоматическая корреляция логов с метриками системы.
Logstash конфиг (сбор логов из файла)
input {
file {
path => "/var/log/app.log"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
}
}
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Это облачное хранилище объектов, используемое для:
- Хранения и резервного копирования данных.
- Хранения статики для веб-приложений.
- Архивации данных (Glacier).
- Хранения логов, баз данных, машинного обучения.
- Хранения образов Docker и артефактов CI/CD.
Функции:
- Версионирование – отслеживание изменений файлов.
- Lifecycle Management – автоматическое перемещение файлов между классами хранения.
- IAM-политики и ACL – контроль доступа.
- S3 Select – фильтрация данных без загрузки всего файла.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Basic Auth (Basic Authentication) – это простой метод аутентификации HTTP-запросов.
Он используется для ограничения доступа к ресурсам, отправляя логин и пароль в заголовке запроса.
Клиент делает запрос к серверу.
Сервер отвечает 401 Unauthorized и требует аутентификацию:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Restricted Area"
Клиент кодирует логин и пароль в Base64 и отправляет их в заголовке:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
В curl
curl -u username:password http://example.com/protected
В Python (requests):
import requests
from requests.auth import HTTPBasicAuth
response = requests.get("http://example.com/protected", auth=HTTPBasicAuth("username", "password"))
print(response.text)
В JavaScript (fetch):
fetch("http://example.com/protected", {
headers: {
"Authorization": "Basic " + btoa("username:password")
}
})
.then(response => response.text())
.then(data => console.log(data));
данные передаются в открытом виде (Base64 — это не шифрование!).
что делает систему уязвимой.
браузеры кэшируют креды, и их сложно сбросить.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Cgroups управляют использованием системных ресурсов контейнерами, таких как процессор, память и ввод-вывод. Это помогает изолировать контейнеры и предотвратить перегрузку системы.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
Если в системе мониторинга или логах кластерный сервис (Cluster P) показывает значение
NaN
(Not a Number), это означает, что данные недоступны или не определены. Метрика не обновляется из-за сбоя Prometheus, Zabbix или Grafana.
Датчики или агенты не отправляют данные.
Посмотреть логи агента
journalctl -u node_exporter --no-pager | tail -20
Проверить доступность сервиса
curl -s http://service-ip:port/metrics
Если метрика рассчитывается (
X / Y
), но Y = 0
, результат будет NaN
. SQL-запрос возвращает пустой результат. Если используется PromQL, попробуйте запросить сырые данные:
rate(http_requests_total[5m])
Проверить SQL-запрос, если данные идут из базы:
SELECT AVG(value) FROM metrics WHERE time > now() - interval '1 hour';
Один или несколько узлов в кластере недоступны. DNS или балансировщик не может найти сервис.
Посмотреть статус узлов:
kubectl get nodes
Проверить доступность сервиса в кластере:
kubectl get pods -n monitoring
Запросы блокируются файрволом (
iptables
, firewalld
). Метрика приходит с другого узла, но между ними нет связи. Проверить сетевые правила:
iptables -L -n | grep DROP
Проверить соединение между узлами:
nc -zv service-ip port
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
DNS-записи определяют, как доменное имя соотносится с IP-адресами, почтовыми, служебными и другими службами, обеспечивая маршрутизацию трафика и работу домена.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💊2
Если процесс удерживает файловые дескрипторы и вам нужно их освободить, то есть несколько способов это сделать.
Самый простой способ — завершить процесс, который удерживает файловые дескрипторы.
kill <PID>
или принудительно
kill -9 <PID>
Чтобы найти процессы, удерживающие файлы
lsof | grep <filename>
или
fuser <filename>
Если вы хотите закрыть файловый дескриптор, не завершая процесс, можно использовать
lsof
и /proc
ls -l /proc/<PID>/fd/
exec 3>&-
Если процесс нельзя перезапустить, но вы имеете к нему доступ, можно закрыть дескриптор через
gdb
: gdb -p <PID>
(gdb) call close(<FD>)
(gdb) detach
(gdb) quit
Если файл удален, но все еще удерживается процессом, можно принудительно перемонтировать файловую систему:
mount -o remount /
Или использовать
lsof
для очистки удаленных файловlsof | grep deleted
Если файлы удерживаются службой (например, Nginx, Apache, MySQL), можно перезапустить службу
systemctl restart <service>
или
service <service> restart
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
Нужно посмотреть список активных пользователей. Существуют команды, которые отображают информацию о текущих сессиях, терминалах, времени входа и командах, которые выполняются. Также можно увидеть, какие процессы запущены от других пользователей.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊13👍4🤔4🔥1
В Linux удаленный файл может оставаться в памяти, если он все еще используется запущенным процессом. Это происходит, потому что файл не удаляется физически, пока его дескриптор (file descriptor) открыт.
Файл все еще используется процессом
Файл удален, но все еще открыт (
deleted
в /proc
) Файл удален, но был записан в смонтированный том
Команда
lsof | grep deleted
Вывод
nginx 1234 www-data 4w REG 8,1 5G /var/log/nginx/access.log (deleted)
Решение: Перезапустить процесс:
systemctl restart nginx
или
kill -HUP 1234 # Закрыть процесс (PID = 1234)
Если процесс нельзя перезапустить, можно освободить занятую память без перезапуска.
ls -l /proc/*/fd/ | grep deleted
Вывод
lrwx------ 1 root root 64 Feb 21 14:23 /proc/5678/fd/4 -> /var/log/nginx/access.log (deleted)
Очистить файл, не перезапуская процесс
> /proc/5678/fd/4
Если файл хранился в смонтированном томе, он может не удалиться сразу.
Проверить монтированные диски:
df -h
mount | grep /var/log
Если файл был в Docker-контейнере, проверить объемы:
docker system df
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1