SensusAgent/docs/ansible_groups.md
Sergey Antropoff 7316b507ad feat: добавлена гибкая конфигурация коллекторов через Ansible группы
- Создана система групповых переменных для настройки коллекторов
- Добавлены группы: proxmox, proxvms, standalone
- Создан шаблон config.yaml.j2 для автоматической генерации конфигурации
- Обновлен Ansible playbook для использования шаблонов
- Добавлен скрипт тестирования генерации конфигурации
- Создана подробная документация по новой системе
- Обновлен inventory.ini с группировкой хостов

Группы коллекторов:
- proxmox: proxcluster, proxnode, proxvms, uptime
- proxvms: proxvmsystem, uptime
- standalone: system, hba, sensors, uptime

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-09-15 14:50:51 +03:00

7.4 KiB
Raw Blame History

Гибкая конфигурация коллекторов через 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. Создание новой группы

  1. Добавить группу в inventory.ini:
[new_group]
server1 ansible_host=1.2.3.4 ansible_user=root
  1. Создать файл group_vars/new_group.yml:
collectors_enabled:
  - system
  - uptime

collectors_config:
  system:
    interval: "60s"
    timeout: "10s"
  uptime:
    interval: "120s"
    timeout: "5s"
  1. Добавить в [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-raw/playbook.yml --limit proxmox

Примеры конфигураций

Для 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"

Преимущества

  1. Гибкость - легко настраивать коллекторы для разных типов серверов
  2. Масштабируемость - простое добавление новых групп и хостов
  3. Централизованное управление - все настройки в одном месте
  4. Автоматизация - автоматическая генерация конфигурации
  5. Совместимость - работает с существующими playbook

Совместимость

Система полностью совместима с существующими:

  • Makefile командами (make deploy-service, make delete-service)
  • Ansible playbook
  • Структурой проекта

Группа [targets:children] обеспечивает обратную совместимость с существующими скриптами.