The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Организовать 'синхронное' дублирование лога Squid в базе P-S..."
Отправлено Af., 07-Июл-10 14:40 
Да, это оно. Спасибо.

syslog-ng - для Suse "из коробки". Для Fedora - rsyslog. Инструменты примерно одинаковые. У меня Федора.

Итак - запись лога Squid в базу Postgresql.

Создать нужную базу. Здесь это не описываю.

Фрагмент конфигурации squid (версия 3.1.1):

logformat squid_2_rsyslog CuStOmMaRkEr#DBase_Table_Name#squid#%>a#%<A#%>p#3128#noname#_sql-inj_>ru#%Ss/>Hs#%<st#%<st#%{%Y-%m-%d}tl#%{%H:%M:%S}tl#%{%Y-%m-%d}tl#%{%H:%M:%S}tl#%{%Y-%m-%d %H:%M:%S}tl#%{%Y-%m-%d %H:%M:%S}tl
access_log syslog squid_2_rsyslog


Установка нужного модуля:


# yum install rsyslog-pgsql

Фрагмент конфигурации rsyslog, v3, из ASPLinux 14 (Fedora Core 9):

$ModLoad ompgsql.so  # load the output driver for PostgreSQL

# Template with removing of message custom marker. The result is ready to use SQL command.
$template rsyslog_2_pgsql, "\nINSERT INTO %msg:F,35:2% VALUES( '%msg:F,35:3%', '%msg:F,35:4%', '%msg:F,35:5%', '%msg:F,35:6%', '%msg:F,35:7%', '%msg:F,35:8%', '%msg:F,35:9%', '%msg:F,35:10%', '%msg:F,35:11%', '%msg:F,35:12%', '%msg:F,35:13%', '%msg:F,35:14%', '%msg:F,35:15%', '%msg:F,35:16%', '%msg:F,35:17%', '%msg:F,35:18%' );", stdsql

# Filter by message custom marker and log it to separate file. BTW strings in this file are ready to use SQL commands.
if $msg contains 'CuStOmMaRkEr' then /var/log/squid-sql.log;rsyslog_2_pgsql

# In case SQL server is down setup on-disk queue.
# This setup only for next logging command. Each "command" must have separate block before the command.
$WorkDirectory /var/log/squid # where to place spool files
$ActionQueueFileName rsyslog.squid2sql_queue # unique name prefix for spool files
$ActionQueueMaxDiskSpace 5m   # 1gb space limit (use as much as possible)
$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
$ActionQueueType LinkedList   # run asynchronously
$ActionResumeRetryCount -1    # infinite retries if host is down

# Filter by custom marker inside the message and log information to RMBill data base.
if $msg contains 'CuStOmMaRkEr' then :ompgsql:127.0.0.1,rmbill,rmbill,123;rsyslog_2_pgsql

# And finally discard the messages, to avoid logging them to other containers.
:msg, contains, "CuStOmMaRkEr"  ~

Встреченные особенности:

Интерпретация поля >Hs зависит от версии Squid. "Уголок" м.б. нужен, м.б. нет. Squid отчитается, если неправильно.

Пока не осознал возможна ли инъекция через адрес назначения в ">Hs", потому сейчас при записи в базу подставляю _sql-inj_ вместо реального адреса. Не успел найти точного указания, что stdsql защитит.

Не претендую на оптимальность фильтра сообщений в rsyslog. С удовольствием увижу предложения по оптимизации.

P.S. Не обращайте внимание на выборку полей для лога. Этот набор заточен под нечто третье, в чью базу дописываются эти логи.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру