↩️ Назад

Категории

Локальный AI-агент для анализа логов (пример)

21.07.2026 | из категории: Нейросети

Локальный AI-агент для анализа логов (пример)

Современные системы генерируют гигабайты логов, и поиск в них иголки — задача, отнимающая часы. Что, если нейросеть сможет читать ваши логи и сразу говорить, в чём проблема и как её исправить?

В этой статье я покажу, как за 15 минут настроить локального AI-агента на базе Ollama и связки PHP + Zabbix. Система не отправляет данные в облако, работает полностью офлайн и использует мощную модель qwen3-30b-a3b-instruct.

⚙️ Архитектура решения

Всё строится на двух компонентах:

✅ Ключевой выбор — модель: мы используем qwen3-30b-a3b-instruct на API /v1/chat/completions (OpenAI-совместимый). Это мощная MoE-модель, которая даёт высокое качество анализа при хорошей скорости (~8.7 токенов/сек) на CPU.

📄 Скрипт AI Log Analyzer (PHP)

Весь код — один PHP-файл. В нём две кнопки:
1️⃣ «Забрать ошибки из логов» — парсит системные логи и ищет критические события.
2️⃣ «Отправить на анализ» — передаёт найденные ошибки в нейросеть и получает рекомендации.

Ниже — финальная версия скрипта с адаптацией под OpenAI API и моделью qwen3-30b-a3b-instruct.

🔧 Конфигурация

<?php
// ========== КОНФИГУРАЦИЯ ==========
define('OLLAMA_HOST', 'http://10.10.33.170:8081');   // AI-бекенд
define('MODEL_NAME', 'qwen3-30b-a3b-instruct');      // Мощная MoE-модель
define('MAX_TOKENS', 300);
define('TIMEOUT', 300);                              // 5 минут

// Файлы логов для анализа
define('LOG_FILES', [
    '/var/log/syslog',
    '/var/log/auth.log',
    '/var/log/nginx/error.log',
    '/var/log/zabbix/zabbix_server.log',
]);

// Ключевые слова для поиска ошибок
define('ERROR_KEYWORDS', ['error', 'fatal', 'panic', 'critical', 'failed', 'exception', 'timeout']);

🧠 Функция отправки в нейросеть

Используется стандарт OpenAI Chat Completions (/v1/chat/completions).

function analyzeWithAI($text) {
    if (empty($text)) return "⚠️ Нет ошибок для анализа.";

    $url = OLLAMA_HOST . '/v1/chat/completions';

    $prompt = "Проанализируй ошибки из логов. Дай краткий ответ (3-4 предложения):
• Что сломалось?
• Где?
• Что делать?

Ошибки:
" . $text;

    $data = [
        'model' => MODEL_NAME,
        'messages' => [
            ['role' => 'user', 'content' => $prompt]
        ],
        'temperature' => 0.1,
        'max_tokens' => MAX_TOKENS,
        'stream' => false
    ];

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    curl_close($ch);

    if ($error) return "⚠️ Ошибка соединения: " . $error;
    if ($httpCode !== 200) return "⚠️ Ошибка API (HTTP $httpCode)";

    $decoded = json_decode($response, true);
    return $decoded['choices'][0]['message']['content'] ?? "⚠️ Пустой ответ";
}

⚡ Производительность в цифрах

Мы провели замеры на сервере с 60 ГБ RAM и CPU без GPU. Модель держится в памяти благодаря OLLAMA_KEEP_ALIVE=86400.

💡 Совет: Для более быстрого анализа логов можно использовать qwen3:8b (в 2–3 раза быстрее). Но мы выбрали qwen3-30b-a3b-instruct ради качества — она лучше понимает сложные сценарии и даёт более точные рекомендации.

🚀 Как запустить у себя

  1. Установите Ollama и скачайте модель:
    ollama pull qwen3-30b-a3b-instruct
  2. Запустите Ollama с правильными переменными:
    OLLAMA_HOST=0.0.0.0 OLLAMA_KEEP_ALIVE=86400 ollama serve
  3. Разместите PHP-скрипт в веб-директории Zabbix:
    /usr/share/zabbix/ai_log_analyzer.php
  4. Настройте API-адрес и модель в конфиге скрипта.
  5. Откройте в браузере: http://ваш-zabbix/ai_log_analyzer.php

📸 Как это выглядит в работе

Вы открываете страницу, видите две кнопки. Жмёте «Забрать ошибки» — скрипт читает последние 100 строк из логов и показывает ошибки. Затем «Отправить на анализ» — через 10–20 секунд нейросеть выдаёт структурированный ответ:

• ГЛАВНАЯ ПРОБЛЕМА: Nginx не может подключиться к бэкенду (connection refused)
• ГДЕ: /var/log/nginx/error.log
• ЧТО ДЕЛАТЬ:
  1. Проверить, запущен ли бэкенд-сервис (systemctl status app)
  2. Проверить порт в конфиге nginx (proxy_pass)
  3. Посмотреть файрвол (ufw allow 8080)

📌 Заключение

Мы построили полностью локального AI-агента для мониторинга, который работает без интернета, не передаёт данные вовне и даёт реально полезные рекомендации. Это не игрушка — это готовый инструмент, который уже помогает анализировать логи в инфраструктуре.

Используйте его как основу для своих AI-решений в мониторинге. Вы можете легко заменить модель, добавить новые источники логов или интегрировать с другими системами.

✅ Итог: 15 минут на настройку, 0 рублей за облачные API, полный контроль над данными и готовый агент, который понимает вашу инфраструктуру.
Теги: #AI #devops #llama.cpp #LLM #php #Qeen #SelfHosted #zabbix
👍 Оцените статью
Всего голосов: 0



Категории:

Категории

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку

Посетителей сегодня: 0
о блоге | карта блога | 📡 Подписаться на RSS

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA