Удобную штуку всё таки придумали — лог-файлы. Всегда можно «вернуться в прошлое» и отыскать нужное событие. Особенно полезными лог-файлы оказываются при всякого рода расследованиях: причин нестабильности работы какого-нибудь демона или даже попыток несанкционированного проникновения в систему. Однако частенько бывает так, что «курить логи» администратор начинает уже слишком поздно, когда система пришла в нерабочее состояние. А ведь в большинстве случаев неприятному событию предшествует громкое «кричание» системы в лог-файлах, на которое если вовремя среагировать, можно много чего предотвратить. Конечно же, ежедневное рассматривание содержимого лог-файлов системы — занятие нереальное и глупое, особенно если объёмы логов составляют не пять строчек, да и что нам, время девать некуда? В сегодняшней заметке речь пойдёт об известной многим администраторам  автоматическом просмотрщике логов logwatch.

Задачей logwatch является избавить вас от необходимости создавать велосипеды в области автоматического анализа лог-файлов. Являясь модульной по своей архитектуре, утилита предоставляет вам возможность легко (если знаете Perl) расширять перечень анализируемых типов лог-файлов. Перечень же типов лог-файлов, которые logwatch умеет анализировать «из коробки», впечатляет: начиная от /var/log/messages и заканчивая логами CISCO-оборудования. Результаты анализа утилита группирует и помещает в отчёт, который может как выводиться в stdout, так и отправляться электронной почтой. Формат отчёта предлагается в двух вариантах: plaintext или HTML, при этом вы можете регулировать уровень детализации отчёта исходя из собственных потребностей.

Установка

Установить утилиту можно либо из исходников, либо же пользуясь штатным менеджером пакетов, благо logwatch присутствует в репозиториях всех популярных дистрибутивов. В Ubuntu/Debian утилита легко устанавливается командой:

# apt-get install logwatch

В процессе установки из пакета в Debian/Ubuntu logwatch автоматически не создаёт нужного ей для хранения временных файлов каталога /var/cache/logwatch, и вам необходимо сделать это самостоятельно:

# mkdir /var/cache/logwatch

Файлы конфигурации logwatch по умолчанию находятся в /usr/share/logwatch, и если вы намерены редактировать какой-либо из них, то делать это нужно не с оригинальным файлом, а с его копии, размещённой в каталоге /etc/logwatch.

Настройка

Основной файл конфигурации logwatch находится в /usr/share/logwatch/default.conf/logwatch.conf и прежде, чем редактировать, скопируйте его:

# cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

Файл logwatch.conf очень хорошо само-документирован и настолько прост, что у вас не должно быть сложностей с его исправлением.  Среди опций, обычно затрагиваемых при конфигурации, можно отметить следующие:

  • LogDir — путь к каталогу, в котором программа будет искать файлы, обычно это /var/log;
  • TmpDir — путь к каталогу, в котором утилита будет размещать временные файлы. По умолчанию это /var/cache/logwatch, который мы с вами создали ранее;
  • Output — указывает программе метод вывода отчёта. Может быть: stdout (в поток стандартного вывода), mail (почтовым сообщением) или file (в файл);
  • Format — определяет формат отчёта. Может иметь значение text или html;
  • MailTo — определяет адрес получателя отчёта, если Output = mail;
  • MailFrom — определяет адрес отправителя отчёта, если Output = mail;
  • Filename — задаёт путь к файлу отчёта, если Ouput = file;
  • Archives — используется для указания утилите необходимости анализа не только текущих лог-файлов, но и архивных (например messages.1, messages.2.gz и т. п.). Принимает значения Yes или No;
  • Range — за какой период времени отбирать анализируемые сообщения: All, Today или Yesterday;
  • Detail — определяет уровень детализации отчёта. Может принимать как числовые значения от 0 (минимум детализации) до 10 (максимум). Также можно использовать синонимы: Low, Med и High, которые соответственно равны числовым 0, 5 и 10;
  • Service — этот параметр указывает программе имя службы, логи которой необходимо анализировать. Может иметь значение All или имя службы (имя файла из каталога /usr/share/logwatch/scripts/services/). Если необходимо анализировать логи более одной службы, но не всех, то опцию Service следует определить несколько раз с указанием имён нужных служб, по одной за раз. Если же необходимо анализировать лог-файлы всех служб, кроме некоторых, то необходимо сначала определить Service = All, а затем перечислить мена ненужных служб, предварив их знаком «минус», например: Service = «-zz-network»;

