Агент Qihu (qihu-agent)
Агент Qihu — это фоновая служба, устанавливаемая на целевые серверы. Он отвечает за сбор телеметрии, мониторинг системных ресурсов и гарантированную доставку логов/алертов на центральный сервер Qihu.
Обзор архитектуры
Платформа предоставляет две версии агента в зависимости от ваших задач:
Легковесный бинарный демон (`qihu-agent`), написанный на Go. Он работает как локальный прокси-сервер (порт `18080`), принимает события от ваших приложений, буферизирует их во встроенную SQLite базу данных при потере связи и отправляет на Qihu.
Служба сбора системной телеметрии (`qihu_agent.py`). Опрашивает загрузку CPU, использование RAM, свободное место на дисках, состояние LXC/VM контейнеров Proxmox, а также снимает показатели NVIDIA GPU с помощью `nvidia-smi`.
Установка
Установка выполняется в одну строчку с автоматической регистрацией systemd-службы. Поддерживается прямая привязка к проекту через slug и API-токен:
curl -sSL https://qihu.ru/agent/install.sh | sudo bash -s -- \
--project your_project_slug \
--token qihu_tok_xxxxxxxxxxxxxxxxСкрипт автоматически определит архитектуру вашего процессора (amd64 / arm64), скачает актуальную версию Go-агента, создаст системного пользователя `qihu-agent` и запустит фоновую службу.
Конфигурация
Все параметры конфигурации хранятся в файле /etc/qihu-agent/config.env:
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
| QIHU_URL | Адрес центрального сервера Qihu. | `https://qihu.ru` |
| QIHU_PROJECT | Идентификатор (slug) вашего проекта. | `обязательно` |
| QIHU_API_KEY | Секретный токен аутентификации проекта. | `обязательно` |
| LISTEN_ADDR | Адрес и порт локального веб-сервера. | `127.0.0.1:18080` |
| BUFFER_PATH | Путь к файлу SQLite базы данных для буфера. | `/var/lib/qihu-agent/buffer.db` |
Мониторинг GPU Инстансов
При обнаружении утилиты `nvidia-smi` Python-агент автоматически начинает собирать следующие метрики каждую секунду и передавать их в составе пульса (heartbeat):
Для запуска системного мониторинга на GPU сервере скачайте скрипт агента и пропишите его запуск через systemd:
# Скачивание агента
wget -O /usr/local/bin/qihu_agent.py https://qihu.ru/releases/agent/qihu_agent.py
chmod +x /usr/local/bin/qihu_agent.pyПример конфигурации службы (/etc/systemd/system/qihu-agent.service)
[Unit]
Description=Qihu System and GPU Telemetry Agent
After=network.target
[Service]
Type=simple
User=root
Environment=QIHU_URL=https://qihu.ru
Environment=QIHU_PROJECT=your_project_slug
Environment=QIHU_API_KEY=qihu_tok_xxxxxxxxxxxxxxxx
ExecStart=/usr/bin/python3 /usr/local/bin/qihu_agent.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetНадежность и Буферизация
Если центральный сервер Qihu недоступен (проблемы на канале связи, технические работы), агент не теряет события:
- Все события локально записываются во встроенную базу данных SQLite.
- Фоновый поток с периодичностью в 5 секунд проверяет доступность центрального API.
- После восстановления связи накопленные события отправляются пакетами по 20 штук в хронологическом порядке.
- Потребление диска строго ограничено индексированием и быстрой очисткой отправленных записей.