Yvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
11:35, 10 марта 2016

Установка logwatch

Blog post image

Чтобы не заглядывать постоянно в логи для выявления ошибок, используются специальные утилиты которые облегчают жизнь системного администратора. Эти утилиты анализируют лог файлы операционной системы и отправляют по почте отчет ИТ-специалисту. Если у вас почтовый сервер начал рассылать спам или СУБД MySQL сыпет неизвестными ошибками, вы это легко узнаете прочтя отчет отправленный вам от анализатора логов.

В этой записке будет установлен анализатор логов logwatch. Желательно ставить его сразу после настройки нового сервер на Linux, причем в обязательном порядке. Лучше быть в курсе о происходящем, чем потом кусать локти. В интернете есть статья, где анализатор помог выявить аномальные действия на сервере вроде скрытой установки софта. Так что, держите руку на пульсе, читайте каждый день его отчет.

Анализаторы это первый рубеж, второй рубеж это Централизованное хранение логов (rsyslog) и их анализ. Хотя есть проверенное решение в виде связки Logstash + ElasticSearch + Kibana.

Про этот анализатор я знаю уже давно с 2012 года. Он помогал мониторить логи Linux серверов. На данный момент опять возникла необходимость, и я вспомнил про добрый logwatch.

 

Входные данные:

  1. Сервер CentOS 7 на котором установлен некий софт, допустим Asterisk
  2. Электронный почтовый ящик системного администратора "admin@yandex.ru"
  3. Электронный ящик для отсылки отчета "report@yandex.ru"
 

Задача:

  1. Установить и настроить logwatch, чтобы он отсылал каждую ночь отчет на ящик "admin@yandex.ru"
  2. Отсылка тестового отчета, чтобы убедиться в правильности настроек logwatch.
  3. Использовать специальный ящик "report@yandex.ru" для отправки отчетов на ящик админа "admin@yandex.ru"
 

1. Установка logwatch

 

# wget https://sourceforge.net/projects/logwatch/files/logwatch-7.4.1/logwatch-7.4.1-1.noarch.rpm

# rpm -Uvh logwatch-7.4.1-1.noarch.rpm

 

2. Настройка logwatch

# vi /usr/share/logwatch/default.conf/logwatch.conf

MailTo = admin@yandex.ru

MailFrom = report@yandex.ru

Detail = High

mailer = "/usr/sbin/ssmtp -s admin@yandex.ru"

 

По умолчанию logwatch мониторит все сервисы которые расположены в каталоге /usr/share/logwatch/scripts/services.

# ls /usr/share/logwatch/scripts/services

Blog post image

 

3. Установка и настройка ssmtp

# yum install logwatch ssmtp -y

ssmtp - это консольный почтовый клиент, который запускается по мере обращения к нему локальных программ. Мы будем вызывать его из Logwatch, чтобы он отправил письма на почтовый ящик admin@yandex.ru.

 

Сохраним оригинальный файл настроек:

# mv /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf_orig

# vi /etc/ssmtp/ssmtp.conf

mailhub=smtp.yandex.ru:465
hostname=localhost
root=report@yandex.ru
AuthUser=report@yandex.ru
AuthPass=password
UseSTARTTLS=no
UseTLS=yes
FromLineOverride=yes
RewriteDomain=yandex.ru
TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt

Указываем кому разрешено отправлять почту (локальным учетным записям):

# vi /etc/ssmtp/revaliases

root:report@yandex.ru:smtp.yandex.ru:465

asterisk:report@yandex.ru:smtp.yandex.ru:465

Если появляется ошибка:

ssmtp: 553 5.7.1 Sender address rejected: not owned by auth user.

Значить вы отправляете письмо с локальной учетной записи которой не разрешено посылать письма. Проверьте файл /etc/ssmtp/revaliases, чтобы он содержал учетную запись и ящик  с которого отсылаются письма. Или как вариант поменять адреса местами.

Примечание: У ssmtp есть параметр запуска, который позволяет использовать иной конфигурационный файл вместо конфига по умолчанию "ssmtp -C config_file.conf"

 

4. Тестовая отправка отчета

Сперва отправим письмо с текстом "test_message" на адрес "admin@yandex.ru":

# echo "test_message" | ssmtp -s "admin@yandex.ru" report@yandex.ru

Здесь мы отправили письмо на ящика admin@yandex.ru с ящика report@yandex.ru.

Вы можете создать специальный ящик для отсылки отчетов, например zabbix@yandex.ru или logwatch@yandex.ru.

Если письма не отправляются, можно запустить ssmtp в дебаг режиме:

# echo "test_message" | ssmtp -v "admin@yandex.ru"

 

Для удобства, можно установить консольный клиент Mutt:

# yum install mutt -y

И отправить тестовое письмо:

# echo "Your message" | mutt -e 'Тема_Сообщения From:report@yandex.ru' admin@yandex.ru

или

 
echo "Не получилось дозвонится на данный номер pipec" | mutt -s Asterisk ao86@yandex.ru

# echo "Test Message" | mutt -s TEMA admin@yandex.ru

 

Чтобы поменять поле от кого, измените файл /etc/Muttrc

# vim /etc/Muttrc

 

set realname="Reports from server"

set from="report@yandex.ru"

set use_from=yes

 

Далее если пришло письмо, можно попробовать отправить отчет от logwatch:

# /etc/cron.daily/0logwatch

 

Пример отчета:

 

Blog post image

 

5. Добавляем мониторинг Asterisk

По умолчанию logwatch не умеет мониторить Asterisk, поэтому нужно научить logwatch мониторить Asterisk.

Для этого надо скачать файл "asterisk_logwatch.zip":

# cd /etc/logwatch

# wget http://www.mcbsys.com/wp-content/uploads/2012/02/asterisk_logwatch.zip

Устанавливаем unzip:

# yum install unzip -y

Теперь извлекаем файлы из архива:

# unzip asterisk_logwatch.zip

Получится примерно так:

# tree /etc/logwatch/

/etc/logwatch/
├── asterisk_logwatch.zip
├── conf
│   ├── ignore.conf
│   ├── logfiles
│   │   ├── asterisk.conf
│   │   └── mysql.conf
│   ├── logwatch.conf
│   ├── override.conf
│   └── services
│       └── asterisk.conf
└── scripts
│   └── services
│       └── asterisk

6. Включаем мониторинг MariaDB (MySQL)

У меня почему-то не появлялась информация по СУБД, поэтому потребовалось включить мониторинг MySQL:

# logwatch --detail high --service mysql --range all --debug 5

Или включение анализа всех сервисов (много лишнего):

# logwatch --detail high --range all --debug 5

Если вы включили анализ всех сервисов, уберите не нужные:

# vi /usr/share/logwatch/default.conf/logwatch.conf

Уберем логи по демону Postfix:

Service = "-postfix"

У меня минимальный конфиг по сервисам такой:

#Service = All
Service = "zz-disk_space"
Service = "zz-sys"

Если не приходит сообщение с отчетом, то вероятно не хватает модулей perl:

# yum install perl-CPAN perl-Sys-MemInfo perl-Sys-CPU fortune

# yum install "perl(YAML::XS)"

# cpan YAML

 

Чтобы отображалось количество свободной памяти, отредактируем файл:

# vi  /usr/share/logwatch/scripts/services/zz-sys

import Sys::MemInfo qw(totalmem freemem);

print "   Memory:  " . ((&totalmem - (&totalmem % (1024*1024))) / (1024*1024)) . " MB\n";

print "   Free Memory:   ", ((&freemem - (&freemem % (1024*1024))) / (1024*1024)) . " MB\n";

Чтобы увидеть как работает logwatch, введите команду:

# logwatch

 

Ссылки:

1. swatch

2. http://www.mcbsys.com/blog/2012/02/monitor-asterisk-with-logwatch/

3. http://kiteplans.info/2012/07/03/centos-6-virtualmin-logwatch-install-configure-mail-to-email-disable-service-monitoring-debug-fixmysql-http-error/

4. Simple log watcher

0
1478
0