LINUX.ORG.RU
Форум — Admin  

Сколько ошибок с прошлого раза

 , ,


0

2

Программа создает новые и дописывает прежние файлы журналов в /var/log/app/*.log

Необходимо усовершенстовать скрипт (или изменить подход), что бы считать сколько ошибок появилось с прошлого запуска.

grep -r "ERROR" /var/log/app/|wc -l

★★★★★

Последнее исправление: petav (всего исправлений: 1)

Если «после предыдущей» имеется в виду конкретное время (в unix time или там в YYYY-MM-DDTHH:MM:SS, или ещё как), то

grep -A 999999999 "ВРЕМЯ_ТВОЕГО_ПРОШЛОГО_ЗАПУСКА" имя_файла

Если такой инфы нет, то… никак? Ну или нужны подробности, что именно разделяет записи в логе от прошлогоо запуска, позапрошлого и нынешнего.

CrX ★★★★★
()
Ответ на: комментарий от CrX

Понял.

Пример строки в файле:

[ERROR] 2026/09/26 05:30:51 text
Милисекунды возможно добавить.

petav ★★★★★
() автор топика

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

Правильный подход такой - запоминать размер файла, а в следующий раз проверять только то, что к нему добавилось. Так же, возможно, следует учесть, что логи могут почистить. Поскольку ты не сообщил подробностей, то варианта в целом два:

1) Если всё это происходит в рамках одного сеанса работы сервера (т.е. комп не перезапускается в середине), то удобнее будет сделать демоном, который открывает все логфайлы в этой директории, следит за их размерами и парсит новопоявившиеся строки. В том числе - обрабатывает события «размер уменьшился» и «у файла сменился номер inode» - это значит что лог скорее всего ротировали.

2) Если надо более долговременно, то можно рядом с каждым qwe.log создавать qwe.metadata и хранить в нём последний виденный его размер и inode number.

firkax ★★★★★
()

или изменить подход

This. Не пытайтесь изобрести Elastic/Opensearch. Его давно уже написали.

ugoday ★★★★★
()

После завершения приложения добавлять в лог разделитель. По нему (им/между ними) и вычленять. Если саму программу трогать нельзя и она просто наваливает в лог всё подряд.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Постановка вопроса подсказывает, что в данном случае автору будет проще использовать избыточно мощные готовые инструменты. Иначе бы он просто написал скрипт на awk и не беспокоил бы благородное собрание.

ugoday ★★★★★
()

Спасибо всем. Проверил себя. В логах есть признаки, что части программы завершили работу, именно эти файлы (завершенные) и буду обрабатывать на предмет наличия ошибок.

petav ★★★★★
() автор топика
Последнее исправление: petav (всего исправлений: 2)

Можно написать скрипт, который бы писал сколько ошибок произошло за каждый час/день/неделю/итд. Типа гистограммы.

kaldeon ★★
()

Если это будет складываться в какую-то систему мониторинга типа прометеуса, то там есть метрика типа counter, а разница между отсчетами считается при выборке и отображении

cobold ★★★★★
()

Короче, судя по этому и прошлому запросу, тебе таки нужен fluentbit.

Впрочем, с удовольствием побуду зрителем на этой увлекательном мероприятии, если надо все на коленке писать.

bbc69
()
Ответ на: комментарий от LINUX-ORG-RU

Я бы добавил, что даже если так, есть смысл посмотреть на готовую реализацию и утащить себе например архитектуру. А не выдумывать, как будто эта задача только ему в голову пришла.

bbc69
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.