aea5bd3bce2890bc7fa24c4a07b8d9ae9eb8d3b1
Добавлен README.md с описанием проекта автоматического развертывания кластера мониторинга, включая инструкции по установке и настройке.
Automated Monitoring Stack
Infrastructure-as-Code проект для автоматического развертывания кластера мониторинга с нуля. Позволяет за 5 минут поднять сервера в облаке и накатить на них метрики.
Стек :hammer_and_wrench::
- 🏗️ terraform Terraform v1.16.2 on linux_amd64 - для создания ВМ в облаке Yandex Cloud.
- 🚀 ansible [core 2.20.1] - для автоматической установки нужных компонентов и накатки конфигураций.
- 🐳 docker - для изоляции сервисов и запуске на любых машинах.
- 📝 prometheus и node exporters - для опроса и получения метрик с целевых серверов.
- 📊 grafana - для красивой визуализации данных.
Краткая архитектура 💡
- Главный сервер (general_server): настраивается в ручную, вписывается первым под группой
serversв inventory и настраивается в файлеgeneral_server, который должен быть расположен в папкеhost_vars. - terraform идёт в облако Yandex Cloud и поднимает нужное количество серверов (настраивается в variable.tf). После развертывания серверов создает inventory файл с настройками каждой машины в папке
host_vars, чтобы запустить плейбук можно было без ручного ввода. - Ansible получает готовую конфигурацию и идёт на
general_server, чтобы поднять два контейнера: prometheus и grafana. Он динамически подставляет переменные из папкиgroup_vars, чтобы контейнеры получили готовую конфигурацию. Затем он идёт на остальные сервера, ставитnode_exporterс официального репозитория на GitHub, настраивает systemd службу и автозапуск.
Безопасность :lock::
-
Пароли и логины хранятся в папке
group_varsв файлеvault.yml, который в свою очередь зашифрован мастер-паролем хранилища vault Ansible. -
Сразу настраивается basic_auth на всех сервисах: Grafana, Ansible, Node_Exporters
-
Стейт terraform и ключи игнорируются git.
-
Подключение к серверам идёт строго по ssh ключам.
Быстрый старт:
Вам понадобится:
- Аккаунт Yandex Cloud с ключами. Можно получить тут: Консоль Yandex Cloud. Поместите ключи в папку
terraform-infra/ - Операционная система Linux с установленной на ней terraform, ansible и git. Команды для установки (работает на: ubuntu и debian): 'sudo apt update && sudo apt install -y ansible terraform git'
Конкретные действия для развёртывания:
- Клонируйте и перейдите в скачанный репозиторий командой
git clone https://github.com/LeoR156/metrics-prometheus-grafana && cd metrics-prometheus-grafana/group_vars/all/ - Откройте
vault.ymlи сотрите содержимое. Команда> vault.yml && nano vault.yml. - Напишите туда ваши реальные данные по шаблону c сохранением кавычек:
grafana_admin_user: "ваш_логин_для_grafana"
grafana_admin_password: "ваш_пароль_для_grafana"
prom_admin_user: "ваш_логин_для_prometheus"
prom_admin_password: "ваш_пароль_для_prometheus"
exporter_user: "ваш_логин_для_exportes"
exporter_password: "ваш_пароль_для_exporters"
- Примените изменения:
ctrl + x,yиenter - Желательно применить шифрование, команда:
ansible-vault encrypt vault.yml. Придумайте и введите пароль. ⚠️: __Если шифруете, то запомните пароль, иначе для просмотра нужно будет расшифровать файл командой:ansible-vault decrypt <путь_и_имя_файла>__ - Вернитесь на две папки выше командой
cd ../..и перейдите в папкуhost_varsкомандойcd host_vars/. Создайте файлgeneral_server.ymlи введите туда данные командойnano general_server.yml. (с сохранением кавычек)
ansible_host: "ваш_IP_главного_сервера"
ansible_user: "ваш_юзер"
ansible_ssh_private_key_file: "путь_до_ssh_ключа"
- Примените изменения:
ctrl + x,yиenter - Переместитесь в
terraform_infraкомандамиcd .. && cd terraform-infra/ - ⚠️: Убедитесь, что файл с ключами яндекса находится именно в этой папке!
- Скачайте плагины провайдера командой
terraform init. Дождитесь полной загрузки. По окончании убедитесь, что установка прошла корректно: сообщениеTerraform has been successfully initialized! terraform plan- предварительно ознакомиться с изменениями.terraform apply- команда применить измениня, нужно ввести yes. Дождитесь, пока terraform знакончит свою работу.- Вернитесь в папку
metrics-prometheus-grafana командойcd ..и запустите плейбук командойansible-playbook -i terraform-infra/inventory.ini playbook.yml --ask-vault-pass`. введите пароль, если задавали его ранее -
Пару-тройку минут и ansible сделает свою работу
Подключение и первый дашборд:
- Зайдите на IP general_server, порт 3001. Шаблон:
http://<IP_general_server>:3001 - Введите логин и пароль от
grafana, который вы задавали ранее в файлеvault.yml - Зайдите на вкладку
dashboardsслева экрана > нажмитеnewсправа > нажмитеimport dashboards> вставьте ID 1860 и нажмитеload> затем сноваimport.
Готово! Метрики настроены.
Планы дальнейшего развитий проекта:
* Разбить таски по ролям ansible.
* Добавить возможность получения ssl сертификата ради безопасного https соединения.
* Прикрутить алерт-менеджер + Telegram Notifications.
Languages
Jinja
70.9%
HCL
29.1%