Как создать ежемесячный отчет о доступности в Linux?
Я хотел отправить ежемесячный отчет о работоспособности своим клиентам по электронной почте. Поможет ли мне кто-нибудь, как создать ежемесячный отчет.
2 ответа
В качестве краткой заметки к превосходному ответу Ринзвинда о Tuptime.
Пакет доступен в официальном репозитории, поэтому его можно установить с помощью:
# apt-get install tuptime
Предполагая, что вы отправляете отчет в день 1 каждого месяца, это следующие шаги:
Получите метку времени первого дня месяца назад с 00:00 часов:
$ date -d "-1 month 00:00" +%s
1514761200
Получите метку времени последнего дня предыдущего месяца с 23:59 часов:
$ date -d "this month -1 second 00:00" +%s
1517439599
Используйте эти числа с аргументами tsince и tuntil:
$ tuptime --tsince 1514761200 --tuntil 1517439599
System startups: 25 since 00:00:00 01/01/18 until 23:59:59 31/01/18
System shutdowns: 24 ok - 1 bad
System uptime: 4.84 % - 1 day, 12 hours, 0 minutes and 24 seconds
System downtime: 95.16 % - 29 days, 11 hours, 59 minutes and 36 seconds
System life: 31 days, 0 hours, 0 minutes and 0 seconds
Largest uptime: 3 hours, 37 minutes and 41 seconds from 19:00:15 16/01/18
Shortest uptime: 1 minute and 5 seconds from 16:40:13 19/01/18
Average uptime: 1 hour, 26 minutes and 25 seconds
Largest downtime: 4 days, 9 hours, 48 minutes and 21 seconds from 14:11:38 27/01/18
Shortest downtime: 11 seconds from 16:40:02 19/01/18
Average downtime: 1 day, 4 hours, 19 minutes and 11 seconds
Current uptime: 48 minutes and 19 seconds since 18:50:03 01/02/18
Теперь вы можете получить этот отчет или один из других доступных, таких как формат таблицы или списка, и отправить его клиентам.
Существует инструмент под названием "tuptime", который генерирует информацию о "времени безотказной работы", но с гораздо большей информацией по сравнению с одной строкой, показывающей "время безотказной работы".
Со страницы GitHub:
Базовая установка и использование
Клон репо
git clone https://github.com/rfrail3/tuptime.git
Скопируйте
tuptime
файл находится подlatest/
каталог для/usr/bin/
и сделать его исполняемымcp tuptime/src/tuptime /usr/bin/tuptime chmod ugo+x /usr/bin/tuptime
Убедитесь, что система прошла предварительные условия
python 3.X
Запустите сначала с привилегированным пользователем
tuptime
Добавлен мной дополнительно: сменить владельца и группу typtime
для вашего пользователя с:
sudo chown $USER:$USER /usr/bin/tuptime
и вы можете запустить его без доступа sudo / root.
По ссылке одна из ключевых точек:
- Он регистрирует время в базе данных sqlite. Любое другое программное обеспечение может использовать его. Спецификации находятся в tuptime-manual.txt. Кроме того, он имеет опцию для вывода регистров в секундах и эпохах (-s) или / и в формате csv, легко передавая их другим командам.
Так что, если вы можете кодировать, вы можете создавать свои собственные отчеты. Или даже подключите базу данных к чему-то вроде jasperstudio и создайте шаблон.
В противном случае команда tuptime
покажет это:
System startups: 1 since 21:54:09 24/09/15
System shutdowns: 0 ok - 0 bad
System uptime: 100.0 % - 21 minutes and 30 seconds
System downtime: 0.0 % - 0 seconds
System life: 21 minutes and 30 seconds
Largest uptime: 21 minutes and 30 seconds from 21:54:09 24/09/15
Shortest uptime: 21 minutes and 30 seconds from 21:54:09 24/09/15
Average uptime: 21 minutes and 30 seconds
Largest downtime: 0 seconds
Shortest downtime: 0 seconds
Average downtime: 0 seconds
Current uptime: 21 minutes and 30 seconds since 21:54:09 24/09/15
или же tuptime --table
покажет табличный вывод:
No. Startup Date Uptime Shutdown Date End Downtime
1 10:15:27 08/08/15 42 seconds 10:16:09 08/08/15 OK 16 seconds
2 10:16:26 08/08/15 49 seconds 10:17:15 08/08/15 OK 16 seconds
3 10:17:32 08/08/15 5 minutes and 47 seconds 10:23:19 08/08/15 OK 16 seconds
4 10:23:36 08/08/15 9 seconds 10:23:45 08/08/15 BAD 42 seconds
5 10:24:28 08/08/15 2 hours, 9 minutes and 27 seconds 12:33:55 08/08/15 OK 41 minutes and 44 seconds
. . .
Упомянутое руководство tuptime содержит массу полезной информации.
Вы можете отправить вывод в файл, добавив >> /home/$USER/Downloads/tuptime.log
в команду. Этот текстовый файл может быть отправлен клиентам.
Там нет нигде упоминания, если tuptime
учитывает время приостановки системы. Если это не так, вы можете использовать этот скрипт для расчета времени приостановки и вычитания его из времени безотказной работы:
$ suspendtime
Oct 31 05:55:19 to Oct 31 16:54:26 lasting 39,547 seconds
Oct 31 23:21:21 to Nov 01 04:29:12 lasting 18,471 seconds
Nov 01 05:51:27 to Nov 01 17:08:34 lasting 40,627 seconds
Nov 02 00:01:33 to Nov 02 10:28:46 lasting 37,633 seconds
Nov 02 18:15:59 to Nov 02 19:10:14 lasting 3,255 seconds
Nov 02 21:17:33 to Nov 03 05:31:54 lasting 33,261 seconds
Nov 03 12:06:39 to Nov 03 14:22:50 lasting 8,171 seconds
Nov 03 22:28:12 to Nov 04 04:17:13 lasting 20,941 seconds
Nov 04 05:49:40 to Nov 04 16:48:52 lasting 39,552 seconds
Nov 04 21:45:48 to Nov 05 04:19:26 lasting 23,618 seconds
Nov 05 05:52:05 to Nov 05 16:32:38 lasting 38,433 seconds
Nov 05 21:12:18 to Nov 06 04:16:50 lasting 25,472 seconds
Nov 06 05:50:45 to Nov 06 16:22:54 lasting 37,929 seconds
Linux uptime 576,297 seconds (6 Days 16 Hours 4 Minutes 57 Seconds)
13 Suspends 366,910 seconds (4 Days 5 Hours 55 Minutes 10 Seconds)
Real uptime 209,387 seconds (2 Days 10 Hours 9 Minutes 47 Seconds)
Обратите внимание, что сценарий только смотрит на journalctl
для текущей загрузки. Вам нужно включить мультизагрузочную регистрацию в jounralctl:
Также обратите внимание, что связанный скрипт bash необходимо будет изменить для расчета предыдущих загрузок.