====== 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]]