» » » Централизованное хранилище логов для Squid Proxy или как мы логи в базу заворачивали

 

Централизованное хранилище логов для Squid Proxy или как мы логи в базу заворачивали

Автор: admin от 9-08-2017, 08:25, посмотрело: 139

Централизованное хранилище логов для Squid Proxy или как мы логи в базу заворачивали


Привет %username%,



Сегодня я хотел бы рассказать про достаточно тривиальную задачу сбора логов с децентрализованных Squid proxy серверов и подводные камни с которыми мы столкнулись.



Что имеем:




  • Squid-hq

  • Squid-br1

  • Squid-br2

  • Squid-br3

  • Squid-br4

  • Squid-db



  • Как видно из списка, в наличии 5 серверов squid proxy в разных удаленых офисах, и 1 база данных для сбора логов. Все OS CentOS 7.3, squid proxy от 3.3.8 до 3.5.26, Squid-db — с установленной mariadb 5.6



    Из того что удалось найти это перловые скрипты и схема, собственно их и берем за основу:




  • Ставим зависимости на сервера squid proxy:

    yum install perl perl-Readonly* perl-URI perl-YAML perl-DBI perl-Carp perl-DBD-mysql


  • После чего раскладываем по местам скрипты и конфиг для подключения к базе:



    cp log_mysql_daemon.pl /usr/libexec/squid/log_mysql_daemon.pl



    Даем права:



    chmod +x /usr/libexec/squid/log_mysql_daemon.pl

    chown squid:squid /usr/libexec/squid/log_mysql_daemon.pl





  • Далее создаем конфиг файл для подключения скрипта к базе:



    vi /etc/squid/log_mysql_daemon.conf



    host: ""

    database: "squid_log"

    table: "access_log"

    user: "squid"

    pass: ""





  • Создаем базу, импортируем схему и создаем юзера:



    mysql -p

    create database squid_log;

    CREATE USER 'squid'@'%' IDENTIFIED BY '';

    GRANT ALL PRIVILEGES ON squid_log.* TO 'squid'@'';

    GRANT ALL PRIVILEGES ON squid_log.* TO 'squid'@'';

    GRANT ALL PRIVILEGES ON squid_log.* TO 'squid'@'';

    GRANT ALL PRIVILEGES ON squid_log.* TO 'squid'@'';

    GRANT ALL PRIVILEGES ON squid_log.* TO 'squid'@'';

    exit



    cat log_mysql_daemon-table.sql log_mysql_daemon-views.sql | mysql -p squid_log







  • Переходим на сторону зла squid proxy конфига



    Добавляем конфигурацию для демона



    vi /etc/squid/squid.conf

    acl dontLog http_status 403 407

    logformat squid_mysql %ts.%03tu %6tr %>a %Ss %03Hs %
    access_log /var/log/squid/access.log squid

    access_log daemon:/etc/squid/log_mysql_daemon.conf squid_mysql !dontLog

    logfile_daemon /usr/libexec/squid/log_mysql_daemon.pl




    Разбираем:

    acl dontLog http_status 403 407 — опциональная строка, убирает ошибки из лога идущих в базу данных связаные с эрор кодами 403, 407. База будет расти в геометрической последовательности, а для репортинга не будет нести никакой ценности



    logformat squid_mysql %ts.%03tu %6tr %>a %Ss %03Hs % — задаем формат логу, одно из важных условий для множественных squid серверов последнее значение с названием сервера с которого приходят логи. В оригинальных скриптах функционал отсутствует поэтому подкручиваем эту строку и сам скрипт следующим образом:



    в /usr/libexec/squid/log_mysql_daemon.pl в настройку колонок добавляем squid-server



    # fields that we should have in the database table

    # this list depends on the log format configuration

    my @required_fields = qw(

    id

    time_since_epoch

    response_time

    client_src_ip_addr

    squid_request_status

    http_status_code

    reply_size

    request_method

    request_url

    username

    squid_hier_status

    server_ip_addr

    mime_type

    squid_server

    );




    access_log /var/log/squid/access.log squid — Оставляем локальные логи для отладок и случаев проблем с базой, у них включен ротейшен поэтому лишним не будет



    access_log daemon:/etc/squid/log_mysql_daemon.conf squid_mysql !dontLog — собственно сама строка к конфигурации демона. Обратите внимание что !dontLog отменяет логирование 403,407 только для базы данных, так что в случае отладки можно легко использовать локальные логи



    logfile_daemon /usr/libexec/squid/log_mysql_daemon.pl — путь к перловому демону




  • Перечитываем конфиги squid proxy



    squid reconfigure

    squid -k reconfigure




    и получаем желаемый результат:

    Централизованное хранилище логов для Squid Proxy или как мы логи в базу заворачивали



    Доступные таблицы и вьюшки:

    Централизованное хранилище логов для Squid Proxy или как мы логи в базу заворачивали




  • Заключение:



    Как видно, данные теперь находятся централизованно в базе данных и легко доступны для обработки. Далее планируем написать фронтэнд для фильтрации и экспорта данных (репортинга). В целом статья написана и собрана из разных источников, к сожалению нигде не смог найти все вместе, поэтому считаю целесообразым оставить это здесь.



    Было ли бы вам интересно почитать продолжения цикла статей про Squid Proxy?

    Источник: Хабрахабр

    Категория: Системное администрирование, Linux

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

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *