Skip to content
This repository has been archived by the owner on Aug 4, 2022. It is now read-only.

General info

l15k4 edited this page Mar 22, 2014 · 2 revisions
  • Standalone application written in Scala, using Akka and MapDB as it's core dependencies
  • Apart from HttpServer single-threaded pool there are 4 more threads/actors :
    • Superviser
    • Indexer - receives relevant log records and indexes / stores them to MapDB.
    • Tailer - controls another thread that tails log files. It is blocked all the time
  • Memory footprint is from 20 - 400 MG RAM depending on databaze size that affects memory size required for handling restful queries
  • Database is encrypted and http server supports only basic authentication
  • Prefer using dedicated postfix server being shared by a set of PDA client applications. Do not expect PDA to be able of handling tens of GigaBytes of log files. On a dedicated postfix server PDA is able to index and serve around 5GB of uncompressed log files. It is not optimized and tested beyond that.
  • PDA is using bounce-regex-list.xml file to gather regular expressions for categorizing bounces by messages. Once in a while it needs to be updated with regular expression for newly encountered bounce messages that was not categorized by current rules. Beware that amount of regular expressions and their complexity influence indexing speed because it might be executed in order of magnitude of 7
  • PDA's user interface is served by HttpServer running on localhost:1523 by default
  • PDA's initialization has a several steps
    1. regex-bounce-list.xml file is processed
    2. log files that were backed up by logrotate are indexed
    3. tailing of the actual log file that is being written to starts, indexing all its current and future content
    4. HttpServer starts listening http requests

Diagram

Clone this wiki locally