Отправка логов сервера себе на почту с помощью mpack

Бывают такие случаи когда физического доступа к своему серверу вы не имеете (чаще всего физического доступа вы вообще не имеете), а узнать как у него дела хочется. Есть несколько способов зайти в гости: первый это SSH сервер. В принципе довольно удобно если форвадить иксы и у вас толстый канал в интернет. Но что делать если вы находитесь в месте где нет нормального интернета и в руках только сотовый телефон? Заходить через PuTTY и смотреть километры логов с мобилы просто жесть, говорю это вам как человек опробовавший данный метод. Во первых это очень неудобно, а во вторых медленно, нудно и дорого. Способ второй: создать архив с логами и отправить его как вложение к письму. Для этого нам понадобится zip-архиватор, маленькая безGUI’ная программа mail входящая в пакет mailx дистрибутива Arch Linux. Ну естественно установленный и настроенный postfix (sendmail). И собственно сам mpack который будет формировать вложения. В репозиториях Arch Linux его нет, поэтому надо собрать пакет из AUR Можно также использовать консольный почтовик Mutt, но мне кажется ставить такого монстра для отправки вложений по скрипту это извращение. Mpack имеет одну особенность. Не знаю как другим, но для меня использование программой директории /usr/tmp для хранения временных файлов как то очень удивило. Скажу более, я даже проклял про себя девелоперов сей проги, потому что очень долго с ней возился. Например смотрим usage mpack:

[kernel@arch ~]$ mpack An input file must be specified mpack version 1.6 usage: mpack [-s subj] [-d file] [-m maxsize]
[-c content-type] file address... mpack [-s subj] [-d file] [-m maxsize] [-c content-type] -o file file mpack [-s subj] [-d file]
[-m maxsize] [-c content-type] -n groups file

Что человек подумает когда это увидит? Правильно, напишет в консоли что то типа

mpack -s "мое первое письмо" -d ~/somefile.jpg [email protected]

Вобщем синтаксис не сложный, но вот при пробе отправки вложения mpack ругался на то что не может найти файл. Мне показалось это чуть ли не сверхестественным, потому что был указан абсолютный путь до него. Проблема решилась чтением мана mpack (в нем есть информация о том какую директорию прога использует для временных файлов) и созданием симлинка на /tmp

sudo ln -s /tmp /usr/tmp

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

sudo cat /var/log/nginx/access.log | mail -s "Log" [email protected]

но иногда логи весят слишком много и лучше из засунуть в архив. Напишем простейший скрипт для архивации и отправки:

#!/bin/bash
sudo zip -9 ~/log.zip /var/log/nginx/access.log /var/log/nginx/error.log
sleep 5
mpack -s logs ~/log.zip
[email protected]

Если вы это читаете то объяснять содержание скрипта не надо. Стиль написания конечно желает лучшего, но главное работает. Потом засовываем этот скрипт в cron и наблюдаем как начинают приходить логи на указанный адрес каждый час/день/неделю. Писалось в основном для того чтобы другие нашли информацию по работе с mpack быстрее чем я. Ну и маны конечно никто не отменял.

Оцените статью