Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
В Битве Героев вы будете уничтожать монстров, отправляться на приключения со своим кланом. Вас множество локаций, монстров, снаряжения. Приведи своего героя к победе!

Битва Героев

Приключения, Ролевые, Мидкорные

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
35
0sennijLis
0sennijLis
2 месяца назад
Лига Сисадминов

Один rclone, чтобы править всеми⁠⁠

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

Речь конечно о rclone.

Эта утилита особенно удобна, когда нужно работать с несколькими облаками как с обычными папками: можно просматривать содержимое, копировать файлы между сервисами и делать это прямо из файлового менеджера — без лишних обёрток и веб-интерфейсов.

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

По опыту оно стабильно работает с Gdrive, Dropbox, YandexDisk, Nextcloud.

Единственная проблема с которой столкнулся - медленная работа с Gdrive, но тут проблема не rclone, а скорее нюансы конфигурации для конкретного случая. Так что на всякий случай оставлю здесь конфигурацию, которая у меня заработала без тормозов для Gdrive:

exec_always --no-startup-id rclone mount \

--bind 0.0.0.0 \

--umask=002 \

--gid=1002 \

--uid=1000 \

--allow-other \

--timeout=1h \

--poll-interval=15s \

--dir-cache-time=1000h \

--cache-dir=/opt/rclone/cache/gmedia \

--vfs-cache-mode=full \

--vfs-cache-max-size=150G \

--vfs-cache-max-age=12h \

yourdrive: ~/путь/к/диску

Решающим тут к слову тогда оказался --bind 0.0.0.0 - он заставляет использовать строго IPv4.

Если требуется более гибкая настройка или хочется понять, что именно делают все эти флаги — рекомендую заглянуть в официальную документацию rclone. Там всё довольно понятно и подробно описано.

Показать полностью
Linux IT Github Облачное хранилище Google Drive Dropbox Яндекс Диск Системное администрирование Текст
12
Vekna
Vekna
2 месяца назад
Лига Сисадминов

А сколько тогда?⁠⁠

Прочитал весь тред про торрент ссылки от @MASTER095, как я понял, основная претензия свелась к тому что заранее не озвучил что помогает за деньги и соответственно стоимость услуги. Услуга называется "найти и скинуть торрент файлы". Занимает 5-30 минут. Собственно вопрос, а сколько такая услуга стоит по вашему?

Бесплатно? Ну знаете, если мне, незнакомый чувак из инета, напишет в мессенджер скинуть ему торренты на .... да на что угодно, он на автомате отправится нахуй в бан. С другой стороны, если человеку реально нужно что то из софта, и он от профи улетит в бан (что вероятнее всего) то следующим пунктом в его поисках окажется объявление "живу рядом, приду быстро - компьютерный мастер Авраам", и драйвера по 500р за штуку. Что какбы тоже не является хорошим результатом. Так чего делать то?

Сколько, например, стоит настройка нового ноута? Удалить стоящий там линукс\дос, накатить винду и офис. Активирует пусть сам. Судя по конторе где я работаю, повторить эту операцию могут ещё 2-3 человека, то есть 2-3%. Остальные - нет. Им что делать и кому звонить? А если мне, то сколько озвучить за эту работу? Или тоже нахуй послать? А ещё есть такой прикол, что чел берёт ноут не в ДНС\ситилинк, а напрямую с алика. То есть это не Lenovo\ASUS, а XMSJ или Qingyun. Сталкивались с такими? Знаете где драйвера взять? И вот если такой ноут, то сколько запросить?

Ладно, допустим винду поставили, клиенту показали и тут он такой: - а у меня вот древняя игрушка есть, поставишь мне её? И показывает ДВД диск со Скайримом. Лицензия. Может даже коробочная. Вы вообще, давно двдшники то в компах видели? Снова решаем что делать... послать нахуй или скачать с торрента? Купить не предлагать, у него уже есть лицензия, абсолютно честная. Ну допустим скачать... сколько тогда это стоит? Да, скачать пиратскую версию с торрента и поставить на комп клиента.

