AnalyzerS

AnalyzerS is a service component part of the CGRateS infrastructure, designed to capture and index API interactions, enabling subsequent querying and analysis of API activity. It operates asynchronously without interfering with the normal API processing pipeline, with captured entries stored on disk and removed based on the configured ttl and cleanup_interval.

Complete interaction with AnalyzerS is possible via CGRateS RPC APIs.

Processing logic

When an API call is processed by CGRateS, AnalyzerS captures and indexes the interaction without requiring additional configuration per API. Each captured record stores the full request and response, along with metadata including source, destination, encoding, duration, timestamp and any reply errors.

Each record is uniquely identified by a combination of encoding, source, destination, method and timestamp, so interactions can be precisely located within the index.

Entries are retained based on the configured ttl and cleaned up periodically. A cleanup pass also runs at service startup to remove any expired entries left from previous runs.

Parameters

It is configured within the analyzers section from JSON configuration via the following parameters:

enabled

Will enable starting of the service. Possible values: <true|false>.

db_path

Path to the folder where the API capture information is stored.

index_type

The type of index used for storage. Possible values: <*scorch|*boltdb|*leveldb|*mossdb|*internal>.

ttl

Time to wait before removing the API capture.

cleanup_interval

The interval at which the database is cleaned of expired entries.

Query API

AnalyzerSv1.StringQuery

The primary RPC method for querying captured API interactions. Accepts an optional set of filters and returns matching records.

HeaderFilters

Filters applied to the top-level metadata fields of the captured record. Supported fields include RequestMethod, RequestSource, RequestDestination, RequestEncoding, RequestDuration and RequestStartTime. Filter expressions follow Bleve’s query string syntax. This filter type is recommended for performance-sensitive queries.

Limit

Maximum number of results to return. If not set or 0, all matching records are returned.

Offset

Number of records to skip before returning results.

ContentFilters

Filters applied to the payload content of captured interactions. They follow the CGRateS inline filter syntax, using the same filtering available across other CGRateS subsystems, and support the following data path prefixes:

  • *req — filtering on request parameter fields

  • *rep — filtering on reply fields

  • *opts — filtering on APIOpts fields

  • *hdr — filtering on header fields

ContentFilters are slower than HeaderFilters. Combining both is recommended when filtering on both metadata and payload content.

Captured record structure

Each captured interaction is stored as a record containing the following fields:

RequestID

Identifier of the API request.

RequestMethod

The API method that was called.

RequestParams

The full set of parameters sent with the request.

RequestSource

The address from which the request originated.

RequestDestination

The address to which the request was sent.

RequestEncoding

The encoding used for the API call.

RequestStartTime

The time at which the request was received.

RequestDuration

The total time taken to process the request.

Reply

The full response returned by the API.

ReplyError

The error returned by the API, if any. Null if the request was successful.

Use cases

  • Debugging and tracing API interactions across the system.

  • Keeping track of API activity per tenant for audit purposes.

  • Monitoring request duration across API methods for performance analysis.

  • Verifying API requests and responses during development and testing.