Настраиваемые параметры анализатора для каждой службы  можно найти в /usr/share/logwatch/default.conf/services, а пути размещения лог-файлов каждой службы — в /usr/share/logwatch/default.conf/logfiles. Обычно значений параметров, определённых в этих файлах, достаточно для корректной работы, если в вашей системе все файлы хранятся в каталогах по умолчанию и имеют стандартные имена. Если же у вас в системе некоторые файлы расположены в специфических местах, то вам следует указать logwatch, где их искать. Рассмотрим на примере лог-файлов Apache, конфигурация для которого расположена в файле /usr/share/logwatch/default.conf/logfiles/http:

########################################################
#   Define log file group for httpd
########################################################
 # What actual file?  Defaults to LogPath if not absolute path....
LogFile=httpd/*access_log
LogFile=apache/*access.log.1
LogFile=apache/*access.log
LogFile=apache2/*access.log.1
LogFile=apache2/*access.log
LogFile=apache2/*access_log
LogFile=apache-ssl/*access.log.1
LogFile=apache-ssl/*access.log

# If the archives are searched, here is one or more line
# (optionally containing wildcards) that tell where they are...
#If you use a "-" in naming add that as well -mgt
Archive=archiv/httpd/*access_log.*
Archive=httpd/*access_log.*
Archive=apache/*access.log.*.gz
Archive=apache2/*access.log.*.gz
Archive=apache2/*access_log.*.gz
Archive=apache-ssl/*access.log.*.gz

# Expand the repeats (actually just removes them now)
*ExpandRepeats
# Keep only the lines in the proper date range...
*ApplyhttpDate

Как видим, logwatch использует опцию LogFile для определения маски имён лог-файлов, и опцию Archive — для маски архивов. Обратите внимание, что маски файлов указываются относительно каталога, определённого в опции LogDir основного файла конфигурации.  Допустим, у вас есть отдельный каталог для хранения логов Apache, скажем, для отдельного домена. В этом случае необходимо скопировать файл /usr/share/logwatch/default.conf/logfiles/http.conf в /etc/logwatch/conf/logfiles и добавить в него несколько строк:

LogFile=apache2/mydomain.com/access.log
LogFile=apache2/mydomain.com/access.log.1
Archive=apache2/mydomain.com/access.log.*.gz

Запуск

После того, как файлы конфигурации готовы и проверены, достаточно лишь запустить утилиту:

# logwatch

и приступить к анализу полученной информации. Естественно, анализом лог-файлов стоит заниматься как можно чаще, поэтому обычно запуск logwatch осуществляют по расписанию, а многие дистрибутивы автоматически добавляют запуск logwatch в ежедневное расписание планировщика. Например, в Ubuntu/Debian:

$ls-l/etc/cron.daily/*logwatch*

— rwxr-xr-x1root root268Mar  4  2011/etc/cron.daily/00logwatch

Удачного вам анализа!

Чтобы осуществлять мониторинг температуры в серверной, на улице и т.д...

Для этого нам понадобится некоторое количество датчиков температуры DS18B20  ( DS1820 ) и адаптер для подключения к COM порту компьютера и Digitemp программа умеет снимать показания с датчиков на  1-Wire шине.

1346781378_image001

Схема адаптера

1346781608_image003

или

1346781624_image005

 

Первая схема имеет ограничение на 10 датчиков.

Диод Шотки 1N5818

Стабилитрон 1N5228 3.9 V

Стабилитрон 1N5234 6.2 V

Резистор 1.5 кОм.

9 -pin'овый разъем ( для подключения к Com — порту материнской платы )

 

Установка Digitemp:

 

# cd /usr/local/src
# sudo mkdir digitemp
# cd digitemp
# sudo wget http://andy.od.ua/pub/digitemp/digitemp-3.5.0_mysql.tar
# sudo tar vxf digitemp-3.5.0_mysql.tar
# cd digitemp-3.5.0_mysql
# sudo apt-get install gcc libmysqlclient15-dev
# sudo make ds9097
# sudo mkdir /usr/local/etc/digitemp

Переместим скомпилированный файл в директорию /usr/local/etc/digitemp

#sudo mv digitemp_DS9097 /usr/local/etc/digitemp/digitemp_DS9097

теперь создадим файл .digitemprc_mysql в нем будут хранится настройки доступа к базе mysql

# sudo nano /usr/local/etc/digitemp/.digitemprc_mysql

вот с таким содержанием

DBNAME digitemp       #Имя базы не больше 32 символов
DBUSER digitemp       #Имя пользователя не больше 16 символов
DBPASS pass           #Пароль не больше 16 символов
DBHOST localhost      #Имя хоста или Ip-адрес не больше 16 символов
DBTABLE digitemp      #Имя таблицы не больше 32 символов
DBCOLUMNS BLANK,TIMESTAMP,SERIAL,TEMPC  #Имена столбцов которые будут записываться в базу

Описание DBCOLUMNS:

BLANK – пусто

TIMESTAMP – дата и время

TEMPC – температура в Цельсиях

TEMPF – температура в фаренгейтах

SERIAL – серийный номер датчика

SENSOR – номер датчика

Любой из вышеперечисленных столбцов могут быть указаны в любом порядке и могут быть дублированы

Теперь создадим таблицу куда будут записываться показания датчиков

# mysql –uимя пользователя –pпароль   имя базы < digitemp.sql

содержимое файла  digitemp.sql

CREATE TABLE `digitemp` (
  `dtKey` int(11) NOT NULL AUTO_INCREMENT,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `SerialNumber` varchar(17) COLLATE utf8_unicode_ci NOT NULL,
  `Fahrenheit` decimal(6,2) NOT NULL,
  `Celsus` decimal(6,2) NOT NULL,
  `Sensor` int(3) DEFAULT NULL,
  PRIMARY KEY (`dtKey`),
  KEY `serial_key` (`SerialNumber`),
  KEY `time_key` (`time`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

инициализация датчиков

# cd /usr/local/etc/digitemp
# ./digitemp_DS9097 -i -s /dev/ttyS0   DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
..
Searching the 1-Wire LAN
28D4B1DD030000FC : DS18B20 Temperature Sensor
284FB4DD03000067 : DS18B20 Temperature Sensor
ROM #0 : 28D4B1DD030000FC
ROM #1 : 284FB4DD03000067
Wrote .digitemprc

Программа нашла два датчика, значит устройство работает.

Теперь можно считать информацию со всех датчиков командой

# ./digitemp_DS9097 -a
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Sep 04 21:11:57 Sensor 0 C: 21.12 F: 70.03
Sep 04 21:11:58 Sensor 1 C: 29.56 F: 85.21

Теперь можно создать скрипт для крона, он будет проверять, нет ли  новых  датчиков, и записывать в базу

# sudo nano digitemp.sh

содержимое файла

#!/bin/bash
cd /usr/local/etc/digitemp
/usr/local/etc/digitemp/digitemp_DS9097 -i -s /dev/ttyS0 > /dev/null
/usr/local/etc/digitemp/digitemp_DS9097 -q
запись в крон
# sudo nano /etc/crontab
 добавить в конец файла Так крон будет каждые пять минуть запускать скрипт
*/5 * * * * root /usr/local/etc/digitemp/digitemp.sh
перезапустить крон
# sudo service cron restart
для отображения показаний в виде графика можно использовать php, скрипт можно взять [urlspan]здесь[/urlspan].