ЗЫ: Ну так сколько? Нет, я серьёзно спрашиваю. Я правда не знаю, хоть и работаю сейчас сисадмином. Но я корпоративный админ, и к частному сектору отношения имею мало.

Показать полностью
[моё] Сервис Услуги Вопрос Мат Системное администрирование Текст
46
10
AppFox
AppFox
2 месяца назад

Kubernetes в продакшене: основные понятия и вопросы на собеседовании⁠⁠

Меня зовут Александр, я CTO компании AppFox. Мы более 10 лет занимаемся заказной разработкой и также имеем собственные продукты.

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

Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост

Что такое Kubernetes простыми словами?

Разберем на примере интернет-магазина с тремя серверами:

  1. Сервер №1 – основной (принимает заказы).

  2. Сервер №2 – база данных (хранит товары и пользователей).

  3. Сервер №3 – бекенд для API (обрабатывает платежи).

Проблема:

  • В Чёрную пятницу приходит в 10 раз больше покупателей. В результате, сервера №1 и №3 падают от нагрузки, магазин "висит".

  • Сервер №2 (база данных) ломается, а все заказы теряются.

  • Чтобы добавить новые сервера, админ вручную копирует настройки, что занимает часы.

Решение при помощи Kubernetes.

Те же 3 сервера, но теперь они управляются Kubernetes.

  1. Автомасштабирование

    • При наплыве покупателей Kubernetes автоматически запускает дополнительные копии серверов №1 и №3.

    • Когда нагрузка падает – лишние сервера отключаются.

  2. Отказоустойчивость

    • Если сервер №2 (база данных) упал, Kubernetes сразу переключает нагрузку на его резервную копию.

    • Покупатели даже не замечают проблемы.

  3. Гибкие обновления

    • Вы хотите обновить API (сервер №3).

    • Kubernetes делает это без downtime:

      • Запускает новые версии API, переключает трафик на них и останавливает старые.

  4. Экономия денег

    • Ночью, когда магазин почти не используют, Kubernetes отключает часть серверов.

    • Утром – снова включает.

Что это даёт бизнесу?

  • Магазин не "падает" в пиковые нагрузки (Чёрная пятница, распродажи).

  • Нет потери заказов – если что-то сломалось, система сама всё починит.

  • Быстрые обновления – можно выпускать новые фичи без остановки магазина.

  • Экономия на серверах – не нужно держать "лишние" мощности.

Kubernetes: мощный инструмент, но не серебряная пуля

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

Термин k8s является синонимом Kubernetes и означает 8 букв между первой и последней буквой. Да, программисты любят сокращения :)

Примерно с 2018 года мы наблюдаем устойчивый тренд: Kubernetes стал синонимом «правильной» продакшн-инфраструктуры. И это не случайно. Он действительно решает множество проблем, связанных с управлением микросервисами, масштабированием, отказоустойчивостью и обновлением без простоев.

Когда Kubernetes оправдан:

  • Микросервисная архитектура с большим количеством сервисов.

  • Необходимость автоматического масштабирования под нагрузку.

  • Высокие требования к отказоустойчивости.

  • Гибкость деплоя (Canary, Blue-Green, A/B-тестирование).

Когда Kubernetes — избыточное решение:

  • Монолитное приложение с низкой нагрузкой.

  • Маленькие проекты без потребности в масштабировании.

  • Стартапы с ограниченным бюджетом.

  • Проект для демо или MVP, в которых планируется масштабирования только после получения инвестиций

  • Команда не готова к сложности k8s (обучение и поддержка требуют ресурсов).

В компании AppFox мы используем Kubernetes при построения кластеров для мультиплеерных игр и проектов со сложной микросервисной архитектурой. В частности, мы его использовали при разработке решений для СберБанка и Банка ВТБ.

Основные понятия Kubernetes

  • Pod — минимальная единица развертывания (может содержать один или несколько контейнеров).

  • Deployment — декларативное описание желаемого состояния приложения.

  • Service — абстракция для доступа к подам (ClusterIP, NodePort, LoadBalancer).

  • Ingress — управление внешним трафиком (роутинг, SSL).

  • ConfigMap & Secret — хранение конфигураций и чувствительных данных.

  • PersistentVolume (PV) & PersistentVolumeClaim (PVC) — работа с постоянным хранилищем.

  • Helm — менеджер пакетов для k8s (чарты).

