...
MDC | Group | Description | Marker Associations | Required? Y/N/C (C= context dependent) N = not required | Use Cases | Code References | ||
---|---|---|---|---|---|---|---|---|
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. | ResponseCode | This 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.
...