|
@@ -1,3 +1,4 @@
|
|
|
|
+
|
|
Flatstore Module
|
|
Flatstore Module
|
|
|
|
|
|
Jan Janak
|
|
Jan Janak
|
|
@@ -10,9 +11,9 @@ Jan Janak
|
|
|
|
|
|
Copyright © 2004, 2005 FhG FOKUS
|
|
Copyright © 2004, 2005 FhG FOKUS
|
|
Revision History
|
|
Revision History
|
|
- Revision $Revision$ $Date: 2008-03-19 20:31:30 +0100
|
|
|
|
- (Mi, 19 Mär 2008) $
|
|
|
|
- __________________________________________________________
|
|
|
|
|
|
+ Revision $Revision$ $Date: 2008-08-06 12:08:33 +0200
|
|
|
|
+ (Wed, 06 Aug 2008) $
|
|
|
|
+ _________________________________________________________
|
|
|
|
|
|
Table of Contents
|
|
Table of Contents
|
|
|
|
|
|
@@ -34,7 +35,7 @@ Jan Janak
|
|
1.4. Exported Functions
|
|
1.4. Exported Functions
|
|
1.5. Exported MI Functions
|
|
1.5. Exported MI Functions
|
|
|
|
|
|
- 1.5.1. flat_rotate
|
|
|
|
|
|
+ 1.5.1. flat_rotate
|
|
|
|
|
|
2. Developer Guide
|
|
2. Developer Guide
|
|
|
|
|
|
@@ -47,34 +48,34 @@ Chapter 1. Admin Guide
|
|
1.1. Overview
|
|
1.1. Overview
|
|
|
|
|
|
Flatstore is one of so-called Kamailio database modules. It
|
|
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.
|
|
|
|
|
|
+ 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,
|
|
The module does not export all functions of the database API,
|
|
it supports only one function, insert. The module is limited
|
|
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.
|
|
|
|
|
|
+ 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.
|
|
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.
|
|
|
|
|
|
+ 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
|
|
The acc module can be configured to use flatstore module as
|
|
database backend using the db_url_parameter:
|
|
database backend using the db_url_parameter:
|
|
modparam("acc", "db_url", "flatstore:/var/log/acc")
|
|
modparam("acc", "db_url", "flatstore:/var/log/acc")
|
|
|
|
|
|
This configuration options tells acc module that it should use
|
|
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.
|
|
|
|
|
|
+ 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
|
|
Name of files in that directory will follow the following
|
|
pattern:
|
|
pattern:
|
|
@@ -82,14 +83,14 @@ modparam("acc", "db_url", "flatstore:/var/log/acc")
|
|
|
|
|
|
For example, entries writen by Kamailio process 8 into acc
|
|
For example, entries writen by Kamailio process 8 into acc
|
|
table would be written in file acc_8.log. For each table there
|
|
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.
|
|
|
|
|
|
+ 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
|
|
1.1.1. Rotating Log Files
|
|
|
|
|
|
@@ -105,18 +106,17 @@ mv acc_1.log acc_1.log.20050605
|
|
mv acc_2.log acc_2.log.20050605
|
|
mv acc_2.log acc_2.log.20050605
|
|
mv acc_4.log acc_3.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.
|
|
|
|
|
|
+ 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
|
|
* Send Kamailio the MI command to close and reopen the
|
|
renamed files. For example, using FIFO:
|
|
renamed files. For example, using FIFO:
|
|
kamctl fifo flat_rotate
|
|
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.
|
|
|
|
|
|
+ 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.
|
|
* Move the renamed files somewhere else and process them.
|
|
|
|
|
|
1.2. Dependencies
|
|
1.2. Dependencies
|
|
@@ -138,7 +138,7 @@ kamctl fifo flat_rotate
|
|
|
|
|
|
Enable or disable flushing after each write.
|
|
Enable or disable flushing after each write.
|
|
|
|
|
|
- Default value is 1.
|
|
|
|
|
|
+ Default value is 1.
|
|
|
|
|
|
Example 1.1. Set "flush" parameter
|
|
Example 1.1. Set "flush" parameter
|
|
...
|
|
...
|