Если у вас много машин и нет 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
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥5❤2
Является важной частью мониторинга и управления инфраструктурой. Уведомления позволяют оперативно реагировать на проблемы и минимизировать время простоя. Настройка уведомлений зависит от нескольких факторов, таких как критичность сервиса, тип метрик, предпочитаемые каналы уведомлений и инструменты мониторинга.
Критически важные сервисы требуют более быстрых и агрессивных уведомлений. Менее важные сервисы могут иметь менее строгие правила уведомлений.
Производственные метрики: CPU, память, диск, сеть. Метрики приложений: время отклика, количество ошибок, производительность. Пользовательский опыт: время загрузки страницы, количество успешных транзакций.
SMS
Мессенджеры (Slack, Microsoft Teams)
Системы управления инцидентами (PagerDuty, OpsGenie)
Prometheus + Alertmanager
Grafana
Zabbix
Создайте или отредактируйте файл
alerts.yml
groups:
- name: example-alerts
rules:
- alert: HighCPUUsage
expr: avg_over_time(node_cpu_seconds_total{mode="idle"}[5m]) < 20
for: 2m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
description: "CPU usage is above 80% for more than 2 minutes"
Добавьте конфигурацию в
prometheus.yml
rule_files:
- "alerts.yml"
Создайте или отредактируйте файл
alertmanager.yml
global:
smtp_smarthost: 'smtp.example.com:587'
smtp_from: 'alertmanager@example.com'
route:
receiver: 'email-notifications'
receivers:
- name: 'email-notifications'
email_configs:
- to: 'team@example.com'
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'instance']
Запустите Alertmanager
./alertmanager --config.file=alertmanager.yml
Добавьте Alertmanager в конфигурацию Prometheus
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
Перейдите в раздел "Alerting" -> "Contact points" и создайте новую контактную точку. Укажите каналы уведомлений, такие как Email, Slack, PagerDuty и другие.
Перейдите в раздел "Alerting" -> "Notification policies" и создайте новую политику уведомлений. Настройте условия и укажите контактные точки.
Перейдите в раздел "Administration" -> "Media types" и создайте новый медиатип (например, Email или SMS).
Перейдите в раздел "Administration" -> "Users" и создайте пользователей. Настройте медиатипы для каждого пользователя и укажите, когда и как отправлять уведомления.
Ставь 👍 и забирай 📚 Базу знани
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
Для настройки уведомлений в изолированной сети без доступа к интернету используйте локальные инструменты и системы. Основные методы включают локальные почтовые серверы, мессенджеры и системы управления инцидентами.
sudo apt update
sudo apt install postfix
Отредактируйте
/etc/postfix/main.cf
myhostname = local.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination
sudo systemctl restart postfix
echo "Test email" | mail -s "Test Subject" user@example.com
Следуйте [документации](https://docs.mattermost.com/install/self-managed-install.html).
Создайте каналы и пользователей.
Используйте веб-хуки Mattermost для уведомлений.
Следуйте [документации](https://www.zabbix.com/download).
Настройте хосты, триггеры и действия.
Медиатипы: Настройте Email и SMS. Пользователи: Создайте пользователей и уведомления.
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.yml
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar xvf alertmanager-0.21.0.linux-amd64.tar.gz
cd alertmanager-0.21.0.linux-amd64
./alertmanager --config.file=alertmanager.yml
groups:
- name: example-alerts
rules:
- alert: HighCPUUsage
expr: avg_over_time(node_cpu_seconds_total{mode="idle"}[5m]) < 20
for: 2m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
description: "CPU usage is above 80% for more than 2 minutes"
global:
smtp_smarthost: 'localhost:25'
smtp_from: 'alertmanager@local.example.com'
route:
receiver: 'email-notifications'
receivers:
- name: 'email-notifications'
email_configs:
- to: 'admin@local.example.com'
send_resolved: true
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Для того чтобы уведомления были достоверными и надежными, необходимо учитывать несколько важных аспектов.
Правильно настроенные правила алертинга помогают избежать ложных срабатываний и пропусков важных событий.Определите четкие пороговые значения для метрик. Настройте правила так, чтобы они учитывали контекст и временные интервалы (например, CPU usage > 80% в течение 5 минут). Используйте тренды и аномалии вместо статических порогов для более точного алертинга.
Объединение нескольких метрик и событий для повышения точности алертов. Настройте алерты, которые срабатывают только при наличии нескольких условий. Используйте системы, такие как Prometheus и Alertmanager, для сложной логики алертинга.
Использование дашбордов и графиков для визуализации метрик и проверки правильности алертов. Настройте дашборды в Grafana или Kibana для постоянного мониторинга метрик. Регулярно проверяйте данные на предмет аномалий и соответствия реальной картине.
Периодическое тестирование системы алертинга для проверки ее работоспособности. Вручную вызывайте условия, при которых должны сработать алерты. Настройте тестовые сценарии для автоматической проверки системы алертинга.
Убедитесь, что системы уведомлений настроены правильно и доставляют сообщения своевременно. Используйте надежные каналы уведомлений (например, локальный почтовый сервер, локальные мессенджеры). Настройте резервные каналы уведомлений на случай отказа основного канала.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3