Exilog
Добавлено: 2009-02-10 11:02:55
Вот давеча поднял сабж - очень приятная штука.если кому интересно могу отписать как сделал)
Где ты ничего не можешь сделать - ты ничего не должен хотеть
https://forum.lissyara.su/
Код: Выделить всё
#
# Tabellenstruktur fЭr Tabelle `deferrals`
#
CREATE TABLE `deferrals` (
`server` varchar(32) NOT NULL default '',
`message_id` varchar(16) binary NOT NULL default '',
`timestamp` bigint(20) NOT NULL default '0',
`rcpt` varchar(200) NOT NULL default '',
`rcpt_intermediate` varchar(200) default NULL,
`rcpt_final` varchar(200) NOT NULL default '',
`host_addr` varchar(15) default NULL,
`host_dns` varchar(255) default NULL,
`tls_cipher` varchar(128) default NULL,
`router` varchar(128) default NULL,
`transport` varchar(128) default NULL,
`shadow_transport` varchar(128) default NULL,
`errmsg` blob,
PRIMARY KEY (`server`,`message_id`,`timestamp`,`rcpt`(100),`rcpt_final`(100)),
KEY `rcpt` (`rcpt`),
KEY `rcpt_final` (`rcpt_final`),
KEY `server` (`server`),
KEY `message_id` (`message_id`),
KEY `timestamp` (`timestamp`),
KEY `host_addr` (`host_addr`)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Tabellenstruktur fЭr Tabelle `deliveries`
#
CREATE TABLE `deliveries` (
`server` varchar(32) NOT NULL default '',
`message_id` varchar(16) binary NOT NULL default '',
`timestamp` bigint(20) NOT NULL default '0',
`rcpt` varchar(200) NOT NULL default '',
`rcpt_intermediate` varchar(200) default NULL,
`rcpt_final` varchar(200) NOT NULL default '',
`host_addr` varchar(15) default NULL,
`host_dns` varchar(255) default NULL,
`tls_cipher` varchar(128) default NULL,
`router` varchar(128) default NULL,
`transport` varchar(128) default NULL,
`shadow_transport` varchar(128) default NULL,
PRIMARY KEY (`server`,`message_id`,`timestamp`,`rcpt`(100),`rcpt_final`(100)),
KEY `rcpt` (`rcpt`),
KEY `rcpt_final` (`rcpt_final`),
KEY `host_dns` (`host_dns`),
KEY `timestamp` (`timestamp`),
KEY `server` (`server`),
KEY `message_id` (`message_id`),
KEY `host_addr` (`host_addr`)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Tabellenstruktur fЭr Tabelle `errors`
#
CREATE TABLE `errors` (
`server` varchar(32) NOT NULL default '',
`message_id` varchar(16) binary NOT NULL default '',
`timestamp` bigint(20) NOT NULL default '0',
`rcpt` varchar(200) NOT NULL default '',
`rcpt_intermediate` varchar(200) default NULL,
`rcpt_final` varchar(200) NOT NULL default '',
`host_addr` varchar(15) default NULL,
`host_dns` varchar(255) default NULL,
`tls_cipher` varchar(128) default NULL,
`router` varchar(128) default NULL,
`transport` varchar(128) default NULL,
`shadow_transport` varchar(128) default NULL,
`errmsg` blob,
PRIMARY KEY (`server`,`message_id`,`timestamp`,`rcpt`(100),`rcpt_final`(100)),
KEY `timestamp` (`timestamp`),
KEY `server` (`server`),
KEY `rcpt` (`rcpt`),
KEY `host_addr` (`host_addr`),
KEY `message_id` (`message_id`),
KEY `rcpt_final` (`rcpt_final`)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Tabellenstruktur fЭr Tabelle `messages`
#
CREATE TABLE `messages` (
`server` varchar(32) NOT NULL default '',
`message_id` varchar(16) binary NOT NULL default '',
`timestamp` bigint(20) default NULL,
`msgid` varchar(255) default NULL,
`completed` bigint(20) default NULL,
`mailfrom` varchar(255) default NULL,
`host_addr` varchar(15) default NULL,
`host_rdns` varchar(255) default NULL,
`host_ident` varchar(255) default NULL,
`host_helo` varchar(255) default NULL,
`proto` varchar(32) default NULL,
`size` bigint(20) default NULL,
`tls_cipher` varchar(128) default NULL,
`user` varchar(128) default NULL,
`bounce_parent` varchar(16) default NULL,
PRIMARY KEY (`server`,`message_id`),
KEY `msgid` (`msgid`),
KEY `user` (`user`),
KEY `timestamp` (`timestamp`),
KEY `host_addr` (`host_addr`),
KEY `message_id` (`message_id`),
KEY `bounce_parent` (`bounce_parent`),
KEY `mailfrom` (`mailfrom`),
KEY `server` (`server`),
KEY `host_dns` (`host_rdns`)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Tabellenstruktur fЭr Tabelle `queue`
#
CREATE TABLE `queue` (
`server` varchar(32) NOT NULL default '',
`message_id` varchar(16) binary NOT NULL default '',
`mailfrom` varchar(255) NOT NULL default '',
`timestamp` bigint(20) NOT NULL default '0',
`num_dsn` int(11) NOT NULL default '0',
`frozen` bigint(20) default NULL,
`recipients_delivered` blob,
`recipients_pending` blob,
`spool_path` varchar(64) NOT NULL default '',
`subject` varchar(255) default NULL,
`msgid` varchar(255) default NULL,
`headers` blob NOT NULL,
`action` varchar(64) default NULL,
PRIMARY KEY (`server`,`message_id`),
KEY `spool_path` (`spool_path`),
KEY `mailfrom` (`mailfrom`),
KEY `message_id` (`message_id`),
KEY `server` (`server`),
KEY `timestamp` (`timestamp`),
KEY `frozen` (`frozen`),
KEY `msgid` (`msgid`),
KEY `action` (`action`)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Tabellenstruktur fЭr Tabelle `rejects`
#
CREATE TABLE `rejects` (
`server` varchar(32) NOT NULL default '',
`message_id` varchar(16) binary default NULL,
`timestamp` bigint(20) NOT NULL default '0',
`host_addr` varchar(15) NOT NULL default '',
`host_rdns` varchar(255) NOT NULL default '',
`host_ident` varchar(255) default NULL,
`host_helo` varchar(255) default NULL,
`mailfrom` varchar(255) default NULL,
`rcpt` varchar(255) default NULL,
`errmsg` varchar(255) NOT NULL default '',
UNIQUE KEY `rejects_unique` (`server`,`timestamp`,`host_addr`,`errmsg`),
KEY `message_id` (`message_id`),
KEY `server` (`server`),
KEY `timestamp` (`timestamp`),
KEY `host_addr` (`host_addr`),
KEY `mailfrom` (`mailfrom`),
KEY `rcpt` (`rcpt`),
KEY `host_dns` (`host_rdns`)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Tabellenstruktur fЭr Tabelle `unknown`
#
CREATE TABLE `unknown` (
`server` varchar(32) NOT NULL default '',
`message_id` varchar(16) binary NOT NULL default '',
`timestamp` bigint(20) NOT NULL default '0',
`line` varchar(255) NOT NULL default '',
PRIMARY KEY (`server`,`message_id`,`timestamp`,`line`),
KEY `server` (`server`),
KEY `message_id` (`message_id`),
KEY `timestamp` (`timestamp`)
) TYPE=MyISAM;
Код: Выделить всё
# cat exilog.conf
{ # DO NOT REMOVE THIS BRACKET
# Exilog config file. Read the comments. Obey the syntax.
# (c) Tom Kistner 2005
'servers' => { # ------------------------------------
# Server definitions. One block per server,
# separated with comma.
# Currently, each server only has a single
# property: Its group membership. Groups are
# just strings that bundle servers. Each
# server can only be in one group.
# Keep the server names short (do not use FQDN).
# Likewise, keep the group names short.
'company.com' => {
'group' => 'group1'
},
}, # End of server definitions ----------------------
'sql' => { # ----------------------------------------
# SQL Server definition. Use one of the following
# blocks as a template.
# Example for local MySQL server
'type' => 'mysql',
'DBI' => 'DBI:mysql:database=exilog;',
'user' => 'exilog',
'pass' => 'exilog'
# Example for remote MySQL server
#'type' => 'mysql',
#'DBI' => 'DBI:mysql:database=exilog;host=localhost;port=3306',
#'user' => 'exilog',
#'pass' => 'exilog'
# Example for Postgresql server
#'type' => 'pgsql',
#'DBI' => 'DBI:Pg:dbname=exilog;host=195.2.162.40;port=5432;',
#'user' => 'myuser',
#'pass' => 'mypass'
}, # End of SQL server definition --------------------
'agent' => { # ---------------------------------------
# Agent configuration.
# The agent writes a log file. You can also
# use /dev/null here once things are running
# smoothly.
'log' => '/var/log/exilog_agent',
# The agent writes its PID into this file. Useful,
# if you want to start the agent using a command
# like start-stop-daemon.
'pidfile' => '/var/run/exilog-agent.pid',
# If this is set to 'no', the agent will NOT change
# its process names to be more informative. This will
# prevent problems on systems that restrict changes
# to process names for security reasons (Debian and
# NetBSD for example).
#'use_pretty_names' => 'yes',
# The server the agent is running on. MUST
# be one of the names specified in the
# 'Servers' section above.
'server' => 'company.com',
# The log(s) to monitor. If you log via syslog,
# this will only be a single file (typically
# /var/log/mail). If you use Exim's own logging,
# you should specify the mainlog and rejectlog here.
'logs' => [
'/var/log/exim/main'
],
# Path to Exim's queue directory.
'queue' => '/var/spool/exim',
# Path to your Exim binary
'exim' => '/usr/sbin/exim',
# Delay between two queue listing refreshes.
# Thirty seconds is reasonable.
'queue_refresh_delay' => 30
}, # End of Exilog Agent configuration ---------------
'cleanup' => { # -------------------------------------
# Configuration for the database cleanup tool
# (exilog_cleanup.pl).
# How many days worth of logs to keep in the
# database. 10 days is somehow reasonable. If
# you run a small shop you can also keep months
# of logs. If you run a VERY big shop you might
# want to reduce this number or buy some more
# processing power.
'cutoff' => 14
}, # End of exilog_cleanup.pl configuration ----------
'web' => { # -----------------------------------------
# Options for the web interface.
# Defines how the web interface shows timestamps.
# Use 'local' to use the local time of the HTTP server
# machine, or use 'gmt' to use normalized GMT
# timestamps.
# TIP: If all of your machines are in one time zone,
# use 'local'.
'timestamps' => 'local',
# When using basic auth to restrict access to the web
# interface, you can define users to be "read-only".
# They will not be able to cancel or delete messages
# (but they can start a delivery run). Clients that
# do not authenticate are mapped to a user name
# of "anonymous".
'restricted_users' => [
'anonymous',
]
} # End of web interface configuration ---------------
};
# EOF
Код: Выделить всё
/var/log/exim/main
Код: Выделить всё
log_file_path =/var/log/exim/%s
<VirtualHost *:80>
ServerAdmin user@domain.com.ua
DocumentRoot /usr/local/www/exilog
ServerName mail-stat.company.com
DirectoryIndex exilog_cgi.pl
ErrorLog /usr/local/www/exilog/logs/exilog.log
<Directory "/usr/local/www/exilog/">
Options ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
название наверное говорит само за себя и на структуру таблиц можно посмотретьprinceps писал(а):шустроЯ бы все-таки посоветовал написать хоть вкратце, что это за зверь такой и что делает
а ещё выровнять по ширине (средняя колонка - не более 610 пикселов) и мне сказать как доделаете - лучше в личку.princeps писал(а):шустроЯ бы все-таки посоветовал написать хоть вкратце, что это за зверь такой и что делает
Это хорошо, только вот что делать, если логи пишутся в виде exim-main-20090110.log (установка в exim /exim-%s-%D.log) и менять не хочется, так как ротация, свои скрипты на такое положение вещей настроенно ?ruslan писал(а):
В качестве лога, который будет парситься я выбрал свой -Строка в exim,Код: Выделить всё
/var/log/exim/main
Код: Выделить всё
log_file_path =/var/log/exim/%s
просьба по таким вопросам пинать меня в личку.ruslan писал(а):Кажись усё.
тоже самоеAndy2k писал(а):Кто-нибудь смог заставить эту шнягу парсить maillog?
У меня логи exim'a тоже складываются в именованые текущей датой файлы, поэтому в конфиге указываю /var/log/maillog - и нифига не работает
Код: Выделить всё
cat /usr/local/etc/exim/configure | grep syslog
log_file_path = syslog
syslog_timestamp = yes
нет желания приспосабливать настроенную удобную систему ведения,ротацию логов и ход сложившихся вещей под парсер, от которого всего-то и требуется, что открыть файл,найти, сделать выборку,сложить в базу...и менять не хочется, так как ротация, свои скрипты на такое положение вещей настроенно ?....
Код: Выделить всё
make install clean
===> Installing for exilog-0.5_4
===> exilog-0.5_4 depends on file: /usr/local/lib/perl5/site_perl/5.8.8/Net/Netmask.pm - found
===> exilog-0.5_4 depends on file: /usr/local/lib/perl5/site_perl/5.8.8/mach/DBD/mysql.pm - not found
===> Verifying install for /usr/local/lib/perl5/site_perl/5.8.8/mach/DBD/mysql.pm in /usr/ports/databases/p5-DBD-mysql
===> Building for p5-DBD-mysql-4.010
cc -c -I/usr/local/lib/perl5/site_perl/5.8.8/mach/auto/DBI -I/usr/local/include/mysql -fno-strict-aliasing -pipe -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -O2 -fno-strict-aliasing -pipe -O2 -fno-strict-aliasing -pipe -DVERSION=\"4.010\" -DXS_VERSION=\"4.010\" -DPIC -fPIC "-I/usr/local/lib/perl5/5.8.8/mach/CORE" dbdimp.c
dbdimp.c: In function `mysql_db_FETCH_attrib':
dbdimp.c:2277: warning: cast from pointer to integer of different size
dbdimp.c: In function `mysql_st_next_results':
dbdimp.c:2776: error: structure has no member named `last_errno'
dbdimp.c: In function `mysql_st_fetch':
dbdimp.c:3384: error: structure has no member named `last_errno'
dbdimp.c: In function `mysql_st_FETCH_attrib':
dbdimp.c:4094: warning: cast from pointer to integer of different size
*** Error code 1
Stop in /usr/ports/databases/p5-DBD-mysql/work/DBD-mysql-4.010.
*** Error code 1
Stop in /usr/ports/databases/p5-DBD-mysql.
*** Error code 1
Stop in /usr/ports/mail/exilog.
Код: Выделить всё
pkg_info | grep mysql
mysql-client-5.1.23 Multithreaded SQL database (client)
mysql-server-5.1.23 Multithreaded SQL database (server)
php5-mysql-5.2.5_1 The mysql shared extension for php
php5-mysqli-5.2.5_1 The mysqli shared extension for php
Код: Выделить всё
cd /usr/ports/databases/p5-DBD-mysql51 && make clean && make && make install clean
Код: Выделить всё
cd /usr/ports/databases/p5-DBI && make deinstall clean && make && make install clean