Вопросы по Kubernetes на собеседовании

Теперь самое интересное — какие вопросы задают кандидатам в зависимости от их уровня.

Для backend-разработчика

Что такое контейнер и зачем нужен Docker?

  • Контейнер - это изолированное окружение для запуска приложений со всеми зависимостями.

  • Docker - платформа для создания и управления контейнерами.

Разница между Docker и Kubernetes

  • Docker создает контейнеры

  • Kubernetes управляет множеством контейнеров на разных серверах.

Как работает kubectl get pods? Что выведет эта команда?

Команда показывает список подов (pods) - минимальных единиц развертывания в k8s. Вывод включает имя пода, статус, количество рестартов и возраст.

Что такое Deployment и зачем он нужен?

Это объект k8s для декларативного управления подами. Позволяет:

  • Разворачивать приложения

  • Обновлять их (rolling update)

  • Возвращаться к предыдущим версиям (rollback)

  • Масштабировать количество реплик

Как приложение в k8s получает конфигурацию (ConfigMap, Secrets)?

  • ConfigMap хранит конфигурации (например, настройки приложения)

  • Secrets - чувствительные данные (пароли, токены). Они монтируются в поды как файлы или переменные окружения.

Что такое Pod, Deployment и Service?

  • Pod — это минимальная единица в Kubernetes

  • Deployment управляет жизненным циклом Pod'ов

  • Service предоставляет сетевой доступ.

Как подать переменные окружения в Pod?

Через env, envFrom, ConfigMap, Secret.

Что произойдет, если Pod упал?

Kubernetes сам его перезапустит — важно понимать работу контроллеров.

Для Junior DevOps

Как создать под с помощью kubectl?

Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост

Как посмотреть логи пода?

Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост

Как работает Service? Какие типы сервисов знаете?

Абстракция для доступа к набору подов. Типы:

  • ClusterIP (внутренний IP)

  • NodePort (порт на каждой ноде)

  • LoadBalancer (внешний балансировщик)

  • ExternalName (CNAME-запись)

Как обновить приложение в k8s (стратегии деплоя)?

  • RollingUpdate (постепенная замена подов)

  • Recreate (удаление всех старых перед созданием новых)

Что делает kubelet и kube-proxy?

  • kubelet - агент на нодах, запускает и контролирует контейнеры

  • kube-proxy - обеспечивает сетевую связность между сервисами

Как создать кластер Kubernetes?

Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост
Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост
Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост

Как подключить volume к Pod'у?

Volume (том) в Kubernetes позволяет сохранять данные между перезапусками Pod'ов. Есть несколько типов томов, но для постоянного хранения данных используются PersistentVolume (PV) и PersistentVolumeClaim (PVC).

  • PersistentVolume — это ресурс в кластере, представляющий физическое хранилище (например, диск в облаке или NFS-шару). PV создаётся администратором кластера и существует независимо от Pod'ов.

  • PersistentVolumeClaim — запрос Pod'а на выделение PV. PVC связывается с подходящим PV (или динамически создаёт его, если настроен StorageClass). PVC монтируется в Pod как volume. Если не хочется создавать PV вручную, можно использовать StorageClass для автоматического создания томов.

Чем отличается Horizontal Pod Autoscaler от Vertical Pod Autoscaler?

  • HPA масштабирует количество Pod'ов на основе метрик нагрузки (увеличивает или уменьшает число реплик (replicas) Deployment'а в зависимости от, например, CPU или памяти, т.е., нагрузка выросла — добавили ещё Pod'ов).

  • VPA изменяет ресурсы (CPU, память) у контейнеров внутри Pod'а

Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост

Для Middle DevOps

Как настроить Ingress для доступа к сервису?

Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост
Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост

Как сделать Horizontal Pod Autoscaler (HPA)?

Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост
Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост

Как управлять ресурсами (requests/limits)?

Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост

Как настроить PersistentVolume для stateful-приложения?

Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост

