LINUX.ORG.RU
ФорумAdmin

Cron - куда отправлять вывод и задача централизованного сбора?

 , , ,


0

3

Добрый день.

Такой вопрос - есть множество серверов - железных и виртуальных. На каждом сервере есть множество заданий cron. Вывод всех заданий прилетает на почтовый ящик.

Это создает проблему, откроешь ящик с утра, а там 500+ писем. Сразу не понятно - какой статус - все задание прошли успешно или есть не успешные задания?

Посмотрел как это решить. В интернете рекомендуют использовать healthchecks. Понравился дашбоард - посмотрел и сразу понятно какое задание отработало, какое с ошибками.

Вопрос - возможно, кто-то нашел и другие решения, что может написать?

★★★

можно использовать на серверах rsyslog, перекидывать все логи на одну машину, а там грепами смотреть, что и где пошло нетак

IvanRia
()

Это создает проблему, откроешь ящик с утра, а там 500+ писем. Сразу не понятно - какой статус - все задание прошли успешно или есть не успешные задания?

Нужно делать нормальный выхлоп и отправлять только проблемные отчеты, а не спамить всем подряд, ИМХО.

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

Нужно делать нормальный выхлоп и отправлять только проблемные отчеты

Поддерживаю.

Если задание выполнилось успешно, ничего никуда не отправлять, если сфейлилось — отправлять статус, stdout и stderr.

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

Централизованное хранилище syslog это, безусловно, нужно, но к задаче относится весьма косвенно. Да, всё должно логгироваться, но слать отчёты в syslog — крайне сомнительная затея.

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

крайне сомнительная затея.

может быть, без сомнения, слать на почту все, глупо, гораздо разумнее слать только сбойные задачи, но для себя я бы слал только сбойные задачи на центральный сервер syslog, с логами мне проще работать, чем с почтой

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

Я думал о подобном. Но отправлять вывод cron на loki (уже настроен) а там в локи делать правила и настраивать alertmanager по ключевым параметрам - статус задачи, количество сообщение в единицу времени.

Но не могу понять сколько места займет на сервере.

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

Если я правильно понял, то ты предлагаешь сделать следующее

output=$(somecommand)

if [ $_ ne 0 ]; then
echo "Some error found - $_"
fi
Nurmukh ★★★
() автор топика
Ответ на: комментарий от IvanRia

Ещё раз: отчёты != логи. syslog не для отчётов.

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

$_

Дичь какая-то…

#!/bin/sh

tmpfile="$(mktemp -q /tmp/myprog.XXXXXXXX)"
[ ${?} -eq 0 ] || exit 127

end() {
    rm -f "${tmpfile}" >/dev/null 2>&1
}
trap end EXIT INT ABRT TERM

${*} > "${tmpfile}" 2>&1
exitcode="${?}"

[ ${exitcode} -eq 0 ] || cat "${tmpfile}"

exit ${exitcode}
mord0d ★★★★★
()

Не полагайтесь на email’ы от крона, а шлите их ручками с meaningful subject (в идеале из под враппера который добавляет префиксы «OK:», «WARNING:», «ERROR:» итд). Потом можно настроить фильтры на клиенте чтобы это автоматически раскладывалось по «папочкам». И будет Вам счастье ;) У меня таких несколько сотен в день прилетает. На подавляющее большинство со статусом «OK» смотреть приходится крайне редко, но иногда полезно иметь «глубокую» историю при «разборе полётов».

ПыСы. Syslog тротлит и теряет сообщения. Вы это сразу увидите если много логировать будете.

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

Спасибо. Думаю, что можно отправить логи в кафку, оттуда в Эластик.

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

Спасибо за пример. Нашел новое для себя в виде trap end. Буду изучать.

Nurmukh ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.