|
@@ -1,4 +1,3 @@
|
|
-
|
|
|
|
Flatstore Module
|
|
Flatstore Module
|
|
|
|
|
|
Jan Janak
|
|
Jan Janak
|
|
@@ -12,8 +11,8 @@ Jan Janak
|
|
Copyright © 2004, 2005 FhG FOKUS
|
|
Copyright © 2004, 2005 FhG FOKUS
|
|
Revision History
|
|
Revision History
|
|
Revision $Revision$ $Date: 2008-08-06 12:08:33 +0200
|
|
Revision $Revision$ $Date: 2008-08-06 12:08:33 +0200
|
|
- (Wed, 06 Aug 2008) $
|
|
|
|
- _________________________________________________________
|
|
|
|
|
|
+ (Mi, 06 Aug 2008) $
|
|
|
|
+ __________________________________________________________
|
|
|
|
|
|
Table of Contents
|
|
Table of Contents
|
|
|
|
|
|
@@ -35,7 +34,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
|
|
|
|
|
|
@@ -48,34 +47,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:
|
|
@@ -83,14 +82,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
|
|
|
|
|
|
@@ -106,17 +105,18 @@ 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
|
|
...
|
|
...
|