Тема: Моніторинг та логування хмарної інфраструктури.
Налаштування CloudWatch або Azure Monitor для збору метрик і логів; створення дашбордів та алертів; налаштування централізованого логування; аналіз інцидентів на основі метрик та журналів подій.
Мета: Набути практичні навички налаштування моніторингу та логування хмарної інфраструктури, створення алертів і дашбордів, а також аналізу зібраних даних для виявлення та усунення проблем.
Технологічний стек:
CPUUtilization — завантаження процесораNetworkIn / NetworkOut — мережевий трафікDiskReadOps / DiskWriteOps — операції з дискомCPUUtilization → Add to graphЗверніть увагу: Базові EC2-метрики CloudWatch оновлюються кожні 5 хвилин безкоштовно. Detailed monitoring (1 хвилина) — платний.
Підключіться до вашої VM (з Лаб. №4):
ssh -i ~/.ssh/lab04_key ubuntu@<PUBLIC_IP>
Встановлення агента:
# Завантаження та встановлення
sudo apt update
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i amazon-cloudwatch-agent.deb
Надання IAM-ролі EC2-інстанції:
CloudWatchAgentServerPolicyКонфігурація агента:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
# Дайте відповіді на запитання:
# - OS: linux
# - StatsD daemon: no
# - collectd: no
# - Metrics to monitor: memory, disk
# - Log files: yes → /var/log/nginx/access.log та /var/log/nginx/error.log
Або створіть конфігурацію вручну /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json:
{
"metrics": {
"namespace": "Lab09/CustomMetrics",
"metrics_collected": {
"mem": {
"measurement": ["mem_used_percent"],
"metrics_collection_interval": 60
},
"disk": {
"measurement": ["disk_used_percent"],
"resources": ["/"],
"metrics_collection_interval": 60
}
}
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/nginx/access.log",
"log_group_name": "/lab09/nginx/access",
"log_stream_name": "{instance_id}"
},
{
"file_path": "/var/log/nginx/error.log",
"log_group_name": "/lab09/nginx/error",
"log_stream_name": "{instance_id}"
}
]
}
}
}
}
Запуск агента:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config \
-m ec2 \
-s \
-c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
# Перевірка статусу
sudo systemctl status amazon-cloudwatch-agent
/lab09/nginx/access — логи NginxНадсилання тестових запитів для генерації логів:
# Надішліть 20 запитів до Nginx (або виконайте з іншого терміналу)
for i in {1..20}; do curl -s http://<PUBLIC_IP> > /dev/null; done
# Запит до неіснуючої сторінки (генерує 404 в error.log)
curl http://<PUBLIC_IP>/not-found
Пошук у LogInsights:
/lab09/nginx/accessfields @timestamp, @message
| filter @message like /GET/
| sort @timestamp desc
| limit 20
CPUUtilization70 (%)lab09-cpu-alertlab09-high-cpu# На VM — генерація навантаження CPU
stress --cpu 1 --timeout 300 &
# Якщо stress не встановлений:
sudo apt install -y stress
# Або без додаткових пакетів:
yes > /dev/null &
STRESS_PID=$!
echo "Навантаження PID: $STRESS_PID"
echo "Зупиніть через 5 хв: kill $STRESS_PID"
Спостерігайте у CloudWatch:
lab09-high-cpu — стан має змінитися на In alarmЗупиніть навантаження:
kill $STRESS_PID
Lab09-Monitoringlab09-high-cpu) у стані In alarm (з навантаженням)lab09.md