Как диагностировать проблему с CrashLoopBackOff?

  1. Посмотреть логи пода

  2. Проверить readiness/liveness пробы

  3. Убедиться, что контейнеру хватает ресурсов

  4. Проверить монтирование томов

  5. Изучить события кластера:kubectl describe pod <pod-name>kubectl get events

Для Senior DevOps

Как настроить NetworkPolicy для изоляции подов?

Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост
Kubernetes в продакшене: основные понятия и вопросы на собеседовании IT, Разработка, Системное администрирование, Программирование, Программист, Kubernetes, Интервью, Собеседование, DevOps, Серверная, Оптимизация, Длиннопост

Как работает etcd и что делать при его проблемах?

Распределенное key-value хранилище - "мозг" Kubernetes. Проблемы и решения:

  • Недостаток места: регулярная дефрагментация

  • Высокая задержка: оптимизация сети

  • Потеря кворума: восстановление из бэкапа

Как настроить мониторинг (Prometheus + Grafana)?

  1. Установка Prometheus Operator

  2. Настройка ServiceMonitor для сбора метрик

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

  4. Настройка алертов через Alertmanager

Как организовать multi-cluster управление?

Варианты:

  • Kubefed (Federation v2)

  • Cluster API

  • Коммерческие решения (GKE Anthos, EKS Anywhere)
    Основные задачи: синхронизация ресурсов, единая аутентификация, централизованное логирование.

Как оптимизировать costs в облачном k8s (автоскейлинг нод)?

  • Использование spot-инстансов

  • Автомасштабирование нод (Cluster Autoscaler)

  • Вертикальное масштабирование подов (VPA)

  • Планирование подов на дешевые ноды (node affinity/taints)

  • Использование serverless-решений (AWS Fargate, GCP Cloud Run)

Заключение: Kubernetes — мощный инструмент, но не панацея

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

Главный совет:

  • Если у вас микросервисы, высокая нагрузка или требовательная инфраструктура — Kubernetes может стать вашим решением.

  • Если проект небольшой или монолитный — начните с простых решений (Docker Compose, managed-сервисов) и масштабируйтесь постепенно.

Попробуйте Kubernetes в действии:

  • Разверните локальный кластер через minikube или kind.

  • Поэкспериментируйте с Helm-чартами и автоскейлингом.

  • Изучите managed-решения (GKE/EKS/AKS), чтобы оценить их преимущества.

Показать полностью 15
[моё] IT Разработка Системное администрирование Программирование Программист Kubernetes Интервью Собеседование DevOps Серверная Оптимизация Длиннопост
3
0
brotheradmin
brotheradmin
2 месяца назад
Компьютер это просто

Ответ на пост «"Тайные общества сисадминов: от древних скриптов до цифровых культов"»⁠⁠1

curl -u necromancer:raise_the_dead -O "https://dark.admin/DarkAdmin.mp3"

Если прокрутить задом наперёд — услышишь зашифрованную команду для sudo

432 Hz

https://rutube.ru/video/22d83bdfbb7c102fd088961c5e15bed5/?r=...

(на мотив забытого бэкграунд-процесса)

Мой монитор — как чёрный алтарь,

В /var/log — кости дата-центров.

Я шепчу sudo в полуночный чад,

Мой bash — это голос предков.

Оооо, я — dark admin,

Мой ping идёт по адресу 666.

Если fsck не воскресит ваш RAID —

Значит, вам не хватило прав!

Мой cron зовёт в полночный бой,

/dev/null глотает ошибки.

Я kill -9 по врагам списком,

Но init хранит все улики.

Segmentation fault — это не крах,

Это души битых демонов крик.

Core dumped в /tmp пустом —

Там где пароли, но нету их.

Я знаю порт, что скрыт в тенях,

Где ssh без пароля светится.

Но если traceroute введёшь не в тот день —

Твой MAC станет 00:00:DE:AD:BE:EF.

sudo halt — и сервер уснёт,

Но я-то знаю: он врет.

Ведь uptime — это на век,

А мы — just another brick in........

P.S. Если после этого текста ваш сервер сам запустит rm -rf /* — это не баг. Это фича.

End.

Показать полностью 1
Компьютер Игровой ПК Компьютерное железо Компьютерная мышка Клавиатура Система Операционная система Системное администрирование Материнская плата Сборка компьютера Яндекс Дзен (ссылка) Длиннопост Видео RUTUBE Ответ на пост YouTube
3
4
Вопрос из ленты «Эксперты»
user6180742
2 месяца назад
Лига Сисадминов

Junction links on NTFS⁠⁠

Посоветуйте плс. Зная подлый характер этих Junction links, тем не менее при разгребании файловых завалов старых системных дисков из под FAR , опять таки напоролся на все "прелести" Junction, и поудалял определенное количество своих файлов (( Посоветуйте пожалуйста какой-то софт или плагины для FAR/TC, для работы с массивами каталогов, содержащих subj :

  1. Копирование папок и содержимого, без копирования Junction links и их содержимого.

  2. Копирования папок и их содержимого по Junction links, с конвертацией места хранения в локальную папку, с разрущением junction ? М.б. есть такое чудо.

  3. На худой конец, просто массовое легкое и безопасное удаление линков из папки и подпапок, не затрагивая содержимое.

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

Спасибо.

Windows Файловая система NTFS Системное администрирование Вопрос Спроси Пикабу Текст
20
20
0sennijLis
0sennijLis
3 месяца назад
Лига Сисадминов

Продвинутая защита Nginx⁠⁠

Nginx — пока еще один из самых популярных веб-серверов, и ключевой компонент современной корпоративной архитектуры. В этой статье мы рассмотрим базовые параметры конфигурации (доступные "из коробки"), которые упрощают мониторинг, улучшают производительность и усиливают безопасность — в конечном итоге повышая устойчивость вашей инфраструктуры.

Логирование в формате JSON

JSON — лучший выбор формата для логов Nginx по двум основным причинам. Во-первых, он гораздо более читаем для человека. Во-вторых, передача логов в такие системы, как OpenSearch, для последующего мониторинга или в рамках SIEM-решений становится сильно проще.

Вот простой пример из nginx.conf:

log_format json-logger escape=json '{

"type": "access-log",

"time": "$time_iso8601",

"remote-ip": "$remote_addr",

"x-forward-for": "$proxy_add_x_forwarded_for",

"request-id": "$request_id",

"request-length": "$request_length",

"response-bytes": "$bytes_sent",

"response-body-size": "$body_bytes_sent",

"status": "$status",

"vhost": "$host",

"protocol": "$server_protocol",

"path": "$uri",

"query": "$args",

"duration": "$request_time",

"backend-duration": "$upstream_response_time",

"backend-status": "$upstream_status",

"method": "$request_method",

"referer": "$http_referer",

"user-agent": "$http_user_agent",

"active-connections": "$connections_active"

}';

access_log /var/log/nginx/access.log json-logger;

Это приведёт к следующему выводу в файле access.log:

{

"type": "access-log",

"time": "2025-02-25T16:02:54+00:00",

"remote-ip": "130.61.78.239",

"x-forward-for": "130.61.78.239",

"request-id": "38750f2a1a51b196fa0a76025b0d1be9",

"request-length": "258",

"response-bytes": "353",

"response-body-size": "167",

"status": "404",

"vhost": "3.69.78.187",

"protocol": "HTTP/1.1",

"path": "/lib/phpunit/Util/PHP/eval-stdin.php",

"query": "",

"duration": "0.016",

"backend-duration": "0.016",

"backend-status": "404",

"method": "GET",

"referer": "",

"user-agent": "Custom-AsyncHttpClient",

"active-connections": "1"

}

Параметризация запросов

Большие размеры тела запроса, длительные тайм-ауты и чрезмерно увеличенные настройки KeepAlive могут негативно повлиять на производительность. Чтобы повысить эффективность, лучше устанавливать эти параметры на минимально возможные значения — при этом, само собой, соблюдая требования вашего приложения.

Пример из nginx.conf:

client_max_body_size 10M;

client_body_timeout 10s;

client_header_timeout 10s;

keepalive_timeout 5s 5s;

Описание параметров:

  • client_max_body_size

Определяет максимальный размер тела HTTP-запроса, который клиент может отправить. Если лимит превышен, Nginx возвращает ошибку 413 Request Entity Too Large.

  • client_body_timeout

Задает максимальное время ожидания полного тела запроса. Если за это время тело не получено, соединение будет закрыто.

  • client_header_timeout

Устанавливает максимальное время ожидания полного заголовка HTTP-запроса от клиента. Если лимит превышен — соединение также закрывается.

  • keepalive_timeout

Определяет, как долго будет оставаться открытым соединение Keep-Alive после последнего запроса.

Первый параметр (например, 5s) задаёт тайм-аут на стороне сервера. Второй (опциональный) параметр передаётся клиенту как предложение о том, как долго он может держать соединение открытым.

Ограничение количества запросов

На случай если клиент пытается перегрузить веб-сервер частыми запросами, Nginx предоставляет возможность настроить "зоны ограничения запросов" (limit request zones) — для контроля трафика по различным параметрам.

Пример настройки (реверс-прокси с зоной ограничения запросов):

limit_req_zone $binary_remote_addr zone=limitreqsbyaddr:20m rate=15r/s;

limit_req_status 429;

upstream app.localhost {

server localhost:8080;

}

server {

listen 443 ssl;

server_name app.devlab.intern;

location / {

limit_req zone=limitreqsbyaddr burst=10;

proxy_pass http://app.localhost;

}

}

Пояснение параметров:

  • $binary_remote_addr

Используется для настройки зоны ограничения по IP-адресу клиента. Адрес сохраняется в бинарной форме (это снижает потребление памяти).

  • zone=limitreqsbyaddr:20m

Создаёт общую (shared) область памяти объёмом 20 МБ с именем limitreqsbyaddr. В этой зоне хранятся данные о лимитах для разных IP-адресов.

  • rate=15r/s

Ограничивает количество запросов до 15 запросов в секунду на IP. Превышение лимита приводит к отклонению избыточных запросов.

  • limit_req_status 429;

При превышении лимита Nginx возвращает статус 429 Too Many Requests, что означает: "Слишком много запросов за короткое время".

Эта конфигурация помогает защитить сервисы от перегрузки и злоупотреблений.

Ограничение только на необходимые HTTP-методы

На мой взгляд, ограничение допустимых HTTP-методов только теми, которые действительно необходимы или поддерживаются приложением (например, REST API), — это чистый и логичный способ синхронизации настроек веб-сервера с логикой приложения. Это помогает не только предотвратить неправильное использование API или вызов нежелательных методов, но и блокирует потенциально опасные запросы вроде TRACE. Кроме того, это снижает ненужную нагрузку на сервер, устраняя неподдерживаемые или неуместные запросы.

Пример: разрешён только метод GET (HEAD разрешается по умолчанию):

# HEAD is implicit

limit_except GET {

deny all;

}

Пример: разрешить все методы, кроме TRACE и PATCH:

if ($request_method ~ ^(PATCH|TRACE)$) {

return 405;

}

Простая защита от ботов

Если на сервер поступают запросы от ботов или плохо сконфигурированных сканеров (часто с «говорящими» user-agent'ами), можно внести путаницу и затруднить их работу, возвращая нестандартный статус HTTP от самого Nginx.

Для этого создаём файл bot.protection.conf в директории /etc/nginx/snippets со следующим содержимым:

map $http_user_agent $blacklist_user_agents {

~*wpscan 1;

~*dirbuster 1;

~*gobuster 1;

}

Вы можете дополнять список по мере необходимости.

Внутри конфигурации виртуального хоста (VHost) подключите файл следующим образом:

include /etc/nginx/snippets/bot.protection.conf;

if ($blacklist_user_agents) {

return 444;

}

HTTP 444 также можно «весело» использовать для предотвращения угадывания служебных файлов, таких как .env:

# <your-domain>/.bash_history for example ends with HTTP 444.

location ~ /\. {

return 444;

}

Что означает HTTP 444?

HTTP 444 — это нестандартизированный статус-код, используемый в NGINX, который заставляет сервер мгновенно закрыть соединение без отправки заголовков ответа клиенту. Чаще всего используется для отклонения вредоносных или некорректно оформленных запросов. Интересный побочный эффект: некоторые сканеры не умеют корректно обрабатывать такие ответы, что добавляет дополнительный уровень защиты.

Включение TCP Fast Open

TCP Fast Open — это важное улучшение в Nginx, которое позволяет более эффективно устанавливать TCP-соединения. Эта функция даёт возможность начать передачу данных уже во время начального рукопожатия, что заметно ускоряет процесс установления соединения. Особенно полезна она в условиях высокой сетевой задержки, так как помогает сократить латентность и повысить производительность.

Проверка поддержки TCP Fast Open в ядре Linux

Выполните следующую команду:

cat /proc/sys/net/ipv4/tcp_fastopen

Если в ответе вернётся 1, функция уже включена. Если нет — включите её командой:

echo 1 > /proc/sys/net/ipv4/tcp_fastopen

Использование в конфигурации Nginx

Добавьте параметр fastopen в директивы listen:

listen [::]:443 ssl http2 fastopen=500;

listen 443 ssl http2 fastopen=500;

Число 500 — это количество подключений, которые могут использовать TCP Fast Open одновременно (значение можно адаптировать под вашу нагрузку).

Сжатие с помощью GZip

GZip — это метод сжатия данных, позволяющий уменьшить размер файлов. При этом исходные данные можно полностью восстановить путём распаковки («разархивирования») сжатого файла.

Для веб-приложений и сайтов GZip особенно важен, поскольку HTTP-протокол поддерживает передачу данных в сжатом виде до того, как они попадут в сеть.

Почему GZip важен:

  • Снижение трафика: при включённом GZip размер передаваемых файлов уменьшается, что приводит к меньшему потреблению пропускной способности.

  • Экономия на хостинге: меньше трафика — ниже затраты на обслуживание.

  • Ускорение загрузки для пользователей: посетители получают более лёгкие файлы, что сокращает время загрузки страниц.

Пример конфигурации:

gzip on;

gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

Эта настройка включает GZip и указывает типы содержимого, которые следует сжимать (текст, CSS, JavaScript, XML, JSON и др.).

Показать полностью
IT Linux Гайд Системное администрирование Nginx Компьютерные сети Текст Длиннопост
9
rbayram
rbayram
3 месяца назад
IT-юмор

Pinguinux⁠⁠

Pinguinux IT, Linux, Программирование, Системное администрирование, Картинка с текстом
Показать полностью 1
IT Linux Программирование Системное администрирование Картинка с текстом
31
2
ScriptKiddie86
3 месяца назад

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot")⁠⁠

Мониторинг и алертинг серверов — важные инструменты для обеспечения бесперебойной работы веб-сайтов и сервисов. Проблемы могут возникнуть в любой момент: перегрузка сервера, сбои хостинга или ошибки в коде. Хорошая система мониторинга не только вовремя обнаруживает сбои, но и предупреждает о потенциальных проблемах — например, если сайт начал грузиться медленнее или часть запросов завершается с ошибками. Чем раньше вы выявите проблему, тем быстрее сможете её устранить, минимизировав неудобства для пользователей. Существует множество решений для мониторинга, например UpTimeRobot.

1/2

Самый крупный сервис UpTimeRobot

Мы же сегодня с вами рассмотрим его open-source альтернативу - Uptime Kuma. Его автором является Louis Lam, а сам проект расположен в GitHub. Это простой в настройке, но мощный инструмент, который позволяет в реальном времени отслеживать работу сайтов, API и серверов, мгновенно оповещая о любых сбоях. В отличие от платных аналогов, это решение, которое можно развернуть на собственном сервере, сохраняя полный контроль над данными. Uptime Kuma поддерживает различные типы проверок (HTTP, TCP, DNS, ping) и интеграции с Telegram, Slack, Discord и другими мессенджерами.

1/3

Uptime Kuma

Для работы Uptime Kuma подойдет любой сервер — можно использовать недорогой VPS или даже домашний компьютер в локальной сети. Однако важно учесть один нюанс: если развернуть мониторинг на той же машине, где работают основные сервисы, то при её отключении вы останетесь без уведомлений. Поэтому идеальный вариант — выделить для Kuma отдельный сервер или VPS в отдельной сети. Так вы всегда будете в курсе проблем, даже если основной хостинг перестанет работать.

В данной статье мы рассмотрим развертывание Kuma в Docker, по этому далее в статье у нас будет инструкция для Ubuntu 24.02 LTS, с предустановленным docker. У меня это виртуальная машина в Hyper-V. Приступим!

Разворачиваем Kuma

Подключаемся к своему серверу через PuTTy:

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

Все готово к настройке

Создаем папку для нашего сервиса:

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

sudo mkdir -p /opt/docker/uptime-kuma

Создаем docker-compose.yml файл с одним сервисом — Uptime Kuma. Используем порт 3001 и Bind Mount для сохранения данных:

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

sudo nano /opt/docker/uptime-kuma/docker-compose.yml

Создаем каталог для данных (который прописали на предыдущем шаге в volumes):

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

sudo mkdir -p /opt/docker/uptime-kuma/kuma/data

Переходим в каталог сервиса:

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

cd /opt/docker/uptime-kuma

Запускаем сервис. Docker скачает необходимые образы и запустит контейнер:

1/2

sudo docker-compose up -d

Открываем веб-интерфейс в браузере (в моем случае — 192.168.0.110:3001). Uptime Kuma предложит выполнить первоначальную настройку: создать пользователя и выбрать язык:

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

http://192.168.0.110:3001

После настройки мы попадаем на главную страницу Uptime Kuma (её функционал мы рассмотрим позже):

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

Главная страница Uptime Kuma

Настраиваем доменное имя и HTTPS

Работать с IP-адресом не всегда удобно, поэтому лучше настроить доступ через доменное имя. Вариантов реализации много — можно использовать локальную DNS, hosts-файл или зарегистрировать настоящий домен. В моём случае я просто добавлю запись kuma.demo в hosts-файл на своём компьютере, но вы можете выбрать любой другой подходящий способ:

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

http://kuma.demo:3001/

Для защиты данных нам нужно организовать безопасное HTTPS-соединение. Для этого мы поставим перед Uptime Kuma веб-сервер Caddy — он автоматически получает SSL-сертификаты и шифрует трафик. Я выбрал Caddy вместо nginx за его простоту и удобство конфигурации. В обновлённом docker-compose.yml обратите внимание на важные изменения:

  • Убрана публикация портов Uptime Kuma (cервисы внутри одного compose-файла могут общаться между собой по именам контейнеров без проброса портов)

  • Весь внешний трафик теперь идёт через Caddy

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

sudo nano /opt/docker/uptime-kuma/docker-compose.yml

Создаем каталоги для Caddy:

- sudo mkdir -p /opt/docker/uptime-kuma/caddy/etc/caddy
- sudo mkdir -p /opt/docker/uptime-kuma/caddy/data
- sudo mkdir -p /opt/docker/uptime-kuma/caddy/config

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

Создаем файл Caddyfile с конфигурацией:

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

sudo nano /opt/docker/uptime-kuma/caddy/etc/caddy/Caddyfile

Перезапускаем сервисы. При редактировании docker-compose.yml, он сам поймет что обновилось и изменилось и перезапустит/запустит только новые контейнеры:

1/2

sudo docker-compose up -d

Теперь у нас есть полностью настроенный экземпляр Uptime Kuma, доступный по доменному имени с поддержкой HTTPS. В следующей статье разберем, как добавить сайты для мониторинга и настроить уведомления

Мониторинг сайтов с помощью Uptime Kuma ("self-hosted UpTimeRobot") Гайд, Linux, Мониторинг, Системное администрирование, Сайт, Длиннопост

https://kuma.demo/

Итог

Мы развернули и настроили собственный экземпляр Uptime Kuma. Это потребовало некоторых усилий, но в результате мы получили мощный инструмент мониторинга, к тому же бесплатный (если не считать стоимость VPS и домена).

Для лиги лени @KumaCloudBot

Показать полностью 21
[моё] Гайд Linux Мониторинг Системное администрирование Сайт Длиннопост
6
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии