Расскажу историю по мотивам утренней, как моя невнимательность и ошибки бесплатных СhatGPT и Qwen привели к тому, что я несколько часов ходил по кругу…
Как я уже писал, у меня была задача - собирать логи Mikrotik в Loki. Первое, что я сделал - задал вопрос на эту тему ChtaGPT, чтобы в целом понять структуру задачи. Он ответил вполне логично, что можно взять устаревший Promtail, или современный Alloy. И сразу предложил к нему конфигурацию.
Я, уже наученный опытом использования конфигураций от ИИ, сразу же пошёл в документацию, чтобы самому собрать нужные параметры. Меня интересовали параметры для раздела loki.source.syslog. Я этот поисковой запрос вбил в Яндексе, в надежде сразу попасть в документацию, как это обычно бывает. И я действительно попал в документацию Grafana, только для продукта Agent, который был предшественником Alloy. У них одинаковая структура конфигурации, просто у Alloy намного больше параметров. Но визуально они не отличаются.
Я собрал конфиг для syslog на основе этой документации. Запустил, всё работает. Оправляю логи с Mikrotik и получаю ошибку парсинга. Я опять пошел в ИИ и спросил его, в чём ошибка и как решить. Он логично отвечает, что Alloy ожидает RFC5424, а получает RFC3164-подобный формат от Микротика.
И дальше он предлагает параметр, который решает эту проблему:
syslog_format = "rfc3164"
❗️Но вставляет его не в тот раздел конфигурации. Я добавляю, запускаю, получаю ошибку конфигурации на параметр syslog_format, якобы его не существует. Пишу это в ИИ и он мне на голубом глазу отвечает:
В Grafana Alloy нет параметра syslog_format (я привёл аналогию с другими инструментами — здесь это не работает).
Возвращаюсь на вкладку документации для Agent, всё там проверяю и действительно не вижу этого параметра. Ну а дальше поехали всевозможные костыли, на которые я потратил кучу времени, но задачу таки решил через одно место.
И уже позже, когда я разбирался с метками на основе syslog полей, я попадаю в документацию Alloy и с удивлением вижу там:
The messages must be compliant with the RFC5424 syslog protocol or the RFC3164 BSD syslog protocol.
Это было как гром среди ясного неба. Я не понимаю, чем я вообще занимался и какую задачу решал. Сравнил две вкладки с документацией Agent и Alloy. Они очень похожи, так как последний является продолжением первого, просто для него добавились дополнительные параметры.
Сделать нужно было вот так:
loki.source.syslog "syslog_in" {
listener {
address = "0.0.0.0:1514"
protocol = "udp"
syslog_format = "rfc3164"
}
forward_to = [loki.process.syslog_process.receiver]
}
А ИИ предложил так:
loki.source.syslog "syslog_in" {
listener {
address = "0.0.0.0:1514"
protocol = "udp"
}
syslog_format = "rfc3164"
forward_to = [loki.process.syslog_process.receiver]
}
Поставил параметр не в ту секцию. Когда получил ошибку на syslog_format, с какого-то перепугу заявил, что его не существует. А я из-за невнимательности поверил и решил, что его действительно нет.
Параллельно я этот же вопрос решал с Qwen и он тоже не дал рабочей конфигурации для Alloy.
Такая вот для меня поучительная история получилась. Не знаю, как работают платные версии, но бесплатные явно путаются и в некоторых сферах работают плохо. Я так понял, что тут наложилось то, что был Promtail, Agent и теперь появился Alloy. Все 3 программы решают одинаковые задачи, существовали одновременно, конфигурации похожи, поэтому получается путаница. Проще было с самого начала сделать всё самому. Это бы заняло 10-15 минут. А в итоге несколько часов потратил. Правда, многому научился. И получил в итоге самый удобный вариант, о котором напишу в следующей заметке.
☝️ По сути тут ошибся я сам, с себя ответственности не снимаю. С ИИ какой спрос? Он постоянно ошибается. В итоге наложилось одно на другое. ИИ мог бы помочь мне, но сделал ещё хуже - пустил по ложному следу.
#ai