- Переименованы папки: - delete-raw → delete - delete-service-raw → delete-service - deploy-raw → deploy - deploy-service-raw → deploy-service - Обновлены пути в Makefile для всех команд: - make deploy - make delete - make deploy-service - make delete-service - make update-service - make update - Обновлены пути в документации - Добавлены новые команды make update-service и make update - Обновлен deploy/playbook.yml для использования шаблонов конфигурации Автор: Сергей Антропов Сайт: https://devops.org.ru
7.6 KiB
Гибкая конфигурация коллекторов через Ansible группы
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Обзор
Система позволяет гибко настраивать, какие коллекторы запускать на разных типах серверов через Ansible группы и переменные.
Структура
runner/
├── group_vars/ # Переменные для групп хостов
│ ├── all.yml # Глобальные настройки
│ ├── proxmox.yml # Настройки для Proxmox нод
│ ├── proxvms.yml # Настройки для VM/контейнеров
│ └── standalone.yml # Настройки для автономных серверов
├── templates/
│ └── config.yaml.j2 # Шаблон конфигурации
└── inventory.ini # Группы хостов
Группы хостов
1. proxmox - Proxmox ноды
Коллекторы: proxcluster
, proxnode
, proxvms
, uptime
[proxmox]
pnode10 ansible_host=10.14.253.20 ansible_user=devops
Назначение: Сбор информации о Proxmox кластере, нодах и виртуальных машинах.
2. proxvms - VM и контейнеры Proxmox
Коллекторы: proxvmsystem
, uptime
[proxvms]
kube-dbrain-node01 ansible_host=10.14.246.75 ansible_user=devops
kube-data ansible_host=10.14.246.150 ansible_user=devops
Назначение: Сбор системных метрик с уникальным machine_uid
для идентификации.
3. standalone - Автономные серверы
Коллекторы: system
, hba
, sensors
, uptime
[standalone]
server1 ansible_host=1.2.3.4 ansible_user=root
Назначение: Сбор системных метрик, информации о RAID/HBA и датчиках.
Конфигурация групп
Файл group_vars/proxmox.yml
# Список коллекторов для группы proxmox
collectors_enabled:
- proxcluster
- proxnode
- proxvms
- uptime
# Дополнительные настройки
collectors_config:
proxcluster:
interval: "60s"
timeout: "30s"
proxnode:
interval: "30s"
timeout: "15s"
proxvms:
interval: "300s"
timeout: "60s"
uptime:
interval: "60s"
timeout: "5s"
Файл group_vars/proxvms.yml
# Список коллекторов для VM/контейнеров
collectors_enabled:
- proxvmsystem
- uptime
# Настройки
collectors_config:
proxvmsystem:
interval: "300s"
timeout: "60s"
uptime:
interval: "60s"
timeout: "5s"
Файл group_vars/standalone.yml
# Список коллекторов для автономных серверов
collectors_enabled:
- system
- hba
- sensors
- uptime
# Настройки
collectors_config:
system:
interval: "30s"
timeout: "8s"
hba:
interval: "300s"
timeout: "15s"
sensors:
interval: "60s"
timeout: "10s"
uptime:
interval: "60s"
timeout: "5s"
Шаблон конфигурации
Файл templates/config.yaml.j2
автоматически генерирует config.yaml
на основе переменных групп:
# Конфигурация SensusAgent
# Автоматически сгенерировано на основе групповых переменных
agent:
log_level: "{{ agent_log_level | default('info') }}"
kafka:
brokers: "{{ kafka_brokers | default('localhost:9092') }}"
topic: "{{ kafka_topic | default('sensus-metrics') }}"
collectors:
{% for collector_name in collectors_enabled %}
{{ collector_name }}:
enabled: true
type: exec
key: {{ collector_name }}
interval: "{{ collectors_config[collector_name].interval | default('60s') }}"
timeout: "{{ collectors_config[collector_name].timeout | default('30s') }}"
exec: "./collectors/{{ collector_name }}"
platforms: [{{ collectors_config[collector_name].platforms | default('linux') | join(', ') }}]
{% endfor %}
Использование
1. Добавление нового хоста
# В inventory.ini
[proxmox]
new-pnode ansible_host=10.14.253.21 ansible_user=devops
2. Создание новой группы
- Добавить группу в
inventory.ini
:
[new_group]
server1 ansible_host=1.2.3.4 ansible_user=root
- Создать файл
group_vars/new_group.yml
:
collectors_enabled:
- system
- uptime
collectors_config:
system:
interval: "60s"
timeout: "10s"
uptime:
interval: "120s"
timeout: "5s"
- Добавить в
[targets:children]
:
[targets:children]
proxmox
proxvms
standalone
new_group
3. Изменение коллекторов для группы
Отредактируйте соответствующий файл в group_vars/
:
# Добавить новый коллектор
collectors_enabled:
- system
- gpu # Новый коллектор
- uptime
# Настроить параметры
collectors_config:
gpu:
interval: "300s"
timeout: "30s"
4. Тестирование конфигурации
# Запустить тест генерации конфигурации
./runner/test-config-generation.sh
# Развернуть на конкретной группе
ansible-playbook -i runner/inventory.ini runner/deploy-service/playbook.yml --limit proxmox
# Обновление systemd-сервиса (рекомендуется)
make update-service
# Обновление агента без systemd
make update
Примеры конфигураций
Для Kubernetes нод
# group_vars/kubernetes.yml
collectors_enabled:
- system
- kubernetes
- docker
- uptime
collectors_config:
system:
interval: "30s"
timeout: "8s"
kubernetes:
interval: "60s"
timeout: "30s"
docker:
interval: "120s"
timeout: "15s"
uptime:
interval: "60s"
timeout: "5s"
Для GPU серверов
# group_vars/gpu_servers.yml
collectors_enabled:
- system
- gpu
- sensors
- uptime
collectors_config:
system:
interval: "30s"
timeout: "8s"
gpu:
interval: "60s"
timeout: "30s"
sensors:
interval: "120s"
timeout: "10s"
uptime:
interval: "60s"
timeout: "5s"
Преимущества
- Гибкость - легко настраивать коллекторы для разных типов серверов
- Масштабируемость - простое добавление новых групп и хостов
- Централизованное управление - все настройки в одном месте
- Автоматизация - автоматическая генерация конфигурации
- Совместимость - работает с существующими playbook
Совместимость
Система полностью совместима с существующими:
- Makefile командами (
make deploy-service
,make delete-service
) - Ansible playbook
- Структурой проекта
Группа [targets:children]
обеспечивает обратную совместимость с существующими скриптами.