Я запускаю Zabbix-сервер на Ubuntu 16.04 в месте с очень плохим энергоснабжением. Даже с ИБП сервер Zabbix часто выходит из строя. Поскольку все здание теряет питание, теперь у меня есть способ узнать, как долго сервер Zabbix не работал.
Руководству необходимо знать, как долго сервер не работал. Как я могу прочитать файлы журнала (с помощью сценария или отдельной команды), чтобы определить время простоя сервера Zabbix?
Если вы говорите ретроспективно, то при разумных значениях по умолчанию в ubuntu 16.04 у вас есть следующие параметры (и, возможно, другие ... возможно, auditd?) Для проверки активности:
/var/log/{auth,kern,syslog}.log
и т.дЯ думаю, что сохранение журналов загрузки отключено в ubuntu, поэтому journalctl -b
вероятно, не так уж и полезно. Но ничто не мешает вам собирать записи журнала и видеть, какие периоды являются «простоями» из всех журналов, связанных с cron и демонами.
Следующее будет выгружать количество записей журнала в журнале systemd почасовыми частями за 1 неделю. И вы можете легко увидеть, был ли простой ...
START_STRING="1 week ago"
FORMAT="%Y-%m-%d %H:%M:%S"
next_date=$(date +%s -d "$START_STRING")
while [ "$next_date" -le "$(date +%s)" ]; do
curr_date=$next_date
next_date=$(date +%s -d "@$((next_date + 3600))")
curr_data_iso=$(date +"$FORMAT" -d "@$curr_date")
next_date_iso=$(date +"$FORMAT" -d "@$next_date")
echo -n "$curr_data_iso $next_date_iso "
count=$(journalctl --quiet --no-pager --since "$curr_data_iso" --until "$next_date_iso" | wc -l )
echo -n " $count "
[ $count -gt 100 ] && nummer=100 || nummer=$count
printf '=%.0s' $(seq 1 $nummer)
echo ""
done
echo ""
вывод примерно такой
2018-02-05 03:44:26 2018-02-05 04:44:26 15 ===============
2018-02-05 04:44:26 2018-02-05 05:44:26 9 =========
2018-02-05 05:44:26 2018-02-05 06:44:26 18 ==================
2018-02-05 06:44:26 2018-02-05 07:44:26 9 =========
2018-02-05 07:44:26 2018-02-05 08:44:26 9 =========
2018-02-05 08:44:26 2018-02-05 09:44:26 9 =========
2018-02-05 09:44:26 2018-02-05 10:44:26 9 =========
2018-02-05 10:44:26 2018-02-05 11:44:26 121 ====================================================================================================
2018-02-05 11:44:26 2018-02-05 12:44:26 9 =========
2018-02-05 12:44:26 2018-02-05 13:44:26 9 =========
2018-02-05 13:44:26 2018-02-05 14:44:26 9 =========
2018-02-05 14:44:26 2018-02-05 15:44:26 9 =========
2018-02-05 15:44:26 2018-02-05 16:44:26 9 =========
2018-02-05 16:44:26 2018-02-05 17:44:26 9 =========
2018-02-05 17:44:26 2018-02-05 18:44:26 9 =========
2018-02-05 18:44:26 2018-02-05 19:44:26 9 =========
2018-02-05 19:44:26 2018-02-05 20:44:26 12 ============
2018-02-05 20:44:26 2018-02-05 21:44:26 9 =========
2018-02-05 21:44:26 2018-02-05 22:44:26 11 ===========
2018-02-05 22:44:26 2018-02-05 23:44:26 9 =========
2018-02-05 23:44:26 2018-02-06 00:44:26 9 =========
2018-02-06 00:44:26 2018-02-06 01:44:26 9 =========
2018-02-06 01:44:26 2018-02-06 02:44:26 16 ================
2018-02-06 02:44:26 2018-02-06 03:44:26 9 =========
2018-02-06 03:44:26 2018-02-06 04:44:26 9 =========
2018-02-06 04:44:26 2018-02-06 05:44:26 0 =
Zabbix по умолчанию контролирует себя. Если он запущен, у него будут данные; если нет, то не будет. Ищите пробелы в данных.
Мне удалось прочитать файлы журнала Ubuntu, используя следующую команду.
grep -E "syslogd:.*(exiting|start)" syslog
Это дало мне строки из файлов журнала, указывающие дату и время, когда сервер выключился, а затем загрузился. А пока мне нужно составить таблицу со временем для расчета времени простоя. Может быть, я когда-нибудь напишу сценарий, чтобы автоматизировать это.