Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: MDC table edit continued

...

MDCGroupDescription

Marker Associations

Required?

Y/N/C

(C= context dependent)

N = not required


Use Cases

Code References

RequestID


UUID to track the processing of each client request across all the ONAP components involved in its processing


Y

InvocationID

UUID correlates log entries relating to a single invocation of a single component


Y

InstanceUUID

UUID to differentiate between multiple instances of the same (named) log writing service/application


Y

ServiceName

The service inside the partner doing the call - includes API name


Y

PartnerName

See above.


MDC-PartnerName (the larger component doing the call)

for example SDC-BE instead of just SDC for the overall podsThe URI that the caller used to make the call to the component that is logging the message.


Y

StatusCode

This field indicates the high level status of the request . It must have the value COMPLETE when the request is successful and ERROR when there is a failure.

Discussion: status/response/severity relationship

status = global, response below is app specific

Ability to render severity-like line in a non-debug log

Y

- one of (COMPLETE, ERROR)



Y

ResponseCode
This field contains application-specific error codes.
ResponseCodeThis field contains application-specific error codes. For consistency, common error categorizations should be used.

Y



ResponseDescription
This field contains a human readable description of the ResponseCode.

Y



Severity

OPS specific

Use/Map existing? https://www.slf4j.org/api/org/apache/commons/logging/Log.html

ENUM is INFO/TRACE/DEBUG/WARN/ERROR/FATAL

By default - align this severity with the reported log level

(optionally a way to map actual level from reported level if required)


Y

ServerFQDN

This field contains the Virtual Machine (VM) Fully Qualified Domain Name (FQDN) if the server is virtualized. Otherwise, it contains the host name of the logging component.

Best effort (ip, fqdn)

(previously covered by removed "Server" field)

redundancy between clientIP, server, virtualServer name is OK - and helpfull for runtime OPS/Hybrid envs

superceedes virtualServerName

Report what is in the http header

Discussion: roll all 3 fqdn, hostname or ip into one field - do we ever need two of the 3 fields concurrently?

TODO: Verify what is also available from a filebeat agent when it exists


Y



ClientIPAddress

This field contains the requesting remote client application’s IP address if known. Otherwise this field can be empty.

We don't differentiate between inside/outside ONAP for the IP - this supports hybrid environments

Derived from the system

redundancy between clientIP, server, virtualServer name is OK - and helpfull for runtime OPS/Hybrid envs

Discussion: do we need both ip and fqdn fields?

Report what is in the http header


Y



EntryTimestamp

(previously BeginTimestamp)


Date-time that processing activities being logged begins. The value should be represented in UTC and formatted per ISO 8601, such as “2015-06-03T13:21:58+00:00”. The time should be shown with the maximum resolution available to the logging component (e.g., milliseconds, microseconds) by including the appropriate number of decimal digits. For example, when millisecond precision is available, the date-time value would be presented as, as “2015-06-03T13:21:58.340+00:00”.


Context dependent on whether part of an ENTRY marker

(May 7 comment - as a result of coding - this attribute a duplicate of InvokeTimestamp - delete one of them)


C

InvokeTimestamp

(prevously

EndTimestamp)


Timestamp on invocation start

Context dependent on whether part of an INVOKE marker

(May 7 comment - as a result of coding - this attribute a duplicate of EntryTimestamp - delete one of them)


C

TargetEntity

It contains the name of the ONAP component or sub-component, or external entity, at which the operation activities captured in this metrics log record is invoked.

Example: SDC-BE

(May 7 comment - as a result of coding - this attribute is derivable)


C

TargetServiceName

It contains the name  of the API or operation activities invoked (name on the remote/target application) at the TargetEntity.  

Example: Class name of rest endpoint

Discussion: on building call graph vs human readable single line - keep for human readable

Used as valuable URI - to annnote invoke marker

Review in terms of Marker-INVOKE - possiblly add INVOKE-return - to filter reporting

TBD: Coverage by log file type (debug, trace, ...)

TBD: cover off discussion on reducing log files to two (DEBUG/rest) for C* release

(May 7 comment - as a result of coding - this attribute is derivable)


C

TargetElement

VNF/PNF context dependent - on CRUD operations of VNF/PNFs

The IDs that need to be covered with the above Attributes are

       -        VNF_ID OR VNFC_ID : (Unique identifier for a VNF asset that is being instantiated or that would generate an alarms)

       -        VSERVER_ID OR VM_ID (or vmid): (Unique identified for a virtual server or virtual machine on which a Control Loop action is usually taken on, or that is installed  as part of instantiation flow)

       -        PNF : (What is the Unique identifier used within ONAP)


C

ProcessKey

This field can be used to capture the flow of a transaction through the system by indicating the components and operations involved in processing. If present, it can be denoted by a comma separated list of components and applications.

Discussion: should be redundant because of the invocationID


N



...

This field should contain the name of the client application user agent or user invoking the API. The identification of the entity that made the request being served. For a serving API that is authenticating the request, this should be the authenticated username or equivalent (e.g. a userid or a mechid). 

For example SDC-BE instead of just SDC for the overall pods

This is often used for heuristic analysis to identify invocations between ONAP individual ONAP components. Its value has never been clearly stipulated, so a common problem has been a lack of consistency. 

...

The URI that the caller used to make the call to the component that is logging the message.

For EELF Audit log records that capture API requests, this field contains the name of the API invoked at the component creating the record (e.g., Layer3ServiceActivateRequest).

For EELF Audit log records that capture processing as a result of receipt of a message, this field should contain the name of the module that processes the message.

Usage is the same for indexable logs. 

the message.

For EELF Audit log records that capture API requests, this field contains the name of the API invoked at the component creating the record (e.g., Layer3ServiceActivateRequest).

For EELF Audit log records that capture processing as a result of receipt of a message, this field should contain the name of the module that processes the message.

Usage is the same for indexable logs. 

MDC - StatusCode

This field indicates the high level status of the request. It must have the value COMPLETE when the request is successful and ERROR when there is a failure.

Discussion: status/response/severity relationship

status = global, response below is app specific

Ability to render severity-like line in a non-debug log

MDC - ResponseCode

This field contains application-specific error codes. For consistency, common error categorizations should be used.

MDCs - the Rest

Other MDCs are logged in a wide range of contexts.

...

  
Some of that is contentious, but it's just talking points at this stage. We've tiptoed around the issue of extant conventions, and the ongoing result is a lot of attributes that nobody's really sure how to use, and which don't result in better logs. In Casablanca it's time to be less conservative. 

Examples

...


Markers

Markers unambiguously assign semantics to individual log messages. They allow messages that have a specific meaning to be cheaply and easily identified in logger output, without inherently unreliable (and more costly, and less easily enforced) schemes like scanning for magic strings in the text of each log message. 

...