To invoke the List CDRs tool, run the list-cdrs.sh script under the sentinel-express-sdk/tools/list-cdrs directory. Pass one or more file paths as arguments, each being a path to a completed binary CDR file generated by Sentinel.

Note If the sentinel-express-sdk/tools parent directory does not contain a list-cdrs directory, then the List CDRs tool needs to be installed. The Installing List CDRs page describes how to install the List CDRs tool.

Calling the script with no arguments shows the expected syntax:

$ ./tools/list-cdrs/list-cdrs.sh
Usage: list-cdrs.sh [--no-header] [--no-footer] [--no-protocol] [--ignore-error]
                    [--output-file OUTPUTFILE] [--size-limit BYTES]
                    [--cdr-filter FIELD=REGEX] CDRFILE [CDRFILE]...

    --no-header              - Disable printing of CDR headers.
    --no-footer              - Disable printing of CDR footers.
    --no-protocol            - Disable printing of protocol and spec revisions
                               in top level AVPs, e.g. "(Ro,vcb0)".
    --ignore-error           - Continue processing CDRs files when encountering
                               recoverable errors.
    --list-icids             - List all unique IMS Charging Identifiers in the given CDR file(s),
                               in order of first appearance.
    --filter-by-icid ICID    - Print CDR message body only when CDR contains the given IMS Charging Identifier.
                               ICID can be listed by "--list-icids" option.
    --output-file OUTPUTFILE - Append CDR output to OUTPUTFILE rather than to the console.
    --size-limit BYTES       - CDR record size limit. Minimum and default value is
                               67108864 (64MB). Increase if encountering
                               "Protocol message was too large" exception.
    --cdr-filter FIELD=REGEX - Print CDR message body only when the given FIELD
                               matches the given regular expression. FIELD can be
                               a field name, an AVP name, or an AVP path like
                               "/IMS-Information/User-Session-Id".
    CDRFILE                  - A completed binary CDR file as produced by Sentinel. Both the new
                               AVP based format (Sentinel 2.5 and later) and the older
                               format (Sentinel 2.4 and earlier) are supported. CDR files
                               can optionally be in gzip format, using a '.gz' suffix.
                               Partially written CDR files (ending in ".tmp") are not supported.

An example invocation, showing how to print a CDR file:

$ ./tools/list-cdrs/list-cdrs.sh /path/to/cdr_101_1467865845057.log
2016-07-07T16:30:36.554+1200 Header {
  ra_name=CDR Generation,
  ra_vendor=OpenCloud,
  ra_version=2.3,
  ra_release=2.3.0.0-M1,
  ra_build=20160706024526,
  ra_revision=cdr-ra/2.3.0@d55f6a1,
  description=CDR session,
  rhino_node=101,
  ra_entity=cdr,
  hostname=mortadella
}
2016-07-07T16:30:36.600+1200 AvpCdr {
  avps=[
    Subscription-Id(Ro,vcb0)[
      Subscription-Id-Type[2],
      Subscription-Id-Data[tel:34600000002]
    ],
    IMS-Information(Ro,vcb0)[
      Role-Of-Node[ORIGINATING_ROLE(0)],
      Node-Functionality[AS(6)],
      User-Session-Id[08tE5q0fRdQRrus7F4FWqg],
      Session-Priority[PRIORITY_2(2)],
      Calling-Party-Address[tel:34600000002],
      Called-Party-Address[tel:34600000001],
      Time-Stamps[
        SIP-Request-Timestamp[1467865834000],
        SIP-Response-Timestamp[1467865834000]
      ],
      SDP-Session-Description[v=0],
      SDP-Session-Description[o=- 1000 1000 IN IP4 127.0.0.1],
      SDP-Session-Description[s=test-session],
      SDP-Session-Description[t=0 0],
      Cause-Code[0],
      Early-Media-Description[
        SDP-TimeStamps[
          SDP-Offer-Timestamp[1467865834000],
          SDP-Answer-Timestamp[1467865834000]
        ],
        SDP-Session-Description[v=0],
        SDP-Session-Description[o=- 1000 1000 IN IP4 127.0.0.1],
        SDP-Session-Description[s=test-session],
        SDP-Session-Description[t=0 0]
      ]
    ],
    Service-Context-Id(Ro,vcb0)[12.32274@3gpp.org],
    OC-Sentinel-Selection-Key(Ext,Ext)[DefinitelyNotOpenCloud:DefinitelyNotOpenCloud:sipcall:mmtel-orig:],
    OC-Call-Type(Ext,Ext)[MOC(1)],
    OC-Service-Type(Ext,Ext)[SipCall(2)],
    OC-Charging-Result(Ext,Ext)[2001],
    OC-OCS-Session-Id(Ext,Ext)[diameterclient;diameterro-0;1529370976;0;08tE5q0fRdQRrus7F4FWqg],
    Session-Id(Ro,vcb0)[diameterclient;diameterro-0;1529370976;0;08tE5q0fRdQRrus7F4FWqg],
    OC-OCS-Session-Termination-Cause(Ext,Ext)[0],
    OC-Sentinel-Error(Ext,Ext)[None(1)],
    OC-Charging-Instance(Ext,Ext)[
      OC-Charging-Instance-Name[scur_charging_instance],
      OC-Session-Counter[
        OC-Session-Counter-Address[
          OC-Session-Counter-Address-Key[Subscriber-Id],
          OC-Session-Counter-Address-Value[tel:34600000002]
        ],
        OC-Session-Counter-Address[
          OC-Session-Counter-Address-Key[Service-Id],
          OC-Session-Counter-Address-Value[1]
        ],
        OC-Session-Counter-Address[
          OC-Session-Counter-Address-Key[Cc-Unit-Type],
          OC-Session-Counter-Address-Value[Cc-Time]
        ],
        OC-Cumulative-Committed-Used[1000],
        OC-Cumulative-Granted[60000],
        OC-Cumulative-Granted-Refund[0],
        OC-Cumulative-Requested[60000],
        OC-Cumulative-Requested-Refund[0],
        OC-Cumulative-Sent-Used[1000],
        OC-Cumulative-Suspended-Duration[0],
        OC-Reported-Used[0],
        OC-Pending-Requested[0],
        OC-Start-Time[1467865834000],
        OC-End-Time[1467865836000]
      ]
    ],
    OC-Call-Id(Ext,Ext)[08tE5q0fRdQRrus7F4FWqg],
    MMTel-Information(Ro,vcb0)[
      Supplementary-Service[
        Service-Type[2]
      ],
      Subscriber-Role[ORIGINATING(0)]
    ]
  ]
}
2016-07-07T16:30:38.937+1200 AvpCdr {
  avps=[
    Subscription-Id(Ro,vcb0)[
      Subscription-Id-Type[2],
      Subscription-Id-Data[tel:34600000002]
    ],
    IMS-Information(Ro,vcb0)[
      Role-Of-Node[ORIGINATING_ROLE(0)],
      Node-Functionality[AS(6)],
      User-Session-Id[cXD7xzRmA1w4iWBzT9XMdQ],
      Session-Priority[PRIORITY_2(2)],
      Calling-Party-Address[tel:34600000002],
      Called-Party-Address[tel:34600000003],
      Time-Stamps[
        SIP-Request-Timestamp[1467865837000],
        SIP-Response-Timestamp[1467865837000]
      ],
      SDP-Session-Description[v=0],
      SDP-Session-Description[o=- 1000 1000 IN IP4 127.0.0.1],
      SDP-Session-Description[s=test-session],
      SDP-Session-Description[t=0 0],
      Cause-Code[0],
      Early-Media-Description[
        SDP-TimeStamps[
          SDP-Offer-Timestamp[1467865837000],
          SDP-Answer-Timestamp[1467865837000]
        ],
        SDP-Session-Description[v=0],
        SDP-Session-Description[o=- 1000 1000 IN IP4 127.0.0.1],
        SDP-Session-Description[s=test-session],
        SDP-Session-Description[t=0 0]
      ]
    ],
    Service-Context-Id(Ro,vcb0)[12.32274@3gpp.org],
    OC-Sentinel-Selection-Key(Ext,Ext)[DefinitelyNotOpenCloud:DefinitelyNotOpenCloud:sipcall:mmtel-orig:],
    OC-Call-Type(Ext,Ext)[MOC(1)],
    OC-Service-Type(Ext,Ext)[SipCall(2)],
    OC-Charging-Result(Ext,Ext)[2001],
    OC-OCS-Session-Id(Ext,Ext)[diameterclient;diameterro-0;1529370976;2;cXD7xzRmA1w4iWBzT9XMdQ],
    Session-Id(Ro,vcb0)[diameterclient;diameterro-0;1529370976;2;cXD7xzRmA1w4iWBzT9XMdQ],
    OC-OCS-Session-Termination-Cause(Ext,Ext)[0],
    OC-Sentinel-Error(Ext,Ext)[None(1)],
    OC-Charging-Instance(Ext,Ext)[
      OC-Charging-Instance-Name[scur_charging_instance],
      OC-Session-Counter[
        OC-Session-Counter-Address[
          OC-Session-Counter-Address-Key[Subscriber-Id],
          OC-Session-Counter-Address-Value[tel:34600000002]
        ],
        OC-Session-Counter-Address[
          OC-Session-Counter-Address-Key[Service-Id],
          OC-Session-Counter-Address-Value[1]
        ],
        OC-Session-Counter-Address[
          OC-Session-Counter-Address-Key[Cc-Unit-Type],
          OC-Session-Counter-Address-Value[Cc-Time]
        ],
        OC-Cumulative-Committed-Used[1000],
        OC-Cumulative-Granted[60000],
        OC-Cumulative-Granted-Refund[0],
        OC-Cumulative-Requested[60000],
        OC-Cumulative-Requested-Refund[0],
        OC-Cumulative-Sent-Used[1000],
        OC-Cumulative-Suspended-Duration[0],
        OC-Reported-Used[0],
        OC-Pending-Requested[0],
        OC-Start-Time[1467865837000],
        OC-End-Time[1467865838000]
      ]
    ],
    OC-Call-Id(Ext,Ext)[cXD7xzRmA1w4iWBzT9XMdQ],
    MMTel-Information(Ro,vcb0)[
      Supplementary-Service[
        Service-Type[2]
      ],
      Subscriber-Role[ORIGINATING(0)]
    ]
  ]
}
2016-07-07T16:30:43.991+1200 AvpCdr {
  avps=[
    Subscription-Id(Ro,vcb0)[
      Subscription-Id-Type[2],
      Subscription-Id-Data[tel:34600000002]
    ],
    IMS-Information(Ro,vcb0)[
      Role-Of-Node[TERMINATING_ROLE(1)],
      Node-Functionality[AS(6)],
      User-Session-Id[AhzD75RR1S7WP1_BN88Ajg],
      Session-Priority[PRIORITY_2(2)],
      Calling-Party-Address[tel:34600000002],
      Called-Party-Address[sip:conf-factory@localhost:5280],
      Requested-Party-Address[sip:conf-factory@localhost:5060],
      Time-Stamps[
        SIP-Request-Timestamp[1467865835000],
        SIP-Response-Timestamp[1467865835000]
      ],
      SDP-Session-Description[v=0],
      SDP-Session-Description[o=- 2000 1000 IN IP4 10.4.1.1],
      SDP-Session-Description[s=test-session],
      SDP-Session-Description[t=0 0],
      Cause-Code[0],
      Early-Media-Description[
        SDP-TimeStamps[
          SDP-Offer-Timestamp[1467865838000],
          SDP-Answer-Timestamp[1467865838000]
        ],
        SDP-Session-Description[v=0],
        SDP-Session-Description[o=- 2000 1000 IN IP4 10.4.1.1],
        SDP-Session-Description[s=test-session],
        SDP-Session-Description[t=0 0]
      ]
    ],
    Service-Context-Id(Ro,vcb0)[12.32274@3gpp.org],
    OC-Sentinel-Selection-Key(Ext,Ext)[DefinitelyNotOpenCloud:DefinitelyNotOpenCloud:sipcall:mmtel-conf:],
    OC-Call-Type(Ext,Ext)[MTC(3)],
    OC-Service-Type(Ext,Ext)[SipCall(2)],
    OC-Charging-Result(Ext,Ext)[2001],
    OC-OCS-Session-Id(Ext,Ext)[diameterclient;diameterro-0;1529370976;1;daJvi_dNie_W_v-fzDOflg],
    Session-Id(Ro,vcb0)[diameterclient;diameterro-0;1529370976;1;daJvi_dNie_W_v-fzDOflg],
    OC-OCS-Session-Termination-Cause(Ext,Ext)[0],
    OC-Sentinel-Error(Ext,Ext)[None(1)],
    OC-Charging-Instance(Ext,Ext)[
      OC-Charging-Instance-Name[scur_charging_instance],
      OC-Session-Counter[
        OC-Session-Counter-Address[
          OC-Session-Counter-Address-Key[Subscriber-Id],
          OC-Session-Counter-Address-Value[tel:34600000002]
        ],
        OC-Session-Counter-Address[
          OC-Session-Counter-Address-Key[Service-Id],
          OC-Session-Counter-Address-Value[3]
        ],
        OC-Session-Counter-Address[
          OC-Session-Counter-Address-Key[Cc-Unit-Type],
          OC-Session-Counter-Address-Value[Cc-Time]
        ],
        OC-Cumulative-Committed-Used[8000],
        OC-Cumulative-Granted[63000],
        OC-Cumulative-Granted-Refund[0],
        OC-Cumulative-Requested[180000],
        OC-Cumulative-Requested-Refund[0],
        OC-Cumulative-Sent-Used[8000],
        OC-Cumulative-Suspended-Duration[0],
        OC-Reported-Used[0],
        OC-Pending-Requested[0],
        OC-Start-Time[1467865835000],
        OC-End-Time[1467865843000]
      ]
    ],
    OC-Call-Id(Ext,Ext)[daJvi_dNie_W_v-fzDOflg],
    MMTel-Information(Ro,vcb0)[
      Supplementary-Service[
        Service-Type[10],
        Associated-Party-Address[tel:34600000002],
        Service-Id[mmtelconf101MpAdqRMBdip0aIpqObY1hQ],
        Change-Time[1467865843000]
      ],
      Subscriber-Role[TERMINATING(1)]
    ]
  ]
}
2016-07-07T16:30:45.057+1200 Footer {}

Logging output

The List CDRs tool writes its main output to the console, but it can be configured to write some extra debugging to a log file.

It uses the log4j logging library, and its log4j configuration file is located at sentinel-express-sdk/list-cdrs/log4j.properties.

By default, it will log to sentinel-express-sdk/tools/list-cdrs/logs/list-cdrs.log. It logs very little when using the default configuration — the log file will typically be empty unless configured for debug logging.

To enable debug logging, change the log level on the last line of the log4j.properties file to DEBUG:

log4j.logger.sentinel.cdr=DEBUG
Previous page Next page
Sentinel Express Version 2.9.0