Установка Kibana в Unix/Linux
Я расскажу как можно установить Kibana на различные Unix/Linux ОС. А установка начнется с установки JAVA, т.к она неотъемная часть данной утилиты.
Если в вашей системе не установлена Java, используйте одну из следующих ссылок для ее установки:
Вот еще полезное чтиво:
Начнем установку кибаны.
Установка Kibana в Debian/Ubuntu
Имеется несколько способов выполнить установку.
-===СПОСОБ 1 — использовать репозиторий===-
Загрузите и установите открытый ключ подписи:
# wget -qO - https://artifacts.elastic.co/GPG-KEY-kibana | apt-key add -
Возможно, вам придется установить пакет apt-transport-https на Debian перед продолжением:
# apt-get install apt-transport-https -y
Добавляем репозиторий:
# echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-5.x.list
Обновляем репозиторий и выполняем установку кибаны:
# apt-get update && sudo apt-get install kibana -y
-===СПОСОБ 2 — использовать готовый DEB файл===-
Если у вас 64 бит ОС:
# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-amd64.deb && dpkg -i kibana-5.3.0-amd64.deb
Если у вас 32 бит ОС:
# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-i386.deb && dpkg -i kibana-5.3.0-i386.deb
-===СПОСОБ 3 — использовать готовый архив===-
Будет описан ниже.
Установка Kibana в CentOS/Fedora/RedHat
Имеется несколько способов выполнить установку.
-===СПОСОБ 1 — использовать репозиторий===-
Загрузите и установите открытый ключ подписи:
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Добавляем репозиторий:
# vim /etc/yum.repos.d/kibana-5.x.repo
И вставляем в него:
name=Kibana repository for 5.x packages baseurl=https://artifacts.elastic.co/packages/5.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Обновляем репозиторий и выполняем установку кибаны:
# yum update && yum install kibana -y
-===СПОСОБ 2 — использовать готовый DEB файл===-
Если у вас 64 бит ОС:
# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-x86_64.rpm && rpm --install kibana-5.3.0-x86_64.rpm
Если у вас 32 бит ОС:
# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-i686.rpm && dpkg -i rpm --install kibana-5.3.0-i686.rpm
-===СПОСОБ 3 — использовать готовый архив===-
Будет описан ниже.
Установка Kibana на другой Unix/Linux ОС
Имеется несколько способов выполнить установку.
-===СПОСОБ 1 — использовать docker===-
Не было нужды юзать. При первой возможности, я дополню статью.
-===СПОСОБ 2 — использовать готовый файл===-
Если у вас 64 битный Linux:
# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-linux-x86_64.tar.gz && tar xfvz kibana-5.3.0-linux-x86_64.tar.gz
Если у вас 32 битный Linux:
# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-linux-x86.tar.gz && tar xfvz kibana-5.3.0-linux-x86.tar.gz
Если у вас Mac OS X (Darwin):
# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-darwin-x86_64.tar.gz && tar xfvz kibana-5.3.0-darwin-x86_64.tar.gz
Сейчас, переносим архив в удобное место:
# mv /usr/local/src/kibana-* /usr/local/kibana
Переходим к настройке переменного окружения:
$ vim ~/.bash_profile
И прописываем:
export JAVA_HOME=/usr/java/jdk1.8.0_121/ export JRE_HOME=/usr/java/jdk1.8.0_121/jre export KIBANA_HOME=/usr/local/kibana/ export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:/usr/bin:/usr/local/bin:$KIBANA_HOME/bin
И чтобы все заработало, выполняем:
$ . ~/.bash_profile
И, можно приступать к настройке.
Просмотр логов сервера с помощью команды tail
Выполнить просмотр логов в Linux можно с помощью команды tail. Данный инструмент позволяет смотреть записи в логах, выводя последние строки из файла. По умолчанию tail выводит 10 строк.
Первый вариант использования Tail
tail -f /var/log/syslog
Аргумент «-f» позволяет команде делать просмотр событий в режиме реального времени, в ожидании новых записей в лог файлах. Для прерывания процесса следует нажать сочетание клавиш «Ctrl+C.
На место переменной «/var/log/syslog» в примере следует подставить актуальный адрес до нужных системных журналов.
Второй вариант использования Tail
tail -F /var/log/syslog
В Linux логи веб-сервера не ведутся до бесконечности, поскольку это усложняет их дальнейший анализ. При преодолении лимита записей, система переименует переполненный строками файл журнала и отправит в «архив». Вместо старого файла создастся новый, но с прежним названием.
Если будет использоваться аргумент «-f», команда продолжит отслеживание старого, переименованного журнала. Данный метод делает невозможным просмотр логов в реальном времени, поскольку файл более не актуален.
При использовании аргумента «-F», команда, после окончания записи старого журнала, перейдёт к чтению нового файла с логами. В таком случае просмотр логов в режиме реального времени продолжится.
Аналог команды Tail
tailf /var/log/syslog
Отличие команды tailf от предыдущей заключается в том, что она не обращается к файлу и файловой системе в период, когда запись логов не происходит. Это экономит ресурсы системы и заряд, если используется нестационарное устройство — ноутбук, смартфон или планшет.
Недостаток данного способа — проблема с чтением больших файлов. Если системный журнал достаточно большой, возникает вероятность отказа в работе программы.
Изменение стандартного количества строк для вывода
Как и отмечалось выше, по умолчанию выводится 10 строк. Если требуется увеличить или уменьшить их количество, в команду добавляется аргумент «-n» и необходимое число строк.
Пример:
tail -f -n 100 /var/log/syslog
При использовании данной команды будут показаны последние 100 строк журнала.
Примеры настроек Logrotate
Logrotate – очень многофункциональный инструмент. Он располагает большим разнообразием опций для определения того, когда и как будет выполняться ротация логов и какие действия будут выполняться с ними в дальнейшем.
Вставьте в файл /etc/logrotate.d/httpd следующие строки (скорее всего, этот файл будет создан при установки):
/var/log/httpd/* { weekly rotate 3 size 10M compress delaycompress }
Рассмотрим назначение каждой из них.
Первая строка показывает, что директивы в данном блоке применяются ко всем логам в директории /var/log/apache2.weekly — означает еженедельную ротацию логов. Другие возможные значения – daily (ежедневно) и monthly (ежемесячно).rotate 3 — задает сохранение только 3 прошедших ротацию логов. Таким образом, при четвертом запуске самый старый файл будет удален.size=10M — устанавливает минимальный размер файла для ротации равным 10 мегабайт. Другими словами, ротация не будет выполняться, пока лог не достигнет размера в 10 Мбcompress и delaycompress — используются для того, чтобы задать сжатие всех сохраненных логов кроме самого последнего.
Проведем тестовый запуск, чтобы увидеть, что бы сделала logrotate, если бы она действительно была запущена. Воспользуйтесь опцией -d с файлом конфигурации (для реального запуска утилиты не указывайте эту опцию):
# logrotate -d /etc/logrotate.d/httpd
Вместо сжатия логов их можно переименовывать в соответствии с датой ротации. Для этого используется директива dateext. Для использования формата даты, отличного от ГГГГММДД можно указать желаемый формат.
Мы также можем исключить ротацию лога, если он пустой, воспользовавшись опцией notifempty. Кроме того, зададим отправку заполненных логов системному администратору по электронной почте (в данном случае admin@mydomain.com), для этого в системе должен быть настроен почтовый сервер.
В следующем примере настроим файл конфигурации /etc/logrotate.d/squid с использованием описанных выше параметров для ротации лога /var/log/squid/access.log:
squid /var/log/squid/access.log { monthly create 0644 root root rotate 5 size=1M dateext dateformat -%d%m%Y notifempty mail admin@mydomain.com }
# logrotate –d /etc/logrotate.d/squid
Как мы видим, ротация этого лога не требуется. Однако, при выполнении условия по размеру (size=1M), лог будет переименован в access.log-25022019 (если ротация была произведена 25 февраля 2019 года), и будет создан новый файл access.log с правами доступа 0644, и владельцем root. Когда наберется 6 логов, самый старый из них будет отправлен на admin@mydomain.com.
Теперь допустим, что при выполнении ротации вам требуется запуск собственной команды. Для этого пропишите строку с этой командой между директивами postrotate и endscript. Например, если требуется уведомлять root-пользователя по электронной почте о каждой ротации логов в директории /var/log/myservicegets, добавьте в блок три последних строки:
squid /var/log/myservice/* { monthly create 0644 root root rotate 5 size=1M postrotate echo "Была выполнена ротация." | mail root endscript }
Важно помнить, что в случае конфликтов параметры в файлах конфигурации, расположенных в директории /etc/logrotate, имеют приоритет перед параметрами в основном файле конфигурации
Опции сжатия логов:
compress | Сжимать логи при ротации. По умолчанию для сжатия используется gzip |
compresscmd | Команда/программа, которая будет использоваться для сжатия логов |
compressoptions | Опции команды ротации, которые будут использоваться при сжатии логов |
uncompresscmd | Команда разархивации логов. По умолчанию gunzip |
compressext | Указать расширение файлов, которое будет указываться для сжатых логов |
delaycompress | Отложить сжатие лога до следующей ротации. Таким образом последняя версия лога после ротации будет несжатой, а более ранние — сжатыми |
nocompress | Не сжимать логи при ротации |
nodelaycompress | Не откладывать сжатие до следующей итерации ротации. Эта опция перегружает опцию delaycompress |
Зачем нужна ротация логов
Если посмотреть содержимое /var/log в различных дистрибутивах Linux, мы увидим следующие файлы и поддиректории. У вас они могут отличаться в зависимости от запущенных в вашей системе служб и времени их работы.
# ls /var/log
Здесь мы видим, что некоторые имена логов заканчиваются на «log», как и можно предположить, а некоторые переименовываются в соответствии с датой (например, maillog-20190203) .
Если бы логи хранились вечно, в какой-то момент они бы заполнили всю файловую систему, где находится /var/log. Чтобы этого не произошло, можно воспользоваться полезной утилитой под названием logrotate для периодической очистки (ротации) логов.
Другими словами, logrotate переименовывает или сжимает файл лога при выполнении определенных условий (мы рассмотрим их чуть ниже), а следующее событие записывается в пустой файл. Кроме того, она удаляет «старые» файлы логов и сохраняет только более новые. Естественно, мы сами определяем критерии «старости» и периодичность очистки.
Установка Logrotate для управления логами в Unix/Linux
Я приведу наглядные примеры использования на различных Unix/Linux ОС.
Установка Logrotate для управления логами в Debian/Ubuntu
Обновим пакеты в ОС:
# apt-get update -y
Для установки используем:
# apt-get install logrotate -y
После чего, переходим к настройке и запуску логротейта.
Установка Logrotate для управления логами в CentOS/Fedora/RedHat
Обновим пакеты в ОС:
# yum update -y
Для установки используем:
# yum install logrotate -y
После чего, переходим к настройке и запуску логротейта.
Установка Logrotate для управления логами в Mac OS X
Выполняем установку HomeBrew — Установка Homebrew на Mac OS X и, выполним поиск пакета:
$ brew search logrotate
Для установки, служит команда:
$ brew install logrotate
После чего, переходим к настройке и запуску logrotate.
Централизованный сервер rsyslog в Debian
Давайте рассмотрим простой конфиг централизованного сервера rsyslog, который будет сортировать файлы логов по ip адресу источника сообщения. Редактировать файлы можно с помощью vim или другого текстового редактора. ip адрес сервера rsyslog примем за 10.0.0.1, на него необходимо натравить всех . Для корректной работы rsyslogd необходимо разрешить получение syslog сообщений из сети, подключив соответствующий модуль и задав правило, т.к. по умолчанию, UDP и TCP транспорт на сервере отключен (приведу только измененные\добавленные строки):
~ # cat /etc/rsyslog.conf <...> ################# #### MODULES #### ################# <...> # раскомментируем параметры подключения модуля, позволяющего собирать информацию по UDP: $ModLoad imudp # раскомментируем номер порта для сервера - можно заменить на свой (не забудьте о клиентах) $UDPServerRun 514 # раскомментируем параметры подключения модуля, позволяющего собирать информацию по TCP (по жаланию): #$ModLoad imtcp # раскомментируем номер порта для сервера (по желанию - можно заменить на свой (не забудьте о клиентах) #$InputTCPServerRun 514 ########################### #### GLOBAL DIRECTIVES #### ########################### <...> ############### #### RULES #### ############### <...> # удаленное журналирвание # Зададим шаблон создания имен файлов (на основании IP адреса клиента) $template FILENAME,"/var/log/%fromhost-ip%/syslog.log" # Укажем сохранять сообщения от любого источника (*) с любым приоритетом (*) в файл, заданный шаблоном # Например, клиенты (10.0.0.2,10.0.0.3...) будут раскладываться в соответствующие каталоги /var/log/10.0.0.2/syslog.log *.* ?FILENAME # как вариант, возможно рассмотреть вот такой вид сортировки: # шаблон, раскидывающий по имени хоста, году, месяц, дню # $template RemoteHost,"/var/log/%HOSTNAME%/%$YEAR%/%$MONTH%/%$DAY%/syslog.log" # правило, использующее шаблон # *.* ?RemoteHost
После задания указанных параметров, необходимо перезапустить\перечитать конфигурационный файл (service rsyslog restart). При этом, netstat нам должен показать, что сислог стал слушать соответствующий порт:
~ # netstat -nap | grep 514 udp 0 0 0.0.0.0:514 0.0.0.0:* 21017/rsyslogd
Конечно, мы можем не указывать параметры хранения, а лишь раскомментировать параметры $ModLoad imudp и $UDPServerRun 514, тогда rsyslogd будет размещать сообщения в стандартных выходных файлах (messages, syslog, etc), согласно правил по умолчанию. Необходимо учитывать, что указание только загрузки модуля (например $ModLoad imudp) недостаточно для приема сообщений по сети. Обязательно нужно указывать так же и соответствующий порт для прослушки (например, $UDPServerRun 514).
log файлы и их расположение в Linux
Как уже отмечалось, в системах UNIX и Linux нет чётких соглашений о том, где и как должны храниться журналы регистрации
Они могут быть разбросаны хоть по всей файловой системе, поэтому для каждого администратора важно сразу разобраться, где и для каких пакетов и демонов находятся соответствующие файлы журналов. Но несмотря на отсутствие чётких формальных регламентов относительно мест хранения журналов, всё же существует традиционно сложившееся правило, что эти файлы должны находиться в каталогах /var/log, /var/log/syslog, а также в /var/adm
Как правило, доступ для чтения файлов в указанных каталогах предоставляется только суперпользователю, однако нет ничего страшного, если для часто просматриваемых журналов, в которых также нет важной системной информации настроить более «демократический» режим доступа. Обычно к такому варианту также прибегают для удобства и экономии времени, когда нужно часто и регулярно изучать некоторые журналы, например для веб-сервера Apache, которые обычно находятся в /var/log/apache2 или /var/log/httpd
Стоит также помнить и о том, что бывают случаи, когда (особенно на сбойных конфигурациях) общий объём файлов журналов резко увеличивается, при этом велик риск «уложить» систему. Для удобства контроля за свободным пространством на устройствах хранения, а также для надёжности каталог /var часто выносят в отдельную файловую систему на отдельном разделе.
Видео: LPIC 108.2 часть четвертая. Журналирование событий: rsyslog
Когда в системе происходит та или иная ошибка, нужно выяснить почему она произошла, исправить ее и попытаться сделать так, чтобы такой ошибки больше не было. В этом системным администраторам очень сильно помогает логирование всех ошибок.
Например, общие сообщения ядра и программ сохраняются в /var/log/messages. Но рано или поздно файлы логов становятся слишком большими, они занимают все место на диске и это приводит к новым ошибкам
Поэтому важно контролировать, как и куда сохраняются файлы журналов
На протяжении многих лет в операционной системе Linux используется сервис Syslog для управления логами. В современных версиях применяется его модификация — rsyslog.
В этой статье мы рассмотрим как выполняется установка и настройка rsyslog, рассмотрим основы настройки локального логирования в Linux, а также пойдем дальше и настроем удаленный сбор логов. Эта информация также поможет вам улучшить свои навыки поиска ошибок и неисправностей.
Настройка Logrotate
Logrotate — это популярная утилита, поэтому в большинстве дистрибутивов она поставляется по умолчанию. Вы можете убедиться, что программа установлена в вашем дистрибутиве, попытавшись ее установить. Например, в CentOS:
Или в Ubuntu и основанных на ней дистрибутивах:
Теперь, даже если утилита не была установлена, вы ее установите. Все основные настройки программы находятся в файле /etc/logrotate.conf, дополнительные настройки, касаемо правил и других возможностей могут быть размещены в папке /etc/logroate.d/. Вы можете размещать все настройки logroatae прямо в основном конфигурационном файле, будет более правильно, если настройки для каждого отдельного сервиса будут находиться в отдельном файле, в папке /etc/logrotate.d/.
Чтобы конфигурационные файлы из этой папки загружались программой, необходимо добавить в основной конфигурационный файл такую строчку:
Просто убедитесь что она там уже есть. Сначала давайте рассмотрим основные директивы, которые мы будем применять во время настройки. Здесь директивы выглядят не совсем обычно, сама директива и определяет что и когда нужно делать, а уже если нужно, ей передаются дополнительные параметры. Чтобы указать как часто нужно выполнять проверку совпадению условий используются такие директивы:
- hourly — каждый час;
- daily — каждый день;
- weekly — каждую неделю;
- monthly — каждый месяц;
- yearly — каждый год.
Основные директивы управления и обработки логов:
- rotate — указывает сколько старых логов нужно хранить, в параметрах передается количество;
- create — указывает, что необходимо создать пустой лог файл после перемещения старого;
- dateext — добавляет дату ротации перед заголовком старого лога;
- compress — указывает, что лог необходимо сжимать;
- delaycompress — не сжимать последний и предпоследний журнал;
- extension — сохранять оригинальный лог файл после ротации, если у него указанное расширение;
- mail — отправлять Email после завершения ротации;
- maxage — выполнять ротацию журналов, если они старше, чем указано;
- missingok — не выдавать ошибки, если лог файла не существует;
- olddir — перемещать старые логи в отдельную папку;
- postrotate/endscript — выполнить произвольные команды после ротации;
- start — номер, с которого будет начата нумерация старых логов;
- size — размер лога, когда он будет перемещен;
Это те основные директивы, которые мы будем использовать. В главном конфигурационном файле находится глобальная конфигурация, директивы, которые будут распространяться на все логи если не было отменено их действие. Каждый лог, который подлежит ротации описывается таким образом:
адрес_файла_лога {директивы}
Теперь давайте создадим файл rsyslog.conf в папке /etc/logrotate.d/ и поместим в него настройки для ротации этого лога:
Эти настройки означают, что ротация журналов будет выполняться ежедневно, и мы будем хранить три последних журнала, более старые копии будут автоматически удаляться. Минимальный размер для ротации — 10 мегабайт, ротация не будет выполнена, если лог не занимает более 10 мегабайт. Будет использоваться сжатие, для всех журналов кроме последнего и предпоследнего. Точно по такому же принципу вы можете настроить ротацию логов для любого из журналов. Нужно создать такую секцию для каждого из логов, которыми вы хотите управлять.
Теперь осталось протестировать как работает наша конфигурация. Для этого запустим утилиту logrotate с опцией -d. Она выведет все, что планируется сделать, но не будет изменять файлы на диске. У нас есть файл /var/log/messages, размером 40 Мегабайт, посмотрим что будет делать утилита:
Как видите, программа обнаруживает файл лога и разделяет его на несколько частей. Вы можете убедиться, что logrotate будет запускаться как положено проверив расписание cron:
Настройка Logrotate завершена, а вам осталось всего лишь расписать как будет выполняться ротация логов для каждого из журналов, которые занимают много места.
ОПЦИИ
- -d
- Активирует режим отладки, в котором включена и опция -v (действия программы сопровождаются выводом подробной информации). В режиме отладки файлы системных сообщений, а также файл состояния logrotate, не подвергаются изменениям со стороны утилиты.
- -f, —force
- Принуждает logrotate произвести обращение журналов, даже если сама программа не считает это необходимым. Иногда это полезно после добавления новых записей в logrotate или если старый файл журнала был удалён вручную; таким образом будут созданы новые файлы и журналирование будет корректно продолжено.
- -m, —mail <команда>
- Указывает logrotate, какую команду использовать для отправки журналов по электронной почте. Эта команда может принять два аргумента: 1) тема письма и 2) получатель. Команда должна читать сообщение со стандартного входа и отсылать его электронной почтой получателю. Командой по умолчанию является /bin/mail -s.
- -s, —state <файл>
- Предписывает logrotate использовать альтернативный файл состояния. Это полезно, если logrotate запускается от имени разных пользователей для разных наборов файлов системных сообщений. Файл состояния по умолчанию — /var/lib/logrotate/status.
- —usage
- Выводит краткую справку об использовании.
Определение версии LogRotate
Если вы используете не-Ubuntu сервер, сначала убедитесь, что Logrotate установлен, попросив его информацию о версии:
logrotate --version
Вывод
logrotate 3.8.7
Если Logrotate не установлен, вы получите сообщение об ошибке. Пожалуйста, установите программное обеспечение с помощью менеджера пакетов вашего дистрибутива Linux.
Если установлен Logrotate, но номер версии существенно отличается, то может возникнуть проблемы с конфигурацией, описанной в этом руководстве. Обратитесь к документации по вашей конкретной версии LogRotate, прочитав страницу man:
man logrotate
Далее мы рассмотрим структуру конфигурации LogRotate по умолчанию на Ubuntu.
Веб интерфейс для rsyslog
В качестве веб-интерфейса будем настраивать Loganalizer от adiscon. Установка веб интерфейса довольно проста. Заключается в скачивании архива, распаковке в каталог веб сервера и запуск графического мастера настройки. Итак, отсюда (http://loganalyzer.adiscon.com/downloads) качаем архив с файлами (Например: http://download.adiscon.com/loganalyzer/loganalyzer-3.5.6.tar.gz). Перед настройкой, конечно же должен быть установлен Web сервер и модуль php5 (aptitude install apache2 libapache2-mod-php5). А да, еще php5-gd для отображения отчетов.
~ # # Скачиваем архив: ~ # wget http://download.adiscon.com/loganalyzer/loganalyzer-3.5.6.tar.gz ~ # # распаковываем архив: ~ # tar xf loganalyzer-3.5.6.tar.gz
В текущем каталоге появится каталог loganalyzer-3.5.6, который содержит некоторую информацию, достойную прочтения:
~ # ls -l итого 12 drwxr-xr-x 3 root root 4096 Сен 20 22:51 . drwx------ 13 root root 4096 Сен 20 23:01 .. drwxrwxr-x 5 root root 4096 Сен 10 17:26 loganalyzer-3.5.6 ~ # ls -l loganalyzer-3.5.6/ итого 112 -rw-rw-r-- 1 root root 41186 Сен 10 17:26 ChangeLog drwxrwxr-x 2 root root 4096 Сен 20 23:01 contrib -rw-rw-r-- 1 root root 35497 Сен 10 17:26 COPYING drwxrwxr-x 2 root root 4096 Сен 10 17:34 doc -rw-rw-r-- 1 root root 8449 Сен 10 17:26 INSTALL drwxrwxr-x 14 root root 4096 Сен 10 17:34 src ~ # # из каталога src нам необходимо скопировать содержимое в /var/www/loganalyzer: ~ # mkdir /var/www/loganalyzer ~ # cp -r loganalyzer-3.5.6/src/* /var/www/loganalyzer ~ # # далее,необходимо создать пустой файл конфигурации, ~ # # который будет заполнен автоматически - установщиком ~ # touch /var/www/loganalyzer/config.php ~ # # зададим права на запись (после установки эти права можно убрать) ~ # chmod 666 /var/www/loganalyzer/config.php
Далее, пытаемся зайти на http://10.0.0.1/loganalyzer и видим чудо:
жмахаем here
Видим, для чего мы давали права 666, нажимаем Next
Здесь выбираем желаемые настройки. Отдельного внимания требует параметр Enable User Database. Если выбрать его, то будет создана отдельная база для хранения настроек Веб-интерфейса. Так же, будет доступна возможность создавать пользователей и группы. Жмем next.
Странно, но куда то пропало 6 шагов. (это потому что на прошлом шаге мы не выбрали хранение настроек в базе). На данном шаге выбираем источник сообщений (файл, sql) и указываем соответствующие параметры.
Это все. Ниже пару скриншотов того, что получилось:
Есть маленькое дополнение — веб сервер не имеет доступа к обычным файлам в каталоге /var/log/. Поэтому, журнал может не отображаться. Чтобы решить данную проблему, необходимо добавить пользователя www-data в группу adm:
~ # usermod -G adm www-data
Кроме Loganalyzer существует так же — Logzilla, обладающая тем же функционалом. Ее тоже стоит попробовать установить, если есть желание.
Опции копирования:
copy | Копировать лог-файл, но не изменять оригинал. Эту опцию можно использовать, когда надо создать снимок лога на определенный момент, вместо ротации, либо когда для усечения лога используется внешняя программа. Если используется опция copy, то опция create, если она указана, не будет иметь никакого эффекта, так как старый лог остается. |
copytruncate | Урезать оригинальный файл до нулевого размера после создания копии вместо переименования оригинального файла и создания нового. Эта опция используется тогда, когда программе, записывающей лог, нельзя указать, что нужно закрыть связанный с файлом лога дескриптор и открыть новый. Такая программа может продолжать писать в старый файл. При использовании этой опции есть один момент, связанный с тем, что на копирование требуется некоторое время и поэтому файл не может быть скопирован мгновенно. За время копирования в лог могут быть добавлены записи, которые будут утеряны при усечении файла до нулевого размера. При использовании этой опции опция create также не будет иметь эффекта, так как старый файл остается на месте |
nocopy | Не копировать оригинальный лог-файл. Эта опция перегружает опцию copy |
nocopytruncate | Не усекать оригинальный лог-файл после создания копии. Эта опция перегружает опцию copytruncate |
Краткое описание файла настроек Logrotate
Описание того, каким образом Logrotate будет работать с тем или иным лог файлом находится в специальном конфигурационном файле. Как правило, они располагаются в директории /etc/logrotate.d/. Например, файл конфигурации для apache2 выглядит следующим образом:
$ more /etc/logrotate.d/apache2 /var/log/apache2/*.log { weekly # ротация раз в неделю. Возможные варианты daily, weekly, # monthly, size (например size=1M) missingok # отсутствие файла не является ошибкой rotate 52 # сохраняется последние 52 ротированных файла compress # сжимать ротируемый файл delaycompress # сжимать предыдущий файл при следующей ротации # (т.е. файл *.log.1 будет не сжат, а *.log.2 и далее сжатыми) notifempty # не обрабатывать пустые файлы create 640 root adm # сразу после ротации создать пустой файл с заданными правами и пользователем sharedscripts # крипты prerotate/postrotate будут выполнены только один раз # не зависимо от количества журналов, подходящих под заданный шаблон postrotate # скрипт будет выполнен сразу после ротации if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then /etc/init.d/apache2 reload > /dev/null fi endscript }
При этом, первая строка /var/log/apache2/*.log есть ничто иное, как шаблон обрабатываемых лог-файлов. Он означает, что указанная конфигурация ротации будет использоваться для всех файлов, находящихся в директории /var/log/apache2/ и имеющих расширение «log».
Допустимых директив в конфигурационном файле очень много (более 40). Подробнее о них можно узнать из man logrotate.
- Директивы:
- mail — указывает куда отсылать ротированный файл
- mailfirst — отсылать первую ротированную комию; maillast — отсылать последнюю ротированную копию
postrotate reload rsyslog >/dev/null 2>&1 || true # for Debian invoke-rc.d rsyslog reload > /dev/null # for RHEL endscript
copytruncate — после создания копии, обрезать исходный файл журнала взамен перемещения старого файла журнала и создания нового. Это может найти применение в том случае, когда некоторой программе нельзя указать закрыть её журнал, и таким образом можно постоянно продолжать запись (добавление) в существующий файл журнала
Примите во внимание, что хотя между копированием файла и его обрезанием очень маленький промежуток времени, некоторая часть журналируемых данных может быть потеряна. При использовании этого параметра, не имеет силы директива create, так как старый файл журнала остаётся на своём месте.