Качаем скрипт — http://spamassassin.apache.org/full/2.6x/dist/tools/sa-stats.pl

Для его корректной работы потребуются ещё несколько Perl-модулей:

# yum -y install perl-DateManip
# yum -y install perl-Parse-Syslog

Готово, запускаем:

01 # ./sa-stats.pl
02 Report Title : SpamAssassin - Spam Statistics
03 Report Date : 2014-07-13
04 Period Beginning : Sun 13 Jul 2014 12:00:00 AM EEST
05 Period Ending : Mon 14 Jul 2014 12:00:00 AM EEST
06
07 Reporting Period : 24.00 hrs
08 --------------------------------------------------
09
10 Note: 'ham' = 'nonspam'
11
12 Total spam detected : 16 ( 84.21%)
13 Total ham accepted : 3 ( 15.79%)
14 -------------------
15 Total emails processed : 19 ( 1/hr)
16
17 Average spam threshold : 5.00
18 Average spam score : 877.61
19 Average ham score : 0.17
20
21 Spam kbytes processed : 69 ( 3 kb/hr)
22 Ham kbytes processed : 3 ( 0 kb/hr)
23 Total kbytes processed : 72 ( 3 kb/hr)
24
25 Spam analysis time : 10 s ( 0 s/hr)
26 Ham analysis time : 0 s ( 0 s/hr)
27 Total analysis time : 10 s ( 0 s/hr)
28
29
30 Statistics by Hour
31 ----------------------------------------------------
32 Hour Spam Ham
33 ------------- ----------------- --------------
34 2014-07-13 00 0 ( 0%) 0 ( 0%)
35 2014-07-13 01 0 ( 0%) 0 ( 0%)
36 2014-07-13 02 0 ( 0%) 0 ( 0%)
37 2014-07-13 03 0 ( 0%) 0 ( 0%)
38 2014-07-13 04 0 ( 0%) 0 ( 0%)
39 2014-07-13 05 0 ( 0%) 0 ( 0%)
40 2014-07-13 06 0 ( 0%) 0 ( 0%)
41 2014-07-13 07 0 ( 0%) 0 ( 0%)
42 2014-07-13 08 0 ( 0%) 0 ( 0%)
43 2014-07-13 09 0 ( 0%) 0 ( 0%)
44 2014-07-13 10 0 ( 0%) 0 ( 0%)
45 2014-07-13 11 0 ( 0%) 0 ( 0%)
46 2014-07-13 12 0 ( 0%) 0 ( 0%)
47 2014-07-13 13 0 ( 0%) 0 ( 0%)
48 2014-07-13 14 0 ( 0%) 0 ( 0%)
49 2014-07-13 15 0 ( 0%) 0 ( 0%)
50 2014-07-13 16 0 ( 0%) 0 ( 0%)
51 2014-07-13 17 0 ( 0%) 0 ( 0%)
52 2014-07-13 18 0 ( 0%) 0 ( 0%)
53 2014-07-13 19 8 ( 72%) 3 ( 27%)
54 2014-07-13 20 8 (100%) 0 ( 0%)
55 2014-07-13 21 0 ( 0%) 0 ( 0%)
56 2014-07-13 22 0 ( 0%) 0 ( 0%)
57 2014-07-13 23 0 ( 0%) 0 ( 0%)
58
59 Done. Report generated in 0 sec by sa-stats.pl, version 6256.

Если ведением логов занимается демон syslog, то их ротацией — утилита newsyslog.

Демон syslog работает постоянно, и запускается при старте системы. Утилита newsyslog — запускается по cron-у, раз в час — если не указано иначе:
Continue Reading

Clam AntiVirus — пакет антивирусного ПО, работающий во многих операционных системах, включая Unix-подобные ОС, OpenVMS, Microsoft Windows и Apple Mac OS X.
Выпускается под GNU General Public License и является свободным программным обеспечением.
Для самой Ubuntu — антивирус не нужен, но вот если к вам пришел друг и говорит: «а проверь ка мне флешку на вирусы...»
Для установка ClamAV введите команду:
Continue Reading