Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3
Без демона: Не требует отдельного демона, контейнеры работают как процессы.
Совместимость с Docker: Поддерживает Docker CLI.
rootless режим: Запуск без привилегий суперпользователя.
podman run -d --name my-container nginx
Интеграция с Kubernetes: Оптимизирован для Kubernetes.
Легковесность: Минимальные зависимости.
Поддержка OCI: Соответствует стандартам Open Container Initiative.
criSocket: /var/run/crio/crio.sock
Высокая производительность: Эффективное управление контейнерами.
Интеграция с Kubernetes: Используется напрямую через CRI.
Поддержка OCI: Полная совместимость с OCI.
ctr run -d --name my-container docker.io/library/nginx:latest
Полная виртуализация ОС: Изоляция процессов, сети и файловой системы.
Управление контейнерами: Удобные инструменты для управления.
Гибкость: Поддержка различных дистрибутивов Linux.
lxc launch ubuntu:20.04 my-container
Без демона: Запуск контейнеров без постоянного демона.
Безопасность: Изолированные окружения и аутентификация.
Интеграция с Kubernetes: Альтернатива Docker в Kubernetes.
rkt run --insecure-options=image docker://nginx
Виртуализация на уровне ОС: Запуск изолированных виртуальных окружений.
Производительность: Минимальная изоляция для высокой производительности.
Управление ресурсами: Контроль ресурсов для каждого окружения.
vzctl create 101 --ostemplate centos-7
Фокус на HPC: Оптимизирован для научных вычислений.
rootless контейнеры: Запуск без прав суперпользователя.
Совместимость: Поддержка Docker контейнеров и OCI форматов.
singularity pull docker://nginx
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
В Ansible хэндлеры и шаблоны являются важными инструментами для управления конфигурацией и автоматизации задач. Они позволяют эффективно управлять изменениями конфигурации и генерировать файлы конфигураций динамически. Вот описание моего опыта использования хэндлеров и шаблонов в ролях Ansible.
Это задачи, которые выполняются только при вызове. Они используются для выполнения действий после изменения состояния системы, например, перезагрузки службы после обновления конфигурационного файла.
Определение хэндлеров в роли
# roles/my_role/handlers/main.yml
- name: restart nginx
service:
name: nginx
state: restarted
Вызов хэндлера в задаче
# roles/my_role/tasks/main.yml
- name: Copy nginx configuration file
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify:
- restart nginx
Используют движок Jinja2 для динамического создания файлов на основе переменных. Это позволяет генерировать конфигурационные файлы, которые могут адаптироваться к различным средам и параметрам.
Определение шаблона
# roles/my_role/templates/nginx.conf.j2
server {
listen 80;
server_name {{ server_name }};
location / {
proxy_pass http://{{ proxy_pass }};
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Использование шаблона в задаче
# roles/my_role/tasks/main.yml
- name: Generate nginx configuration from template
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
vars:
server_name: "example.com"
proxy_pass: "127.0.0.1:8080"
notify:
- restart nginx
В проектах автоматизации развертывания веб-серверов я использовал хэндлеры для перезапуска служб после обновления конфигурационных файлов. Шаблоны позволяли гибко настраивать конфигурации для различных окружений (development, staging, production).
Для управления конфигурацией баз данных я использовал шаблоны для генерации файлов конфигураций на основе переменных, которые определяют параметры подключения и настройки базы данных.
Использование хэндлеров для перезагрузки служб после установки или обновления пакетов. Например, перезапуск Apache после установки новых модулей или обновления конфигурации.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
В Ansible плейбуки и роли могут быть запущены различными способами в зависимости от контекста и требований. Основные методы включают использование командной строки, автоматизацию через CI/CD системы и запуск через API. Вот описание основных способов запуска плейбуков и ролей:
Самый распространенный и прямолинейный способ запуска плейбуков и ролей — это использование командной строки с командой
ansible-playbook
.Запуск плейбука
ansible-playbook site.yml
Запуск плейбука с указанием инвентарного файла
ansible-playbook -i inventory/hosts site.yml
Запуск плейбука с переменными
ansible-playbook -i inventory/hosts site.yml -e "variable1=value1 variable2=value2"
Запуск определенной роли в плейбуке
Плейбук
# site.yml
- hosts: all
roles:
- role: my_role
Команда
ansible-playbook -i inventory/hosts site.yml
Многие современные проекты используют CI/CD системы, такие как Jenkins, GitLab CI, GitHub Actions и другие для автоматизации процесса развертывания и тестирования. Ansible легко интегрируется с такими системами.
Jenkins Pipeline
pipeline {
agent any
stages {
stage('Deploy') {
steps {
sh 'ansible-playbook -i inventory/hosts site.yml'
}
}
}
}
.gitlab-ci.yml
stages:
- deploy
deploy:
stage: deploy
script:
- ansible-playbook -i inventory/hosts site.yml
Ansible Tower (коммерческий продукт) и AWX (open-source версия Ansible Tower) предоставляют веб-интерфейс и API для управления и автоматизации Ansible задач.
В веб-интерфейсе Ansible Tower или AWX создайте новый шаблон задания (Job Template), укажите плейбук и инвентарь.
Запустите задание через веб-интерфейс или API.
Запуск через API
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{"inventory": "1", "job_template": "1"}' \
http://tower.example.com/api/v2/job_templates/1/launch/
Пример плейбука
site.yml
# site.yml
- hosts: all
roles:
- role: my_role
Запуск через командную строку
ansible-playbook -i inventory/hosts site.yml
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Если у вас много машин и нет Ansible и Python, можно использовать несколько подходов для автоматической установки этих инструментов.
Вы можете написать скрипт, который будет подключаться к каждой машине по SSH и устанавливать необходимые пакеты. Шаги:
#!/bin/bash
# Установка Python
sudo apt update
sudo apt install -y python3 python3-pip
# Установка Ansible
pip3 install ansible
#!/bin/bash
# Список IP-адресов или хостнеймов машин
HOSTS=("host1" "host2" "host3")
# Путь к скрипту установки
INSTALL_SCRIPT="install_ansible.sh"
# Копирование скрипта и выполнение на удалённых машинах
for HOST in "${HOSTS[@]}"; do
scp $INSTALL_SCRIPT $HOST:/tmp/
ssh $HOST "bash /tmp/$INSTALL_SCRIPT"
done
Если вы используете облачные машины, такие как AWS, Azure или Google Cloud, можно использовать
cloud-init
для автоматической установки Python и Ansible при создании машин.Пример
cloud-init
конфигурации#cloud-config
packages:
- python3
- python3-pip
runcmd:
- pip3 install ansible
Это инструмент для выполнения команд на удалённых серверах по SSH, который можно использовать для автоматизации установки Python и Ansible.
Установка Fabric
pip install fabric
Пример использования Fabric
from fabric import Connection
# Список хостов
hosts = ["host1", "host2", "host3"]
# Команды для выполнения
commands = [
"sudo apt update",
"sudo apt install -y python3 python3-pip",
"pip3 install ansible"
]
# Выполнение команд на каждом хосте
for host in hosts:
conn = Connection(host)
for command in commands:
conn.run(command)
Запустите скрипт:
python deploy.py
Это утилита для параллельного выполнения команд на нескольких хостах.
Установка pdsh
sudo apt install pdsh
Пример использования pdsh
# Список хостов
HOSTS="host1,host2,host3"
# Команды для выполнения
pdsh -w $HOSTS "sudo apt update && sudo apt install -y python3 python3-pip"
pdsh -w $HOSTS "pip3 install ansible"
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17😁1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5
Это важная часть управления инфраструктурой и обеспечения стабильной работы сервисов. Различные инструменты позволяют отслеживать состояние приложений, ресурсов системы и выявлять проблемы до того, как они повлияют на пользователей.
Это мощный инструмент для мониторинга и алертинга, который собирает метрики с приложений и систем. Prometheus использует язык запросов PromQL для анализа и генерации алертов.
wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
tar xvf prometheus-2.26.0.linux-amd64.tar.gz
cd prometheus-2.26.0.linux-amd64
./prometheus --config.file=prometheus.ym
prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'my_application'
static_configs:
- targets: ['localhost:9090']
Node Exporter для системных метрик Приложения могут использовать библиотеки клиента для передачи метрик (например,
prometheus_client
для Python)Это инструмент для визуализации данных, который отлично интегрируется с Prometheus. Он позволяет создавать красивые и информативные дашборды.
wget https://dl.grafana.com/oss/release/grafana-7.4.3.linux-amd64.tar.gz
tar -zxvf grafana-7.4.3.linux-amd64.tar.gz
cd grafana-7.4.3/bin
./grafana-server
В веб-интерфейсе Grafana добавьте Prometheus как источник данных.
Создайте дашборды и панели для визуализации метрик.
Alertmanager управляет алертами, отправляемыми Prometheus, и позволяет настраивать правила алертинга и маршрутизации.
alertmanager.yml
global:
smtp_smarthost: 'smtp.example.com:587'
smtp_from: 'alertmanager@example.com'
route:
receiver: 'email-alert'
receivers:
- name: 'email-alert'
email_configs:
- to: 'team@example.com'
ELK Stack используется для сбора, анализа и визуализации логов.
Хранение и поиск логов.
Сбор, обработка и преобразование логов.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.2-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.11.2-linux-x86_64.tar.gz
cd elasticsearch-7.11.2
./bin/elasticsearch
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.11.2-linux-x86_64.tar.gz
tar -xzf logstash-7.11.2-linux-x86_64.tar.gz
cd logstash-7.11.2
./bin/logstash -f logstash.conf
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.11.2-linux-x86_64.tar.gz
tar -xzf kibana-7.11.2-linux-x86_64.tar.gz
cd kibana-7.11.2
./bin/kibana
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4
Это файловая система, которая может увеличивать количество inode по мере необходимости, вместо того чтобы фиксировать их количество при создании. Такой подход позволяет более эффективно использовать дисковое пространство и избегать ситуаций, когда inode заканчиваются, хотя на диске еще достаточно свободного места.
XFS не фиксирует количество inode при создании файловой системы. Inode выделяются по мере необходимости из свободного дискового пространства, что позволяет более гибко и эффективно использовать ресурсы.
XFS разработана для высокопроизводительных операций ввода-вывода и хорошо подходит для больших файлов и файловых систем.
XFS использует журналирование для повышения надежности и быстрого восстановления после сбоев.
XFS может управлять очень большими файлами и файловыми системами (до нескольких петабайт).
Встроенные средства для дефрагментации и оптимизации файловой системы позволяют поддерживать высокую производительность.
Для создания файловой системы XFS на разделе
/dev/sdX1
, можно использовать команду mkfs.xfs
mkfs.xfs /dev/sdX1
После создания файловой системы ее можно смонтировать
mount /dev/sdX1 /mnt/myxfs
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍6
OOM расшифровывается как "Out Of Memory" (недостаток памяти). Это состояние, при котором система или процесс исчерпывает все доступные ресурсы памяти, что приводит к невозможности выделения дополнительной памяти для выполнения текущих задач или запуска новых процессов.
Приложение может не освобождать память после использования (утечки памяти), что со временем приводит к её исчерпанию.
На устройстве или сервере физически недостаточно оперативной памяти для поддержки всех запущенных процессов.
Внезапное увеличение нагрузки на систему, требующее больше памяти, чем обычно.
Некоторые ОС уведомляют процессы о нехватке памяти, чтобы они могли освободить часть ресурсов.
В крайнем случае ОС может принудительно завершить процессы для освобождения памяти. В Linux, например, существует OOM Killer, который завершает наиболее "прожорливые" процессы.
Запись в журнал, чтобы администраторы могли позже проанализировать и устранить причину проблемы.
data = []
while True:
data.append(' ' * 10**6) # Добавляем строки по 1 МБ в список бесконечно
Постоянно отслеживайте использование памяти вашими приложениями и системами.
Пишите код, который эффективно использует и освобождает память.
Устанавливайте ограничения на использование памяти для процессов.
При необходимости увеличивайте объем доступной памяти или используйте распределенные системы.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1
Зависит от нескольких факторов, включая требования бизнеса, нормативные требования и технические ограничения. Обычно логи по мониторингу хранятся от нескольких недель до нескольких лет.
Для анализа и отчетности могут требоваться логи за длительные периоды. Для отладки и решения инцидентов могут быть достаточно короткие периоды хранения.
В некоторых отраслях существуют законодательные требования к срокам хранения данных (например, финансовый сектор или здравоохранение).
Доступное дисковое пространство и производительность системы могут ограничивать срок хранения логов.
Разные типы логов могут иметь разные сроки хранения. Например, критические системные логи могут храниться дольше, чем логи отладки.
Хранение логов за последние 7-30 дней для оперативного мониторинга и анализа.
Хранение логов за последние 3-6 месяцев для анализа тенденций и расследования инцидентов.
Хранение логов за последние 1-2 года для соответствия нормативным требованиям и долгосрочного анализа.
ILM позволяет управлять жизненным циклом индексов, автоматически перемещая данные между горячими, теплыми и холодными индексами и удаляя старые данные.
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_age": "30d",
"max_size": "50gb"
}
}
},
"warm": {
"min_age": "30d",
"actions": {
"shrink": {
"number_of_shards": 1
},
"set_priority": {
"priority": 50
}
}
},
"cold": {
"min_age": "90d",
"actions": {
"freeze": {},
"set_priority": {
"priority": 0
}
}
},
"delete": {
"min_age": "180d",
"actions": {
"delete": {}
}
}
}
}
}
PUT /myapp-logs/_settings
{
"index.lifecycle.name": "my_policy"
}
Используется для управления файлами логов и их архивирования.
Создайте файл конфигурации
/etc/logrotate.d/myapp
/var/log/myapp/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0640 myuser mygroup
sharedscripts
postrotate
/usr/bin/systemctl reload myapp.service > /dev/null
endscript
}
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥1
Зависит от нескольких ключевых факторов, включая требования бизнеса, технические ограничения, нормативные требования и тип метрик.
Анализ производительности: Для анализа производительности системы за длительные периоды может потребоваться хранение метрик за несколько месяцев или лет. Исторические данные: В некоторых случаях необходимо хранить исторические данные для сравнения и анализа долгосрочных тенденций.
Дисковое пространство: Доступное дисковое пространство напрямую влияет на количество данных, которые можно хранить. Производительность системы: Увеличение объема данных может снижать производительность системы мониторинга.
Соблюдение законов и регламентов: В некоторых отраслях существуют требования к хранению данных, включая метрики, за определенные периоды.
Критические метрики: Метрики, важные для безопасности и стабильности системы, могут храниться дольше. Метрики производительности: Метрики производительности могут храниться короткий период для оперативного анализа и устранения проблем.
1-2 месяца: Для оперативного мониторинга и анализа текущих событий и инцидентов.
3-6 месяцев: Для анализа тенденций и выявления закономерностей.
1-2 года: Для соответствия нормативным требованиям и долгосрочного анализа производительности.
Позволяет настроить срок хранения данных с помощью параметра
--storage.tsdb.retention.time
.Настройка срока хранения метрик
prometheus --storage.tsdb.retention.time=90d
Позволяет управлять временем хранения данных с помощью политики хранения (Retention Policy).
CREATE RETENTION POLICY "three_months" ON "mydb" DURATION 90d REPLICATION 1 DEFAULT
ALTER RETENTION POLICY "three_months" ON "mydb" DURATION 90d REPLICATION 1
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥7
Эффективный мониторинг является критически важным для поддержания стабильности, производительности и безопасности систем.
Настройка алертинга для проактивного выявления проблем до их воздействия на пользователей. Использование пороговых значений и трендов для настройки алертов. Регулярная проверка и обновление алертов на основе опыта и изменяющихся условий.
Консолидация логов, метрик и событий в одной системе для удобного анализа. Использование инструментов, таких как ELK Stack, Prometheus, и Grafana для сбора и анализа данных. Централизация данных для упрощения корреляции и анализа.
Мониторинг всех уровней системы: инфраструктуры, приложений, сетей и пользовательского опыта. Инструменты мониторинга инфраструктуры: Prometheus, Nagios. Мониторинг приложений: APM (Application Performance Monitoring) инструменты, такие как New Relic, Datadog. Мониторинг пользовательского опыта: Real User Monitoring (RUM) и Synthetic Monitoring.
Отслеживание ключевых метрик производительности и доступности. CPU, память, диск, сеть: сбор и анализ системных метрик. Время отклика и количество ошибок: метрики приложений. Среднее время безотказной работы (MTTF) и среднее время восстановления (MTTR).
Создание информативных и понятных дашбордов для анализа данных. Использование Grafana для визуализации метрик и создания дашбордов. Настройка дашбордов для различных аудиторий: разработчики, операционные команды, менеджмент.
Обеспечение безопасности данных мониторинга через аутентификацию и авторизацию. Настройка ролевой модели доступа к данным мониторинга. Использование защищенных каналов связи (TLS/SSL).
Поддержка актуальной документации по настройкам мониторинга и обучение команды. Документация конфигураций, схем и процессов мониторинга. Регулярное обучение команды по инструментам и методам мониторинга.
Использование автоматизации для настройки и поддержания мониторинга. Автоматизация развертывания агентов мониторинга с помощью Ansible, Terraform и других инструментов. Интеграция с CI/CD для мониторинга развертываний и выпуска новых версий.
Регулярная оценка и улучшение системы мониторинга. Проведение регулярных аудитов конфигураций и эффективности мониторинга. Внедрение новых инструментов и методов на основе обратной связи и новых технологий.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1