Db_flatstore Module

Jan Janak

   FhG FOKUS
   <jan@iptel.org>

Julien Chavanton

   Flowroute
   <jchavanton@gmail.com>

   Copyright © 2004, 2005 FhG FOKUS

   Copyright © 2017 Flowroute
     __________________________________________________________________

   Table of Contents

   1. Admin Guide

        1. Overview

              1.1. Rotating Log Files

        2. Parameters

              2.1. flush (integer)
              2.2. encode_delimiter (integer)

Chapter 1. Admin Guide

   Table of Contents

   1. Overview

        1.1. Rotating Log Files

   2. Parameters

        2.1. flush (integer)
        2.2. encode_delimiter (integer)

1. Overview

   1.1. Rotating Log Files

   Db_flatstore is one of the 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
   modules can use it as a database driver, instead of, for example, the
   db_mysql module.

   The module does not implement all functions of the database API, it
   supports only one function, insert. This means that 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. Please note that the acc module is the only module
   that was tested with the flatstore module.

   The format of the files produced by this module is plain text. Each
   line consists of several fields, fields are separated by the "|"
   character (vertical bar). 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 db_flatstore module as database
   backend using the db_url_parameter:
modparam("acc", "db_url", "flatstore:/var/log/acc")

   This configuration option tells the acc module that it should use the
   db_flatstore module and the db_flatstore module should create all files
   in the /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 written by the Kamailio process 8 into the 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. Rotating Log Files

   The module implements a Kamailio management interface command called
   flatstore.k_rotate. When Kamailio receives the command it will close
   and reopen all files used by the db_flatstore module. The rotation
   itself has to be done by another application (such as logrotate).
   Follow these steps to rotate files generated by the db_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 management command to close and reopen the
       renamed files:
kamcmd flatstore.k_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 SIP server.
     * Move the renamed files somewhere else and process them.

2. Parameters

   2.1. flush (integer)
   2.2. encode_delimiter (integer)

2.1. flush (integer)

   Enable or disable flushing after each write.

   Default value is 1.

2.2. encode_delimiter (integer)

   Enable or disable encoding of the escaped character using ""%" HEX HEX"
   mechanism for escaping from RFC 2396

   Default value is 1. Default delimiter '|' is replaced with %7C if found
   in any string
