Flatstore Module
Jan Janak
FhG FOKUS
Edited by
Jan Janak
Copyright � 2004, 2005 FhG FOKUS
Revision History
Revision $Revision$ $Date: 2008-03-19 20:31:30 +0100
(Mi, 19 Mär 2008) $
__________________________________________________________
Table of Contents
1. Admin Guide
1.1. Overview
1.1.1. Rotating Log Files
1.2. Dependencies
1.2.1. Kamailio Modules
1.2.2. External Libraries or Applications
1.3. Exported Parameters
1.3.1. flush (integer)
1.4. Exported Functions
1.5. Exported MI Functions
1.5.1. flat_rotate
2. Developer Guide
List of Examples
1.1. Set "flush" parameter
Chapter 1. Admin Guide
1.1. Overview
Flatstore is one of so-called Kamailio database modules. It
does not export any functions executable from the configuration
scripts, but it exports a subset of functions from the database
API and thus other module can use it instead of, for example,
mysql module.
The module does not export all functions of the database API,
it supports only one function, insert. The module is limited
but very fast. It is especially suitable for storing accounting
information on sites with extremely high traffic. If MySQL is
too slow or if you get a huge amount of accounting data then
you can consider using this module. Note that the acc module is
the only module that was tested with flastore.
The format of the files produced by this module is plain text.
Each line consists of several fields, fields are separated by |
character. New information is always appended at the end of the
file, searching, deleting and updating of existing data is not
supported by the module.
The acc module can be configured to use flatstore module as
database backend using the db_url_parameter:
modparam("acc", "db_url", "flatstore:/var/log/acc")
This configuration options tells acc module that it should use
the flatstore module and the flatstore module should create all
files in /var/log/acc directory. The directory must exist and
Kamailio processes must have permissions to create files in
that directory.
Name of files in that directory will follow the following
pattern:
<table_name>_<process_name>.log
For example, entries writen by Kamailio process 8 into acc
table would be written in file acc_8.log. For each table there
will be several files, one file for every Kamailio process that
wrote some data into that table. The main reason why there are
several files for each table is that it is much faster to have
one file per process, because it does not require any locking
and thus Kamailio processes will not block each other. To get
the complete data for a table you can simply concatenate the
contents of files with the same table name but different
process id.
1.1.1. Rotating Log Files
There is a new Kamailio MI (management interface) command
called flat_rotate. When Kamailio receives the command then it
will close and reopen all files used by flatstore module. The
rotation itself has to be done by another application (such as
logrotate). Follow these steps to rotate files generated by
flatstore module:
* Rename the files that you want to rotate:
cd /var/log/acc
mv acc_1.log acc_1.log.20050605
mv acc_2.log acc_2.log.20050605
mv acc_4.log acc_3.log.20050605
...
Note that at this point Kamailio will still be writing all
data into the renamed files.
* Send Kamailio the MI command to close and reopen the
renamed files. For example, using FIFO:
kamctl fifo flat_rotate
This will force Kamailio to close the renamed files and
open new ones with original names, such as acc_1.log. New
files will be open at the point when Kamailio has some data
to write. It is normal that the files will be not created
immediately if there is no traffic on the proxy server.
* Move the renamed files somewhere else and process them.
1.2. Dependencies
1.2.1. Kamailio Modules
The following modules must be loaded before this module:
* No dependencies on other Kamailio modules.
1.2.2. External Libraries or Applications
The following libraries or applications must be installed
before running Kamailio with this module loaded:
* None.
1.3. Exported Parameters
1.3.1. flush (integer)
Enable or disable flushing after each write.
Default value is 1.
Example 1.1. Set "flush" parameter
...
modparam("db_flatstore", "flush", 0)
...
1.4. Exported Functions
There are no function exported to routing script.
1.5. Exported MI Functions
1.5.1. flat_rotate
It changes the name of the files where it is written.
Name: flat_rotate
Parameters: none
MI FIFO Command Format:
:flat_rotate:_reply_fifo_file_
_empty_line_
Chapter 2. Developer Guide
The module implements the DB API.