Это значит, что устройство не смогло получить IP от DHCP-сервера, и сработала автоконфигурация (APIPA).
Используется Windows и другими ОС для временной работы в локальной сети, без подключения к Интернету.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вам нужно собирать метрики (нагрузка, ошибки, задержки, бизнес-показатели) с вашего продукта, то вот лучшие инструменты
Prometheus – база данных временных рядов (time-series DB) для хранения метрик.
Grafana – мощная визуализация метрик.
Метрики собираются экспортерами (
node_exporter
, blackbox_exporter
и т. д.). Данные хранятся в Prometheus.
Grafana показывает красивые графики.
rate(http_requests_total[5m]) # Запросы в секунду за 5 минут
Устанавливается агент на сервер (
zabbix-agent
). Сервер собирает метрики и генерирует алерты.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Multi-stage используется в Dockerfile для оптимизации размеров образа, когда:
- в первом этапе происходит сборка приложения с инструментами, зависимостями;
- в последующих — копируются только необходимые артефакты, без сборочных инструментов.
Это позволяет разделить окружение сборки и запуска, повышая безопасность и уменьшая размер итогового контейнера.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
В Prometheus данные собираются по pull-модели – сервер сам запрашивает метрики у клиентов. Чтобы клиенты отдавали метрики, нужно:
1. Настроить приложение на экспонирование метрик в формате Prometheus.
2. Добавить Prometheus job для сбора этих метрик.
3. Опционально – использовать Pushgateway, если pull-модель не подходит.
Если приложение написано на Go, Python, Java или Node.js. Prometheus предлагает официальные клиентские библиотеки:
Go: [
prometheus/client_golang
](https://github.com/prometheus/client_golang) Python: [
prometheus_client
](https://github.com/prometheus/client_python) Java: [
simpleclient
](https://github.com/prometheus/client_java) Node.js: [
prom-client
](https://github.com/siimon/prom-client) Пример для Python
pip install prometheus_client
from prometheus_client import start_http_server, Counter
import time
# Создаем счетчик запросов
REQUEST_COUNT = Counter('app_requests_total', 'Total requests')
def process_request():
REQUEST_COUNT.inc() # Увеличиваем счетчик
time.sleep(1) # Имитация обработки запроса
if __name__ == '__main__':
start_http_server(8000) # Открываем метрики на 8000 порту
while True:
process_request()
npm install prom-client express
const express = require('express');
const client = require('prom-client');
const app = express();
const collectDefaultMetrics = client.collectDefaultMetrics;
collectDefaultMetrics();
const requestCounter = new client.Counter({
name: 'http_requests_total',
help: 'Total HTTP requests',
});
app.get('/', (req, res) => {
requestCounter.inc();
res.send('Hello, World!');
});
app.get('/metrics', (req, res) => {
res.set('Content-Type', client.register.contentType);
res.end(client.register.metrics());
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
Добавляем job в
prometheus.yml
scrape_configs:
- job_name: 'my_app'
static_configs:
- targets: ['app_host:8000']
Если клиент не может сам отдавать метрики (например, это краткоживущий job), можно использовать Pushgateway.
Запускаем Pushgateway:
docker run -d -p 9091:9091 prom/pushgateway
Отправляем метрики через
curl
echo "job_execution_time 5.3" | curl --data-binary @- http://localhost:9091/metrics/job/my_batch_job
Настраиваем Prometheus на сбор данных из Pushgateway
scrape_configs:
- job_name: 'pushgateway'
static_configs:
- targets: ['localhost:9091']
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
- В контейнере сохранить дамп в файл (например, SQL-дамп).
- Использовать команду docker cp:
Она копирует файл из контейнера на хост.
Можно также использовать docker exec и перенаправление вывода.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Когда GitLab CI/CD скачивает код (
git clone
), он начинает выполнять pipeline, состоящий из job'ов и stage'ов. Определяется
gitlab-ci.yml
Запускается раннер (GitLab Runner)
Определяются переменные окружения
Запускаются
before_script
, script
, after_script
Артефакты сохраняются и передаются между stage'ами
После скачивания кода GitLab ищет
.gitlab-ci.yml
в репозитории. stages:
- build
- test
- deploy
build:
stage: build
script:
- echo "Building project..."
GitLab CI/CD отправляет задачу в GitLab Runner, который выполняет команды. Runner может работать в Docker, Kubernetes, Shell, VM.
Running with gitlab-runner 15.0.0 (abcdef12)
Using Docker executor with image python:3.9 ...
Перед выполнением
script
, GitLab загружает переменные окружения. CI_COMMIT_REF_NAME=main
CI_PROJECT_NAME=my-repo
CI_PIPELINE_ID=12345
Можно использовать их в
script
script:
- echo "Branch: $CI_COMMIT_REF_NAME"
GitLab выполняет основные команды pipeline
before_script:
- echo "Preparing environment..."
script:
- echo "Running main job..."
- python build.py
after_script:
- echo "Cleaning up..."
Если один stage создает файлы, их можно передать в следующий stage через
artifacts
. build:
stage: build
script:
- echo "Compiling..." > build.log
artifacts:
paths:
- build.log
test:
stage: test
script:
- cat build.log
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Для этого применяются команды с опциями контекста, которые показывают несколько строк до и после совпадения. Это полезно для понимания причины и последствий ошибки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
SaaS (Software as a Service, "Программное обеспечение как услуга") – это модель, при которой пользователи получают доступ к программному обеспечению через интернет без необходимости установки на локальный компьютер.
нужно было скачивать и устанавливать программы на свой компьютер.
просто открываешь браузер и работаешь онлайн.
Пользователь заходит на сайт или приложение.
Вся логика и данные хранятся на серверах провайдера.
Обновления и обслуживание происходят автоматически.
Оплата обычно по подписке (ежемесячно/ежегодно).
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Это подход в Docker:
- Используются несколько FROM в одном Dockerfile.
- Сборка проходит в первом (build stage), финальный образ собирается из второго (final stage) — без лишнего мусора.
Плюсы:
- меньше размер образа;
- разделение логики сборки и выполнения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Ansible – мощный инструмент для автоматизации, но у него есть серьезные недостатки, особенно при масштабировании.
каждый раз Ansible подключается по SSH и выполняет задачи без предварительного кеширования
что замедляет процесс.
если целевой сервер слабый или без Python, выполнение плейбуков будет медленным.
по умолчанию Ansible выполняет задачи последовательно, что дольше, чем параллельные методы (например, в SaltStack).
yaml
- name: Установка Nginx
hosts: all
tasks:
- name: Установить Nginx
apt:
name: nginx
state: present
Запуск задач параллельно (
-f 50
) sh
ansible-playbook playbook.yml -f 50
Если 1000+ серверов, главный Ansible-узел может быстро перегрузиться.
Роли могут конфликтовать, если версии не совпадают. Ansible Galaxy не такой удобный, как Terraform Registry
Некоторые модули (особенно shell и command) не всегда понимают, применялась ли конфигурация раньше.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
GitOps — это подход, при котором инфраструктура и конфигурация приложений описываются декларативно в Git, а изменения автоматически применяются через CD-процессы. Все действия по управлению кластерами и сервисами происходят через Git, а не вручную. Это улучшает контроль версий, даёт аудит и упрощает откаты.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
В мире корпоративных (Enterprise) межсетевых экранов (firewall) существует множество решений от разных вендоров. Основные из них:
Palo Alto — один из лидеров в сфере NGFW. Он использует глубокий анализ трафика и машинное обучение для выявления угроз.
Контроль трафика на уровне приложений (App-ID)
Инспекция SSL/TLS
Встроенная защита от вредоносных программ (WildFire)
Интеграция с SIEM/SOAR
Cisco Firepower объединяет традиционные возможности Cisco ASA с функциями, полученными после покупки Sourcefire.
IPS/IDS (интеграция с Snort)
Защита от атак нулевого дня
Автоматизация защиты на базе машинного обучения
Полная интеграция с экосистемой Cisco
Fortinet — это NGFW, ориентированный на производительность и безопасность.
Встроенный SD-WAN
Антивирусный сканер и веб-фильтрация
DLP (Data Loss Prevention)
Поддержка IoT и OT-безопасности
Check Point — один из старейших игроков в сфере межсетевых экранов, известный своими решениями безопасности.
Инспекция шифрованного трафика
Защита от APT (Advanced Persistent Threats)
Встроенный Threat Intelligence (ThreatCloud)
- Многослойная защита от DoS/DDoS
Juniper предлагает мощные межсетевые экраны, которые часто используются в телекоммуникациях.
Высокая производительность
Поддержка виртуализации (vSRX)
Гибкая маршрутизация и VPN
Интеграция с AI для автоматического обнаружения угроз
Huawei предлагает сетевые экраны для корпоративного и государственного сектора.
Интеграция с 5G-сетями
Встроенные функции DDoS-защиты
Высокая масштабируемость
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Переход от Junior DevOps к Middle DevOps – это не просто накопление опыта в годах, а рост в глубине знаний, самостоятельности и умении решать сложные задачи.
- Создавать и оптимизировать Docker-образы.
- Понимать принципы
Dockerfile
, docker-compose
. - Работать с
Kubernetes
: деплой, сетевые политики, Helm-чарты. - Уметь описывать инфраструктуру как код (IaC).
- Писать модули Terraform.
- Использовать Ansible для автоматизации настройки серверов.
- Уметь строить сложные пайплайны (авто-тестирование, сборка, деплой).
- Оптимизировать сборку и доставку кода.
- Настроить алерты, дашборды.
- Анализировать логи и находить проблемы.
- Проектировать инфраструктуру с учетом отказоустойчивости и безопасности.
- Использовать сервисы типа
S3
, EC2
, Lambda
, VPC
, IAM
. - Глубокие знания Linux (
systemctl
, iptables
, networking
). - Написание скриптов для автоматизации (
Bash
, Python
). предлагайте улучшения в инфраструктуре.
любая рутинная работа должна быть заменена скриптом или IaC.
DevOps это не только сервера, но и помощь в доставке продукта.
сделайте свой pet-проект с CI/CD, Kubernetes и мониторингом.
DevOps-специалист должен быстро разбираться в новых технологиях.
даже если не ищете работу, это прокачивает вас.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
- Императивный подход к декларативной модели:
- Terraform сравнивает state и .tf.
- Если невозможно обновить — удаляет старый ресурс и создаёт новый.
- Это называется recreate.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
В Prometheus есть 4 типа метрик, которые используются для мониторинга и сбора данных.
Используется для подсчета событий, ошибок, запросов
Значение только увеличивается (нельзя уменьшить)
promql
http_requests_total
Как вывести количество запросов за последние 5 минут
promql
rate(http_requests_total[5m])
Пример экспозиции в приложении
go
httpRequests := prometheus.NewCounter(
prometheus.CounterOpts{
Name: "http_requests_total",
Help: "Total number of HTTP requests",
})
Используется для измерения текущего состояния (температура, RAM, CPU)
Значение может расти и уменьшаться
promql
node_memory_usage_bytes
Как вывести среднюю загрузку CPU за 5 минут
promql
avg(node_cpu_seconds_total)
Пример экспозиции в коде
go
cpuUsage := prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "cpu_usage_percentage",
Help: "Current CPU usage",
})
Используется для измерения длительности, размера запросов
Делит данные по диапазонам (buckets)
promql
http_request_duration_seconds_bucket
Как вычислить среднее время отклика
promql
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
Пример в коде
go
requestDuration := prometheus.NewHistogram(
prometheus.HistogramOpts{
Name: "http_request_duration_seconds",
Help: "Histogram of response time for HTTP requests",
Buckets: prometheus.DefBuckets,
})
Показывает среднее, медиану, квантильное распределение
Используется для измерения задержек, времени отклика
promql
http_request_duration_seconds{quantile="0.99"}
Пример в коде:
go
requestSummary := prometheus.NewSummary(
prometheus.SummaryOpts{
Name: "http_request_duration_seconds",
Help: "Summary of response time for HTTP requests",
Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
})
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
ICMP не использует порты, потому что это не протокол транспортного уровня, а сетевого уровня. Он работает наравне с IP, и применяется для сообщений об ошибках и диагностике (например, ping, traceroute).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизация Docker-имеджа (или другого контейнерного имеджа) необходима для уменьшения его размера, ускорения сборки, повышения безопасности и повышения производительности контейнеров.
Почему: Базовый образ сильно влияет на размер. Например,
alpine
занимает ~5 МБ, в то время как ubuntu
или debian
могут превышать сотни мегабайт.Как: Замените базовый образ:
FROM alpine:latest
Почему: Временные файлы, кэш или артефакты сборки занимают место.
Как: Добавьте команды для очистки временных данных:
RUN apt-get update && apt-get install -y curl \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
Почему: Стадия сборки может содержать инструменты, которые не нужны в финальном образе.
Как
# Стадия сборки
FROM golang:1.20 as builder
WORKDIR /app
COPY . .
RUN go build -o app .
# Финальный образ
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/app .
CMD ["./app"]
Почему: Каждый
RUN
, COPY
, ADD
создаёт новый слой. Слишком много слоёв увеличивают размер образа.Как: Объединяйте команды:
RUN apt-get update && apt-get install -y curl wget \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
Почему: Переменные окружения с паролями или токенами могут быть случайно унаследованы.
Как: Используйте Docker secrets или
.env
-файлы и исключайте их из COPY
ENV APP_ENV=production
Почему: Частое скачивание зависимостей замедляет сборку.
Как: Переносите команды загрузки зависимостей ближе к началу:
COPY go.mod go.sum ./
RUN go mod download
Почему: Устаревшие или ненужные зависимости увеличивают размер и могут содержать уязвимости.
Как: Используйте сканеры вроде Trivy или Docker Scan для анализа.
trivy image myimage:latest
# 1. Используем минимальный базовый образ
FROM node:20-alpine as builder
# 2. Устанавливаем зависимости
WORKDIR /app
COPY package*.json ./
RUN npm install
# 3. Копируем код
COPY . .
# 4. Собираем проект
RUN npm run build
# Финальный минимальный образ
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Инфраструктура как код (IaC) — подход, при котором:
- инфраструктура (сети, серверы, доступы) описывается декларативно в коде;
- позволяет повторяемо и версионируемо управлять средой;
- инструменты: Terraform, Ansible, Pulumi.
Это ускоряет развертывание, минимизирует ошибки и упрощает сопровождение.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
DevOps-инженер и SRE (Site Reliability Engineer) — это роли, которые пересекаются в своих задачах, но имеют разные акценты и подходы.
Основная цель: Ускорить и автоматизировать процесс разработки, тестирования и развертывания приложений.
Подход: Сосредоточен на создании и поддержке CI/CD, инфраструктуры как кода (IaC) и инструментах автоматизации.
Фокус: Эффективность процессов разработки. Улучшение взаимодействия между командами разработки (Dev) и эксплуатации (Ops).
Основная цель: Обеспечение стабильности, надежности и производительности системы в продакшене.
Подход: Применяет инженерные подходы и автоматизацию для управления операциями и масштабированием.
Фокус: Стабильность и надежность системы. Мониторинг, устранение сбоев и управление инцидентами.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM