🖇 Ловим ошибки в логах по мере их появления
Когда на сервере что-то ломается, первое, что хочется сделать — открыть лог и посмотреть, что произошло. Но обычное чтение лога — это история. Нужно видеть ошибки в момент их возникновения.
Как ловить ошибки:
Вместе это работает так: лог добавляет новую строку — tail видит её — grep проверяет, нужна ли нам — если да, показывает на экран.
🤌 Бонусы для подписчиков:
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
🐸 Библиотека devops'a
#root@prompt
Когда на сервере что-то ломается, первое, что хочется сделать — открыть лог и посмотреть, что произошло. Но обычное чтение лога — это история. Нужно видеть ошибки в момент их возникновения.
Как ловить ошибки:
tail -f /var/log/syslog | grep --line-buffered "error"
tail -f — это как живая лента. Она подключается к логу и показывает новые строки по мере их добавления. Не закрывается, не переходит в историю.grep --line-buffered "error" — выбирает из этого потока только строки, в которых есть слово error. Флаг --line-buffered важен: он говорит grep не накапливать вывод, а показывать каждую найденную строку сразу.Вместе это работает так: лог добавляет новую строку — tail видит её — grep проверяет, нужна ли нам — если да, показывает на экран.
🤌 Бонусы для подписчиков:
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Представьте: у вас 50 серверов и новый разработчик в компании. Чтобы он мог подключиться ко всем серверам, нужно на каждый сервер залезть и добавить его публичный ключ в файл authorized_keys. Минут 20 монотонной работы.
Вот для этого и нужна автоматизация. Вместо ручного добавления ключей на каждый сервер, вы один раз пишете инструкцию — и она раскатывается везде одновременно.
Будем использовать Ansible. Вы описываете, что нужно сделать, и Ansible делает это на всех серверах сразу:
- name: Deploy SSH keys
hosts: all
become: yes
tasks:
- name: Add authorized key for user
authorized_key:
user: devops
key: "{{ lookup('file', 'devops.pub') }}"
state: present
Разберём по строкам:
hosts: all — команда выполнится на всех серверах, которые указаны в вашем инвентаре.become: yes — нужны права администратора для добавления ключей. Ansible подключится с правами root или через sudo.authorized_key — это модуль Ansible для работы с SSH-ключами. Он знает, где находится файл authorized_keys, как его редактировать, и не сломает формат.user: devops — добавляем ключ именно для пользователя devops.key: "{{ lookup('file', 'devops.pub') }}" — берём содержимое файла devops.pub (публичный ключ) и добавляем его. Переменная в двойных скобках — это синтаксис Ansible, он подставит содержимое файла.state: present — значит, ключ должен быть в файле. Если его там нет, добавит. Если есть, оставит как есть.Когда сотрудник уйдёт:
- name: Remove authorized key
authorized_key:
user: devops
key: "{{ lookup('file', 'devops.pub') }}"
state: absent
🤌 Бонусы для подписчиков:
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 Автоматически перезапускаем упавший сервис
Сервис упал ночью, никто не заметил, а клиенты уже час не могут подключиться. Или упал в выходной, когда все спят. Вручную проверять сервисы каждый день — это неправильно. Нужно, чтобы система сама заметила, что что-то не так, и исправила.
Вот эта команда делает ровно это: проверяет, работает ли критичный сервис, и если нет — перезапускает его
Это одна логическая цепочка. Давайте разберёмся:
Как использовать
Самый простой способ — добавить эту команду в cron, чтобы она проверяла сервис каждую минуту:
Если используете systemd, есть более продвинутый способ — встроенный Restart в конфиге сервиса:
🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#root@prompt
Сервис упал ночью, никто не заметил, а клиенты уже час не могут подключиться. Или упал в выходной, когда все спят. Вручную проверять сервисы каждый день — это неправильно. Нужно, чтобы система сама заметила, что что-то не так, и исправила.
Вот эта команда делает ровно это: проверяет, работает ли критичный сервис, и если нет — перезапускает его
systemctl is-active --quiet nginx || systemctl restart nginx
Это одна логическая цепочка. Давайте разберёмся:
systemctl is-active --quiet nginx — проверяет, работает ли сервис nginx прямо сейчас. Флаг --quiet говорит не выводить никакую информацию на экран, просто вернуть результат: работает или не работает.systemctl restart nginx — перезапускает сервис nginx. Остановит текущий процесс и запустит заново.Как использовать
Самый простой способ — добавить эту команду в cron, чтобы она проверяла сервис каждую минуту:
* * * * * /usr/bin/systemctl is-active --quiet nginx || /usr/bin/systemctl restart nginx
Если используете systemd, есть более продвинутый способ — встроенный Restart в конфиге сервиса:
[Unit]
Description=Nginx Web Server
[Service]
Type=notify
Restart=on-failure
RestartSec=5s
ExecStart=/usr/sbin/nginx
[Install]
WantedBy=multi-user.target
🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👾2
🐳 Ставим Docker одинаково на все сервера
Когда вы разворачиваете Docker на пяти серверах вручную, на каждом может получиться по-своему. На одном установилась одна версия, на другом — другая. На третьем забыли добавить репозиторий. На четвёртом пропустили зависимость.
Вот для этого и нужна автоматизация. Вы один раз описываете правильную установку Docker — и она раскатывается идентично на все серверы.
Используется всё тот же Ansible. Он подключается к каждому серверу и выполняет одни и те же команды по порядку:
Разберём:
После установки проверьте, что Docker работает:
Или добавьте проверку в конец плейбука:
🔹 Программирование на языке Python
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#root@prompt
Когда вы разворачиваете Docker на пяти серверах вручную, на каждом может получиться по-своему. На одном установилась одна версия, на другом — другая. На третьем забыли добавить репозиторий. На четвёртом пропустили зависимость.
Вот для этого и нужна автоматизация. Вы один раз описываете правильную установку Docker — и она раскатывается идентично на все серверы.
Используется всё тот же Ansible. Он подключается к каждому серверу и выполняет одни и те же команды по порядку:
- name: Install Docker
hosts: all
become: yes
tasks:
- name: Install required packages
apt:
name: "{{ item }}"
state: present
loop:
- apt-transport-https
- ca-certificates
- curl
- name: Install Docker
shell: curl -fsSL https://get.docker.com | bash
Разберём:
hosts: all — плейбук запустится на всех серверах из вашего инвентаря.become: yes — нужны права администратора для установки пакетов.apt: — модуль Ansible для управления пакетами в Debian/Ubuntu. Он знает, как работать с apt-get, и сделает это правильно.loop: — устанавливает пакеты по одному: apt-transport-https, ca-certificates, curl. Они нужны, чтобы безопасно загрузить Docker.shell: curl -fsSL https://get.docker.com | bash — официальный скрипт установки Docker от разработчиков. Он сделает все остальное: добавит репозиторий, установит Docker Engine, настроит сервис.state: present — пакет должен быть установлен. Если его нет, установит. Если есть, проверит версию и обновит при необходимости.После установки проверьте, что Docker работает:
- name: Verify Docker installation
shell: docker run hello-world
register: docker_test
failed_when: "'Hello from Docker!' not in docker_test.stdout"
Или добавьте проверку в конец плейбука:
- name: Check Docker status
systemd:
name: docker
state: started
enabled: yes
🔹 Программирование на языке Python
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🌚1
Linux 6.18 — новый релиз ядра от Линуса Торвальдса. Несмотря на активное исправление багов в последние дни перед выпуском, разработчик считает, что ядро готово к использованию и не требует дополнительного времени на доработку.
Большинство исправлений касается драйверов, а также Bluetooth, Ceph и AFS.
🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏2
🖥 Смотрим загрузку CPU в реальном времени
Сервер тормозит, но вы не знаете, почему. Может, какой-то процесс сходит с ума и съедает все ресурсы? Или это просто пики нагрузки? Нужно быстро посмотреть, что происходит с процессором прямо сейчас.
Вот для этого и нужна команда, которая покажет текущую загрузку CPU:
Если нужна более глубокая диагностика, есть другие команды:
Смотрим среднюю загрузку за 1, 5 и 15 минут:
Три числа в конце — это средняя нагрузка за последние 1, 5 и 15 минут.
Смотрим загрузку каждого ядра отдельно:
Смотрим, какой процесс больше всего грузит CPU:
Или используйте специализированные инструменты мониторинга вроде Prometheus или Grafana — они будут отслеживать метрики автоматически и хранить историю.
🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#root@prompt
Сервер тормозит, но вы не знаете, почему. Может, какой-то процесс сходит с ума и съедает все ресурсы? Или это просто пики нагрузки? Нужно быстро посмотреть, что происходит с процессором прямо сейчас.
Вот для этого и нужна команда, которая покажет текущую загрузку CPU:
top -b -n 1 | grep "Cpu(s)"
top — это команда, которая показывает, чем занимается система. Она выводит процессы, их загрузку, использование памяти, всё подряд.-b — batch mode. Вместо интерактивного режима top просто выдаёт результат и завершается.-n 1 — одна итерация. Без этого top обновлял бы данные каждую секунду.grep "Cpu(s)" — выбирает из всего вывода только строку с информацией о CPU.Если нужна более глубокая диагностика, есть другие команды:
Смотрим среднюю загрузку за 1, 5 и 15 минут:
uptime //14:35:22 up 10 days, 2:45, 1 user, load average: 0.45, 0.52, 0.48
Три числа в конце — это средняя нагрузка за последние 1, 5 и 15 минут.
Смотрим загрузку каждого ядра отдельно:
mpstat -P ALL 1 1
Смотрим, какой процесс больше всего грузит CPU:
ps aux --sort=-%cpu | head -10
Или используйте специализированные инструменты мониторинга вроде Prometheus или Grafana — они будут отслеживать метрики автоматически и хранить историю.
🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👏5
Когда вы разворачиваете Kubernetes кластер вручную, нужно на каждый узел установить куча компонентов: kubeadm, kubelet, kubectl, добавить репозитории, настроить сеть, включить необходимые модули ядра.
На одном узле это полчаса работы. На десяти узлах — это часы монотонной, однообразной работы, где легко что-то забыть или неправильно сделать.
Подготовили для вас такой плейбук:
- name: Configure Kubernetes node
hosts: nodes
become: yes
tasks:
- name: Install kubeadm, kubelet, and kubectl
apt:
name: "{{ item }}"
state: present
loop:
- kubeadm
- kubelet
- kubectl
hosts: nodes — плейбук выполняется на всех серверах, которые помечены как узлы (nodes) в вашем инвентаре Ansible.become: yes — нужны права администратора для установки пакетов и системных изменений.apt: — модуль для управления пакетами в Debian/Ubuntu. Установит из стандартных репозиториев.loop: — устанавливает три компонента:• kubeadm — инструмент для инициализации и управления кластером
• kubelet — агент, который запускает контейнеры на узле
• kubectl — команда для управления Kubernetes кластером
state: present — пакеты должны быть установлены.После установки этих компонентов узел будет готов присоединиться к кластеру Kubernetes.
🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🐳 Почему секреты в Dockerfile остаются навсегда
Хардкодить ключи и пароли в Dockerfile кажется быстрым решением, но в контейнерном мире это почти гарантированная утечка. Даже если потом удалить секрет, он уже может остаться в слоях образа, логах, кэше сборки и сторонних регистрах.
Docker строит образ послойно, и каждый слой можно просмотреть через docker history или инструменты анализа образов.
Если на каком то шаге в Dockerfile задать ENV с токеном или скопировать файл с секретами, этот слой останется в истории образа даже после последующих RUN rm и похожих команд. В результате любой, кто получил образ или доступ к реестру, может восстановить эти данные.
Надежное правило для повседневной работы простое — в Dockerfile никогда не должно быть токенов, паролей и ключей. Секреты передаются только в рантайме через env file или встроенные механизмы секретов платформы, а процесс сборки остается максимально слепым к конфиденциальным данным.
🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#root@prompt
Хардкодить ключи и пароли в Dockerfile кажется быстрым решением, но в контейнерном мире это почти гарантированная утечка. Даже если потом удалить секрет, он уже может остаться в слоях образа, логах, кэше сборки и сторонних регистрах.
Docker строит образ послойно, и каждый слой можно просмотреть через docker history или инструменты анализа образов.
Если на каком то шаге в Dockerfile задать ENV с токеном или скопировать файл с секретами, этот слой останется в истории образа даже после последующих RUN rm и похожих команд. В результате любой, кто получил образ или доступ к реестру, может восстановить эти данные.
Надежное правило для повседневной работы простое — в Dockerfile никогда не должно быть токенов, паролей и ключей. Секреты передаются только в рантайме через env file или встроенные механизмы секретов платформы, а процесс сборки остается максимально слепым к конфиденциальным данным.
🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
🖇 Как быстро узнать публичный IP сервера
Узнать публичный айпи можно за одну строку:
Эта команда отправляет запрос к сервису ifconfig.me, который возвращает текущий внешний IP вашего сервера. Ключ -s отключает лишний вывод, чтобы показать только сам IP.
🔹 Программирование на языке Python
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#root@prompt
Узнать публичный айпи можно за одну строку:
curl -s ifconfig.me
Эта команда отправляет запрос к сервису ifconfig.me, который возвращает текущий внешний IP вашего сервера. Ключ -s отключает лишний вывод, чтобы показать только сам IP.
🔹 Программирование на языке Python
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Вот несколько вещей, которые стоит сделать уже сейчас, чтобы не ловить прод ночью без HTTPS.
Для локального PEM‑файла:
openssl x509 -enddate -noout -in /path/to/cert.pem
Для сертификата, который уже стоит на сервере (через SNI):
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -enddate
Удобно обернуть это в скрипт и повесить на мониторинг, который будет ругаться, если до истечения меньше, скажем, 7 дней.
Если вы используете certbot, базовый cron может выглядеть так:
0 2 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
• Запускайте чаще, чем раз в 30 дней: certbot сам решит, нужно ли обновлять, но у него будет больше попыток.
• post-hook важен: Nginx (или другой веб‑сервер) должен перечитать новый сертификат.
Для тех, кто предпочитает acme.sh за лёгкость и поддержку разных провайдеров DNS:
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
Обратите внимание
• acme.sh сам следит за сроком и обновляет вовремя.
• После выпуска не забудьте один раз прописать перезагрузку сервиса, например:
/home/user/.acme.sh/acme.sh --install-cert -d example.com
--key-file /etc/ssl/example.com.key
--fullchain-file /etc/ssl/example.com.fullchain.pem
--reloadcmd "systemctl reload nginx"
Даже при настроенном cron бывает, что что‑то ломается: права, DNS, лимиты CA. Хорошая практика
• В мониторинг (Prometheus, Zabbix, Grafana Agent, любой другой) добавить проверку срока сертификата.
• Завести оповещение, если осталось меньше N дней или срок истёк.
Избегайте жёстких «обновлять раз в 60 дней»
При 45‑дневных сертификатах такая логика приведёт к просрочке. Без ARI или «умных» клиентов используйте правило: обновлять примерно на 2/3 срока жизни сертификата. Для 45 дней это где‑то на 30‑й день.
Если у вас уже есть боевой контур на Let’s Encrypt, самое важное сейчас — убедиться, что:
• продление полностью автоматизировано
• веб‑сервер корректно перечитывает новые сертификаты
• есть мониторинг и алерты на срок действия
Тогда переход на более короткий срок будет почти незаметен для вас и ваших пользователей.
🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
🌐 Как найти все открытые сетевые порты
Чтобы понять, какие порты на вашем компьютере сейчас прослушиваются и ждут подключения, можно быстро проверить все активные сетевые точки с помощью команды:
Она показывает все открытые порты и процессы, которые их используют.
•
•
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#root@prompt
Чтобы понять, какие порты на вашем компьютере сейчас прослушиваются и ждут подключения, можно быстро проверить все активные сетевые точки с помощью команды:
netstat -tulnp | grep LISTEN
Она показывает все открытые порты и процессы, которые их используют.
•
netstat -tulnp выводит список TCP и UDP портов, которые прослушиваются, а также PID соответствующих процессов.•
grep LISTEN отфильтровывает этот список, показывая только порты, которые на самом деле слушают входящие соединения.🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Пример плейбука для Ansible, который устанавливает Jenkins на группу серверов:
- name: Install Jenkins
hosts: cicd_servers
become: yes
tasks:
- name: Install Java
apt:
name: openjdk-11-jdk
state: present
- name: Add Jenkins repository and install
shell: |
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
echo "deb http://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
apt update && apt install -y jenkins
Что делает этот плейбук:
• Устанавливает нужную версию Java, обязательную для работы Jenkins.
• Добавляет официальный репозиторий Jenkins и его ключ для безопасной установки.
• Обновляет списки пакетов и устанавливает Jenkins.
🔹 ML для старта в Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Самая частая ошибка в K8s: Pods без CPU/memory requests/limits конкурируют несправедливо. Без лимитов один Pod может сожрать все ресурсы ноды, вызывая голодание или вытеснение других подов под нагрузкой.
Реальный кейс: Java-приложение без limits во время GC жрёт 4GB и выкидывает важные сервисы.
Плохо (нет ресурсов):
containers:
- name: app
image: myapp:latest
# а где...
Правильно. Requests для планирования, limits для защиты:
resources:
requests:
memory: "256Mi" # минимум для scheduler
cpu: "250m" # 0.25 CPU
limits:
memory: "512Mi" # максимум памяти
cpu: "500m" # максимум CPU
Ставьте ресурсы везде. Это спасёт от 90% проблем с нестабильностью кластера.
🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 Автоматическое резервное копирование с cron
Автоматизация рутинных задач — ключ к стабильной работе серверов. Один из популярных способов — запустить задачу по расписанию с помощью cron.
Пример:
Здесь:
•
•
Такой подход позволит автоматически сохранять резервные копии без вашего вмешательства.
🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#root@prompt
Автоматизация рутинных задач — ключ к стабильной работе серверов. Один из популярных способов — запустить задачу по расписанию с помощью cron.
Пример:
echo "0 2 * * * tar -czf /backup.tar.gz /important/data" | crontab -
Здесь:
•
0 2 * * * — расписание, указывающее запуск в 2:00 каждый день.•
tar -czf /backup.tar.gz /important/data — создание сжатого архива с папкой /important/data.Такой подход позволит автоматически сохранять резервные копии без вашего вмешательства.
🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😢1
Лог-файлы растут со временем и могут быстро заполнить дисковое пространство, если их не контролировать. Ротация логов — простой способ автоматически управлять старыми записями, сжимая и удаляя устаревшие файлы.
Пример Ansible плейбука для настройки ротации логов:
- name: Set up log rotation
hosts: all
become: yes
tasks:
- name: Configure logrotate
copy:
dest: /etc/logrotate.d/custom_logs
content: |
/var/log/*.log {
daily
rotate 7
compress
missingok
notifempty
}
Этот плейбук создаёт конфигурационный файл для logrotate с правилами:
• Логи из /var/log/ с расширением .log обрабатываются ежедневно
• Хранятся только последние 7 архивов, чтобы не захламлять диск
• Логи сжимаются для экономии пространства
• Если файлы отсутствуют, ошибок не возникает
• Пустые файлы не обрабатываются
🔹 Практический интенсив «Архитектуры и шаблоны проектирования»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Проверка доступности порта на удалённом хосте
Иногда нужно быстро убедиться, что определённый порт на удалённом сервере доступен и принимает подключения. Это нужно для диагностики сетевых проблем и проверки работы файрвола.
Используйте команду:
Такой тест помогает быстро понять, почему клиент не подключается, и выявить проблемы с сетью или настройками безопасности.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root@prompt
Иногда нужно быстро убедиться, что определённый порт на удалённом сервере доступен и принимает подключения. Это нужно для диагностики сетевых проблем и проверки работы файрвола.
Используйте команду:
nc -zv example.com 443
nc (netcat) с ключами -zv проверяет открытость порта без передачи данных.-z означает «сканировать без отправки данных».-v включает подробный вывод, чтобы видеть результат проверки.Такой тест помогает быстро понять, почему клиент не подключается, и выявить проблемы с сетью или настройками безопасности.
📍 Навигация: Вакансии • Задачи • Собесы
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
Настройка балансировщика нагрузки — важная задача для любого масштабируемого сервиса. Автоматизация с помощью Playbook помогает быстро и без ошибок развернуть HAProxy на нужных серверах.
Пример Ansible плейбука для установки и настройки HAProxy:
- name: Install and configure HAProxy
hosts: lb_servers
become: yes
tasks:
- name: Install HAProxy
apt:
name: haproxy
state: present
- name: Configure HAProxy
template:
src: haproxy.cfg.j2
dest: /etc/haproxy/haproxy.cfg
Пример шаблона haproxy.cfg.j2 с базовыми настройками:
log /dev/log local0
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin
server web1 192.168.1.101:80 check
server web2 192.168.1.102:80 check
📍 Навигация: Вакансии • Задачи • Собесы
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Для девопсов важно оперативно отслеживать загрузку CPU и использование памяти, чтобы вовремя реагировать на проблемы с производительностью.
Небольшой Python-скрипт с библиотекой psutil поможет быстро контролировать эти показатели:
import psutil
def check_system_resources():
cpu_usage = psutil.cpu_percent(interval=1)
memory_usage = psutil.virtual_memory().percent
if cpu_usage > 80:
print(f"High CPU usage: {cpu_usage}%")
if memory_usage > 80:
print(f"High Memory usage: {memory_usage}%")
check_system_resources()
Что делает скрипт:
• Измеряет загрузку процессора за 1 секунду
• Проверяет процент занятой оперативной памяти
• При использовании CPU или памяти выше 80% выводит предупреждение
Такой скрипт можно запускать вручную или интегрировать в систему мониторинга для быстрого реагирования на перегрузки.
📍 Навигация: Вакансии • Задачи • Собесы
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3😁3🌚1
🌐 Cтандартизация правил файрвола
Защита серверов — обязательный элемент работы любой инфраструктуры. Настройка правил файрвола с помощью Ansible Playbook помогает быстро и единообразно обезопасить все серверы.
Пример плейбука для конфигурации UFW:
Что делает этот плейбук:
• Разрешает входящие соединения по SSH (порт 22)
• Открывает HTTP (80) и HTTPS (443) для веб-трафика
• Включает UFW с политикой блокировки всех остальных подключений по умолчанию
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root@prompt
Защита серверов — обязательный элемент работы любой инфраструктуры. Настройка правил файрвола с помощью Ansible Playbook помогает быстро и единообразно обезопасить все серверы.
Пример плейбука для конфигурации UFW:
- name: Configure UFW Firewall Rules
hosts: all
become: yes
tasks:
- name: Allow SSH
ufw:
rule: allow
port: '22'
proto: tcp
- name: Allow HTTP and HTTPS
ufw:
rule: allow
port: '{{ item }}'
proto: tcp
loop:
- 80
- 443
- name: Enable UFW
ufw:
state: enabled
policy: deny
Что делает этот плейбук:
• Разрешает входящие соединения по SSH (порт 22)
• Открывает HTTP (80) и HTTPS (443) для веб-трафика
• Включает UFW с политикой блокировки всех остальных подключений по умолчанию
📍 Навигация: Вакансии • Задачи • Собесы
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5😁1