Назад | Перейти на главную страницу

Как долго Zabbix был офлайн?

Я запускаю Zabbix-сервер на Ubuntu 16.04 в месте с очень плохим энергоснабжением. Даже с ИБП сервер Zabbix часто выходит из строя. Поскольку все здание теряет питание, теперь у меня есть способ узнать, как долго сервер Zabbix не работал.

Руководству необходимо знать, как долго сервер не работал. Как я могу прочитать файлы журнала (с помощью сценария или отдельной команды), чтобы определить время простоя сервера Zabbix?

Если вы говорите ретроспективно, то при разумных значениях по умолчанию в ubuntu 16.04 у вас есть следующие параметры (и, возможно, другие ... возможно, auditd?) Для проверки активности:

  1. журнал systemd
  2. файлы журнала в /var/log/{auth,kern,syslog}.log и т.д
  3. сам Zabbix сервер

journalctl

Я думаю, что сохранение журналов загрузки отключено в 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

Это дало мне строки из файлов журнала, указывающие дату и время, когда сервер выключился, а затем загрузился. А пока мне нужно составить таблицу со временем для расчета времени простоя. Может быть, я когда-нибудь напишу сценарий, чтобы автоматизировать это.