В 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
Нет. Переменная, объявленная внутри функции, имеет локальную область видимости — она недоступна в других функциях.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤔1💊1
Это платформа для управления Kubernetes-кластерами. Она позволяет развертывать, настраивать, мониторить и управлять несколькими кластерами Kubernetes из единой панели управления. Rancher упрощает работу с Kubernetes, предоставляя удобный UI, API и инструменты автоматизации.
Rancher позволяет управлять кластерами Kubernetes, развернутыми в различных облаках (AWS, GCP, Azure) и на локальной инфраструктуре.
С помощью Rancher можно быстро развернуть Kubernetes-кластеры с минимальными усилиями.
Поддерживает аутентификацию через LDAP, Active Directory, GitHub и другие методы.
Встроенная поддержка Prometheus, Grafana и Fluentd для мониторинга и логов.
Поддерживает Helm-чарты и стандартные манифесты Kubernetes.
центральный компонент, управляющий кластерами и предоставляющий UI/API.
могут быть развернуты с помощью Rancher (RKE, RKE2) или добавлены вручную (например, EKS, AKS, GKE).
агенты, установленные в кластерах для обеспечения связи с сервером Rancher.
Для развертывания Rancher можно использовать Docker
docker run -d --name=rancher --restart=unless-stopped \
-p 80:80 -p 443:443 \
rancher/rancher:latest
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
- Dockerfile – инструкция для создания образа (docker build).
- Docker Compose – управление несколькими контейнерами (docker-compose up).
- Dockerfile нужен для создания образа, а Docker Compose – для оркестрации сервисов.
- Docker Compose поддерживает многоконтейнерные приложения, а Dockerfile – только один контейнер.
- В docker-compose.yml можно задать сети, volume, зависимости между сервисами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1💊1
Пробы выполняются для оценки и проверки возможностей, навыков или функций, обычно в контексте экспериментов, тестирования или практических заданий. Это может касаться научных экспериментов, технических испытаний или проверок навыков в различных сферах, например, на актерских или рабочих прослушиваниях.
Liveness Probe проверяет, работает ли контейнер. Если проверка liveness не удалась, Kubernetes перезапускает контейнер.
Readiness Probe проверяет, готов ли контейнер обслуживать запросы. Если проверка readiness не удалась, под будет исключен из службы (service) и не будет получать трафик.
Startup Probe проверяет, что контейнер успешно запустился. Если проверка startup не удалась, Kubernetes считает, что контейнер не может запуститься, и перезапускает его.
initialDelaySeconds
. Используется для проверки состояния контейнеров, которые могут войти в неопределенное состояние и требуют перезапуска для восстановления работоспособности.livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
failureThreshold: 3
initialDelaySeconds
. Используется для проверки готовности контейнеров, которые могут быть временно не готовы обслуживать трафик, например, во время загрузки данных или выполнения миграций.readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
failureThreshold: 3
startupProbe:
httpGet:
path: /startup
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
failureThreshold: 30
Проверка выполняется путем отправки HTTP GET запроса к контейнеру.
httpGet:
path: /healthz
port: 8080
Проверка выполняется путем установления TCP-соединения с контейнером.
tcpSocket:
port: 8080
Проверка выполняется путем выполнения команды внутри контейнера.
exec:
command:
- cat
- /tmp/healthy
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💊1
- Изолированность — каждый сервис выполняет одну задачу;
- Независимое развертывание;
- Собственные БД и логику;
- Общение по API (обычно REST, gRPC);
- Автономность и масштабируемость;
- Командная ответственность за конкретный сервис.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊2