15 декабря 2016 г.

Переходим с Screen Squid 1.7 на 1.10

Продолжу начатую ещё с версии 1.5 инструкцию по установке и первоначальной настройке Screen Squid. Теперь рассказ будет про 1.10. Возможно в процессе что-нибудь упущу, т.к. каждый раз инструкцию пишу по памяти, а не в процессе установки. Также, в отличие от предыдущих инструкций, упомяну здесь случай переноса некоторых данных с таблиц версии 1.7, т.к. по новой создавать алиасы, группы и их соединения вряд ли захочется.

Все дальнейшие пункты установки подразумевают, что у вас уже установлены http- и mysql-сервер, как и php с модулями mysql и iconv в случае необходимости. Замечу, что версия PHP 7 не будет работать с текущей версией Screen Squid, т.к. изменился драйвер mysql на mysqli. Возможно эту проблему можно допилить настройками, но я пока этим вопросом не заморачивался.

И так, приступим к установке 1.10.

Перед реализацией всей этой машинерии необходимо скачать ScreenSquid с сайта разработчика.
Для нормальной работы MySQL с UTF-8 была проделана небольшая настройка в файле /etc/mysql/conf.d/mysql.cnf (для версии 5.7 в Ubuntu 16.04, в других дистрибутивах это может быть /etc/my.cnf, /etc/mysql/my.cnf и т.п.):
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
Произведённые выше действия с конфигурационным файлом восстановили корректную работу с кириллическими символами. Не знаю как будет у Вас, но без этого кириллица упорно сохранялась и отображалась в win1252 (latin1).
После успешной загрузки и настройки MySQL распакуем полученный архив в директорию расположения веб-страниц:
sudo tar xzf screensquid_v1_10.tar.gz -С /var/www/
В связи с тем, что помимо анализатора логов ScreenSquid у меня там хранятся и другие страницы, переименую его:
sudo mv /var/www/html /var/www/screensquid/
Переходим к созданию базы данных, в которой будут храниться логи, и заполнению её таблицами (отношениями).
Подключимся:
mysql -u[user_name] -p[password]
Создадим новую базу данных (если ранее была установлена 1.7 название должно отличаться):
CREATE DATABASE screensquid DEFAULT CHARACTER SET=utf8;
после чего произведём её заполнение, воспользовавшись прилагаемым к ScreenSquid файлом createdb.sql:
use screensquid;
SOURCE /var/www/screensquid/createdb/createdb.sql;
Чтобы не подключаться пользователем root и не светить его права создадим нового пользователя mysql и наделим его полными правами к созданной БД. Данный пункт можно частично не выполнять, в случае ранее установленной версии 1.7, оставив лишь GRANT... с указанием новой базы:
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON screensquid.* TO 'user_name'@'localhost'; 
С самой сложной часть сего Марлезонского балета покончено и мы плавно переходим к редактированию конфигурации ScreenSquid. Вместо user_name и password указываем те значения, которые мы ввели выше:
sudo vi /var/www/screensquid/config.php
$db = "screensquid";
$user = "user_name";
$pass ="password";
$address ="localhost";
$cfgsquidhost[0]="localhost";
$cfgsquidport[0] = 3128;
$cfgcachemgr_passwd[0]="{пароль из директивы cachemgr_passwd squid.conf}";
и в скрипте заполнения таблиц БД:
sudo vi /var/www/screensquid/fetch.pl
my $user = "user_name";
my $pass = "password";
my $db = "screensquid";
В последнем файле, который выполняет роль парсера файла лога, были внесены очень необходимые изменения, а это:
  1. Можно указывать короткий или полный путь к файлу лога SQUID
  2. Появился лог результатов выполнения скрипта, путь к которому также можно указать в коротком или полном формате.
  3. Добавилось логирование в БД о процессе работы парсера.
Поэтому не побрезгуем и воспользуемся этими возможностями, отредактировав соответствующие переменные:
my $filetoparse="/var/log/squid3/access.log.1";
my $filetolog="/var/www/screensquid/ssquid.log";
Конечно же можно было оставить эти значения по умолчанию, разместив сам скрипт в папке с логами, но этот метод меня не устроил. Также заметьте, что парсер будет работать с файлом .1, который появляется после работы программы logrotate, таким образом получая в базе данные за предыдущий день. Никто не заставляет поступать аналогичным образом, всё в Ваших руках.

По завершении конфигурирования парсера сделаем его исполняемым, воспользовавшись командой:
sudo chmod u+x fetch.pl
После чего настроим cron для запуска этого скрипта:
sudo crontab -e
куда добавим следующую запись:
# запуск каждый день в 23 часа 
00 23 * * * /var/www/screensquid/fetch.pl
С конфигурированиями закончили, поэтому можно немного расслабиться и поиграться другими очень интересными и нужными командами.

В предыдущих версиях были добавлены графики и диаграммы в Dashboard и отчёте "По времени суток". Так как архив с анализатором мы распаковывали с правами root, именно он и стал владельцем всех каталогов и файлов. Менять владельца на всё не буду, поэтому ограничусь лишь каталогом, где создаются эти самые картинки:
sudo chown -R www-data:www-data /var/www/screensquid/lib/pChart/pictures/

Также в 1.10 появился экспорт некоторых отчётов в PDF, которые создаются в каталоге output. Ему также необходимо изменить владельца, как и пунктом выше.

Кто решится перейти с 1.7 на 1.10 и перенести алиасы, группы и другую информацию, можете выполнить указанные ниже команды после входа в консоль mysql  с помощью :
mysql -u[user_name] -p[password]
INSERT INTO screensquid.scsq_alias SELECT * FROM {db1.7}.scsq_alias;
INSERT INTO screensquid.scsq_aliasingroups SELECT * FROM {db1.7}.scsq_aliasingroups;
INSERT INTO screensquid.scsq_groups SELECT * FROM {db1.7}.scsq_groups;
INSERT INTO screensquid.scsq_logins SELECT * FROM {db1.7}.scsq_logins;
INSERT INTO screensquid.scsq_ipaddress SELECT * FROM {db1.7}.scsq_ipaddress;
INSERT INTO screensquid.scsq_httpstatus SELECT * FROM {db1.7}.scsq_httpstatus; // можно не переносить

Не забудьте заменить текст в фигурных скобках на название своей базы данных версии 1.7.

Да, чуть на забыл, что появилась разбивка сайтов по группам. Работает пока не очень, но не могу не отметить процесс заполнения таблиц. Качаем вот это: http://www.shallalist.de/Downloads/shallalist.tar.gz и распаковываем в любую директорию. Далее качаем парсер с форума break-people.ru и кладём в тот же каталог. Вносим в него изменения в соответствии с потребностями:
my $host = "localhost"; # host s DB
my $port = "3306"; # port DB
my $user = "user_name"; # username k DB
my $pass = "password"; # pasword k DB
my $db = "screensquid"; # name DB
И запускам на выполнение: perl ./getcat.pl

Через несколько чашек кофе и/или сигарет скрипт закончит свою работу и заполнит необходимые таблицы в Screen Squid.

ВОЗМОЖНЫЕ ОШИБКИ

Если в процессе выполнения скрипта парсера появляются ошибка вида:
DBD::mysql::st execute failed: MySQL server has gone away at fetch.pl line XXX, <IN> line YYY.
попробуйте в fetch.pl уменьшить значение в строке:
$count_lines_for_one_insert=10000;

На сих откланиваюсь. Спасибо за внимание =) Успехов!

2 комментария:

  1. Приветствую!
    Установил весь необходимый пакет софта, даже открылась страничка на нестандартном порту апача, но столкнулся с граблями.
    Страница открывается, но пустая, состоящая из двух половин, правой и левой.
    В правой, подозреваю, должно быть что-то, но этого чего-то. Так же написано, что надо нажать на кнопку "Отчеты" слева, которой тоже нет.
    Что сделал не так?

    ОтветитьУдалить
    Ответы
    1. Очень похоже на то что не отработали скрипты perl или php(я на это наступал в самом начале сейчас точно и не вспомнить) - но смотри в логах должны быть ошибки, поставил наверное на 7-9 компов и до сих пор работают - при чем есть высоконагруженные.

      Удалить

Уважаемый комментатор, пишите грамотно.
С благодарностью, автор блога.