====== Grafana Loki + ИИ для мониторинга журналов, или Как не пропустить что-то неожиданное ====== * [[https://habr.com/ru/articles/1065610/|ИИ-агент 4 месяца дежурит на наших прод-логах]] ===== Реклама ===== * Как быстро на вопрос "все ли у нас в порядке" поможет ответить просмотр журналов системы? Обычно за "роем" сообщений "ничего не видно". Давайте разберемся, как можно выделить то, что действительно важно ===== Техническое задание ===== * На нашем вебинаре вы научитесь использовать Grafana Loki для сбора информации из журналов * Использовать ИИ агентов для обнаружения аномалий в логах * Использовать ИИ агентов для поиска первопричин инцидента (Root Cause Analysis RCA) ===== Запись вебинара ===== * Тэги: Prometheus, Grafana Loki, Observability, AI Agent * Рутуб: * Ютуб: ===== Шаг 1. Что у нас есть, для начала ===== * Курс [[Prometheus, Grafana, Loki - Observability]] (все необходимое для шага 2 и 3) * http://192.168.13.10/mail/ * http://192.168.13.10:9090/ * http://192.168.13.10:9093/ * http://192.168.13.10:3000/ * Рекламный вебинар [[Zabbix - мониторинг Web приложений]] * Рекламный вебинар [[Использование AI-агентов]] ===== На следующей итерации ==== * ? Удалить письма или оставить от алертов node-exporter * ? Сервис Prometheus [[Сервис Prometheus#collector.systemd]] + дашборд в графане ? rm /usr/local/bin/mywall.sh server.corp13.un:~# truncate -s 0 $(docker inspect --format='{{.LogPath}}' loki) ===== Шаг 2. Мониторинг Web приложения ===== * [[Средства программирования shell#Тестирование Web приложения на shell]] * Использование push-модели сбора данных [[Сервис Prometheus#prometheus-pushgateway]] * [[Сервис Prometheus#Отправка метрик из приложения]] (Пример 2) * [[Сервис Prometheus#Создание правил alertmanager]] * [[Средства программирования shell#Отправка сообщения на все консоли]] (json) * [[Сервис adnanh/webhook]] * [[Сервис Prometheus#Настройка маршрутизации уведомлений]] (Webhook) * [[Сервис Prometheus#Тестирование alertmanager]] ===== Шаг 3. От мониторинга к наблюдаемости ===== * Добавляем журнал RoundCube в [[Сервис OpenTelemetry#OpenTelemetry Collector]] * [[Сервис Loki]] (извлечение логов из Grafana Loki через API) * [[Язык программирования Python#openai_request_to_llm.py]] в каталоге /usr/local/bin/ # cat /usr/local/bin/mywall_through_llm.sh #!/bin/sh export BASE_URL=http://val.bmstu.ru:8080/v1 export API_KEY=1234567890abcdefg export MODEL_ID=ornith-1.5:9b #export BASE_URL=https://ai.api.cloud.yandex.net/v1 #export API_KEY=... #export MODEL_ID=gpt://b1gg4j6ru4esprat3uu7/deepseek-v4-flash/latest PROMPT="Проанализируй строки журнала и очень кратко объясни, почему не работает?" MESSAGE=$(curl -s http://localhost:3100/loki/api/v1/query_range \ --data-urlencode 'query={service_name=~".+"}' \ --data-urlencode 'limit=10' \ | jq -r '.data.result[].values[][1]' \ | /usr/local/bin/openai_request_to_llm.py $PROMPT) for MY_T in $(w | grep pts | awk '{print $2}') do echo "$MESSAGE" > /dev/$MY_T done * [[Сервис adnanh/webhook]] ===== Ваши вопросы? ===== ===== Подготовка к вебинару ===== vim /etc/prometheus/alertmanager.yml amtool check-config /etc/prometheus/alertmanager.yml service prometheus-alertmanager restart apt purge webhook rm /etc/webhook.conf rm /usr/local/bin/openai_request_to_llm.py apt purge python3-openai rm /usr/local/bin/mywall_through_llm.sh crontab -e rm /usr/local/bin/roundcube_monitor_stat_log.sh rm /usr/local/bin/roundcube_monitor.sh rm /etc/prometheus/first_rules.yml vim /etc/prometheus/prometheus.yml #-pushgateway promtool check config /etc/prometheus/prometheus.yml service prometheus restart crontab -e rm /usr/local/bin/roundcube_monitor_stat_log.sh apt purge bc rm /usr/local/bin/roundcube_monitor.sh apt purge prometheus-pushgateway * Исходная конфигурация [[Сервис OpenTelemetry#OpenTelemetry Collector]]