Trace Plugin for Firebird 3.x and higher
IBPhoenix have designed and created a completely new trace plugin for Firebird that is optimized for machine processing of trace events.
The main advantages of the new plugin:
- Possibility of a very detailed and precise setting of monitored events and information.
- Event data provided in JSON or Google protocol buffer (protobuf) format.
- Trace session configuration provided in the same format.
- Optimized for speed and efficiency of collection and transmission of trace data.
The plugin is a direct replacement for the standard plugin that comes with Firebird, and its installation is simple and follows the same rules as the preinstalled standard plugin.
The plugin comes as a single dynamic library for the 64-bit version of Firebird 3+ (libibptrace.so for Linux and ibptrace.dll for Windows) the relevant dynamic library needs to be copied into the plugins directory of the Firebird installation.
Then, the TracePlugin item in firebird.conf needs to be modified as follows:
TracePlugin = ibptrace
The plugin uses data structures in the form of Google protocol buffer (protobuf) for trace event representation and trace configuration. Since Firebird supports only text output from a user trace session, and configuration is in text format, the plugin uses the textual form of protobuf either as JSON representation (directly supported by libraries for protobuf) or a binary form of protobuf messages encoded as BASE64 text.
The format used for the trace session configuration is automatically detected by the plugin, but the output format must be specified within the trace session configuration.
The protobuf format coded as BASE64 is more compact and therefore more economical for transferring data, and is optimal for further processing using the protobuf format.
The JSON format is significantly less efficient, but is suitable for processing by a wide variety of tools and programming languages that support this format, and can also be used for visual inspection by the user.
The plugin is currently available for 64-bit Windows and Linux. The plugin has been fully tested and shows no problems with performance or reliability. However if you would like to test it, please contact us directly and an appropriate download will be made available.
Because the configuration of the trace plugin allows very detailed and precise setting of monitored events and provided information, it uses a different mechanism than the standard trace plugin.
While the configuration of a standard trace plugin has only two structural blocks (for the database and for the service) that have a flat structure with parameters at the same level, the configuration of the IBPhoenix trace plugin is represented by a single protobuf message that is structured into logical units represented by various sub-messages.
The configuration can be created either with GUI configuration editor provided with the plugin, in JSON format using any editor, or programmatically via protobuf message.
The Trace plugin comes with several tools written in Python. These tools are:
- trace-conf - GUI Editor for Trace Plugin Configuration
- trace-debug - Tool for fast tracing with output of events in the selected format (including arranged text output) to the screen or to a file.
- rt-mon - A simple real-time connection and transaction monitor/dashboard serving as a sample application for using the plugin.
The distribution package contains a compiled version of all tools for Windows 7 or later. This version can be used directly and does not require Python to be installed.
For a complete description of all data structures used and provided by the plugin, please see the plugin documentation (PDF).
On purchase of an appropriate server license, a download of the software will be made available. A server license costs $135.00 and will allow you to trace multiple databases on that server. Should you wish to use the trace plugin with an embedded application or for deployment to multiple servers you can purchase an unlimited use license for $2500.00 (this also includes upgrades and support).