summaryrefslogtreecommitdiffstats
path: root/docs/APPC Logging Guide
diff options
context:
space:
mode:
Diffstat (limited to 'docs/APPC Logging Guide')
-rw-r--r--docs/APPC Logging Guide/APPC Logging Guide.rst334
-rw-r--r--docs/APPC Logging Guide/APPCLoggingArchitecturediagram.pngbin0 -> 119759 bytes
2 files changed, 334 insertions, 0 deletions
diff --git a/docs/APPC Logging Guide/APPC Logging Guide.rst b/docs/APPC Logging Guide/APPC Logging Guide.rst
new file mode 100644
index 000000000..26aa7f914
--- /dev/null
+++ b/docs/APPC Logging Guide/APPC Logging Guide.rst
@@ -0,0 +1,334 @@
+.. ============LICENSE_START==========================================
+.. ===================================================================
+.. Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+.. ===================================================================
+.. Licensed under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+.. you may not use this documentation except in compliance with the License.
+.. You may obtain a copy of the License at
+..
+.. https://creativecommons.org/licenses/by/4.0/
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+.. ============LICENSE_END============================================
+.. ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+APPC Logging
+============
+
+The APPC modules manage logging functionality according to the logging
+configuration file ``org.ops4j.pax.logging.cfg``. APPC configuration defines
+the location of the logging configuration file. Each APPC module
+configured to generate logs reads the configuration file periodically
+and generates logs according to the current logging level.
+
+Logging Architecture
+---------------------
+
+The following diagram illustrates the APPC logging architecture.
+
+|image0|
+
+Log Types
+---------
+
+APPC generates several types of logs to capture information needed to
+operate, troubleshoot, and report on performance:
+
+- **Audit Log**: The Audit Log provides a summary view of the
+ processing of a request – a transaction – within an application. It
+ captures activity requests received by APPC and includes such
+ information as the time the activity initiated, when it finishes, and
+ the API invoked at the component.
+
+- **Metric Log**: The Metrics Log provides a more detailed view into
+ the processing of a transaction within APP-C. It captures the
+ beginning and ending of activities necessary to complete the
+ transaction within APPC modules, for example, the Dispatcher module,
+ and other ONAP components such as A&AI.
+
+- **Error Log**: The Error Log captures INFO, WARN, ERROR, and FATAL
+ conditions sensed (“exception handled”) by the APPC software
+ components.
+
+- • **Debug Log**: The optional Debug Log captures data that may be required to debug and correct abnormal conditions of the application.
+
+
+The APPC modules manage logging functionality according to the logging
+configuration file ``org.ops4j.pax.logging.cfg``. APPC configuration defines
+the location of the logging configuration file. Each APPC module
+configured to generate logs reads the configuration file periodically
+and generates logs according to the current logging level.
+
+Logging Levels
+~~~~~~~~~~~~~~
+
++-------------+----------------+---------------+-------------+-------------+------------+
+| **Level** | **Log type** |
++=============+================+===============+=============+=============+============+
+| | | **Errors** |
++-------------+----------------+---------------+-------------+-------------+------------+
+| | **Audit** | **Metrics** | **FATAL** | **ERROR** | **WARN** |
++-------------+----------------+---------------+-------------+-------------+------------+
+| OFF | No | No | No | No | No |
++-------------+----------------+---------------+-------------+-------------+------------+
+| FATAL | Yes | Yes | Yes | No | No |
++-------------+----------------+---------------+-------------+-------------+------------+
+| ERROR | Yes | Yes | Yes | Yes | No |
++-------------+----------------+---------------+-------------+-------------+------------+
+| WARN | Yes | Yes | Yes | Yes | Yes |
++-------------+----------------+---------------+-------------+-------------+------------+
+
+Response Codes
+~~~~~~~~~~~~~~
+
++----------------------------+--------------------------------+
+| **Response code ranges** | **Error type** |
++============================+================================+
+| 100-199 | Permission errors |
++----------------------------+--------------------------------+
+| 200-299 | Availability errors/Timeouts |
++----------------------------+--------------------------------+
+| 300-399 | Data errors |
++----------------------------+--------------------------------+
+| 400-499 | Schema errors |
++----------------------------+--------------------------------+
+| 500-599 | Business process errors |
++----------------------------+--------------------------------+
+| 900-999 | Unknown errors |
++----------------------------+--------------------------------+
+
+Logging Output
+---------------
+
+APPC generates logging output according to Event and Error Logging Framework(EELF)requirements in the
+following format:
+
+Error Log
+~~~~~~~~~~
+
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **Field** | **Description** |
++=========================+=================================================================================================================================================================================================================================================+
+| Timestamp | Date-time when error occurs in UTC. |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| RequestID | Universally unique transaction requestID (UUID). |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ThreadId | Blank |
+| | |
+| | This traces processing of a request over a number of threads of a single ONAP component. |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ServiceName | Externally advertised API invoked by clients of this component, for example, "Audit", "HealthCheck". |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| PartnerName | Client or user invoking the API. |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| TargetEntity | ONAP component/subcomponent or non-ONAP entity invoked for this suboperation’s activities, for example, A&AI, VF, VM, MySql. |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| TargetServiceName | Known name of External API/operation activities invoked on TargetEntity (ONAP component/subcomponent or non-ONAP entity), for example, VM UUID, VF UUID. |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ErrorCategory | WARN or ERROR |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ErrorCode | Code representing the error condition according to the error categories. |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ErrorDescription | Human readable description of the error - Error name, for example: "CONFIGURATION\_STARTED". |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| detailMessage | This field may contain any additional information useful in describing the error condition, for example: |
+| | |
+| | ``Application Controller (APP-C) initialization started at {0}|\`` |
+| | ``No resolution is required, this is an informational message|\`` |
+| | ``The APP-C component configuration has been started because the component is being initialized or loaded for the first time, or a new instance of the component is being created. This message indicates that the component is starting.`` |
++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Debug Log
+~~~~~~~~~
+
++-----------------+------------------------------------------------------------+
+| **Field** | **Description** |
++=================+============================================================+
+| Timestamp | Date-time of the log record. |
++-----------------+------------------------------------------------------------+
+| RequestID | Universally unique transaction requestID (UUID). |
++-----------------+------------------------------------------------------------+
+| DebugInfo | Debug Information |
++-----------------+------------------------------------------------------------+
+| End of Record | Designates the logical end of a multi-line debug record. |
++-----------------+------------------------------------------------------------+
+
+Audit Log
+~~~~~~~~~
+
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **Field** | **Description** |
++======================================+===========================================================================================================================================================================================================+
+| BeginTimestamp | Date-time of the start of a request activity. |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| EndTimestamp | Date-time of the end of a request activity. |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| RequestID | Universally unique transaction request ID (UUID). |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| serviceInstanceID | Uniquely identifies a service instance, for example, “service graph”. The primary key, for example, in A&AI, to reference or manage the service instance as a unit. |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| threadId | Empty |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| physical/virtual server name   | Empty (the value added by the log files collecting agent). |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| serviceName  | Externally advertised API invoked by clients of this component, for example, "Audit", "HealthCheck". |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| PartnerName | Client or user invoking the API.   |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| StatusCode | High-level success or failure of the request (COMPLETE or ERROR). |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ResponseCode | Application specific response code - LCM API error codes categorized according to the logging categories. |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ResponseDescription | Human readable description of the application specific response code, for example, "INVALID INPUT PARAMETER - ${detailedErrorMsg}". |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| instanceUUID | Universally unique identifier to differentiate between multiple instances of the same (named), log writing component - the specific APPC instance UUID. |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Category log level | Enum: “INFO” \| “WARN” \|”DEBUG” \| “ERROR” \| “FATAL”. Current log level for the entire APP-C. |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Severity | Blank |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Server IP address  | Blank |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ElapsedTime | Elapsed time to complete processing of an API or request at the granularity available to the component system. This value should be the difference between BeginTimestamp and EndTimestamp fields.  |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Server | VM FQDN if virtualized, otherwise the host name of the logging component.  |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ClientIPaddress | Requesting remote client application’s IP address if known, otherwise empty. |
++--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Metrics Log
+~~~~~~~~~~~
+
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **Field** | **Description** |
++===============================================+==================================================================================================================================================================================================================+
+| BeginTimestamp | Date-time when a suboperation activity is begun in UTC |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| EndTimestamp | Date-time when a supoperation activity is completed in UTC |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| RequestID | Universally unique transaction request ID (UUID) |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| serviceInstanceID       | VMUUID, VFUUID |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| threadId | Optional |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| physical/virtual server name | Empty if its value can be added by the log files collecting agent. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| serviceName | For example: "Audit", "HealthCheck" etc |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| PartnerName Client or user invoking the API | |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| TargetEntity  | APPC internal subcomponent, for example, MD-SAL, or external component, for example, A&AI, SSH, Netconf, invoked for this suboperation. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| TargetServiceName   | Operation activities invoked on TargetEntity e.g. A&AI GET generic- vnf |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| StatusCode | High level success or failure of the suboperation activities (COMPLETE or ERROR) |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ResponseCode | Specific response code returned by the suboperation activities. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ResponseDescription | Human readable description of the response code. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| instanceUUID  | APPC instance ID. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Category log level | Enumerated values: “INFO” \| “WARN” \|”DEBUG” \| “ERROR” \| “FATAL”. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Severity | Empty |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Server IP address | The logging component host server’s IP address. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ElapsedTime | Elapsed time to complete processing of the sub operation activities at the granularity available to the component system.  This value should be the difference between EndTimestamp and BeginTimestamp fields. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Server | VM FQDN if virtualized, otherwise the host name of the logging component. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ClientIP | Requesting remote client application’s IP address. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| class name | Optional. The name of the class that has caused the log record creation. For OO programing languages that support this concept. |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Unused  | |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ProcessKey | Optional |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| TargetVirtualEntity | Empty |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| CustomField1 | Empty (specific attributes exposed by developers) |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| CustomField2 | Empty |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| CustomField3 | Empty |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| CustomField4 | Empty |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| detailMessage | Empty |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Log File Locations
+------------------
+
+The logging configuration file, ``org.ops4j.pax.logging.cfg`` are located in
+appc Git repository:
+
+``/appc/appc-common/src/main/resources/org/openecomp/appc/org.ops4j.pax.logging.cfg``
+
+
+The logs are stored at the location defined by the appropriate appender:
+
+``log4j.appender.error.File=${karaf.data}/log/APPC/appc-error.log``
+
+``log4j.appender.debug.file=${karaf.data}/log/APPC/appc-debug.log``
+
+``log4j.appender.metric.File=${karaf.data}/log/APPC/appc-metric.log``
+
+``log4j.appender.audit.File=${karaf.data}/log/APPC/appc-audit.log``
+
+
+Enabling APPC Logging
+----------------------
+
+APPC uses Event and Error Logging Framework (EELF) for application logs.
+To enable EELF logging:
+
+1. Replace the default configuration file located at
+ ``/opt/opendaylight/current/etc/org.ops4j.pax.logging.cfg``
+
+ with the configuration file that is checked into git:
+
+ ``/appc/appc-common/src/main/resources/org/openecomp/appc/org.ops4j.pax.logging.cfg``
+
+2. Stop and restart ODL controller for the configuration changes to take
+ effect.
+
+3. Verify logging changes at the following log paths:
+
+ - ``/opt/opendaylight/current/data/log/eelf/karaf.log``
+ This log contains the regular karaf.log output reformatted to use
+ the EELF MDC properties and the pattern that is configured in the
+ ``org.ops4j.pax.logging.cfg`` file.
+ - ``/opt/opendaylight/current/data/log/APPC/<package-name>``
+ This directory contains the audit, metric, error, and debug logs that are configured in the ``org.ops4j.pax.logging.cfg`` file.
+
+
+**Note:**
+ ``/opt/opendaylight/current/data/log/APPC/controller`` contains the logs generated from the package ``org.openecomp.\*`` (all APPC logs)
+
+- Error.log: alarms –ERROR level logs and above
+
+- Info.log: INFO level logs only
+
+- Debug.log: debugging – DEBUG level and above
+
+- Audit – AUDIT level and above
+
+Log Rotation
+------------
+
+Log rotation is performed after every 100 MB size limit is reached. The
+log rotation interval is defined as part of the EELF framework.
+
+.. |image0| image:: APPCLoggingArchitecturediagram.png
+ :width: 6.49097in
+ :height: 3.46181in
+
diff --git a/docs/APPC Logging Guide/APPCLoggingArchitecturediagram.png b/docs/APPC Logging Guide/APPCLoggingArchitecturediagram.png
new file mode 100644
index 000000000..4ed155c05
--- /dev/null
+++ b/docs/APPC Logging Guide/APPCLoggingArchitecturediagram.png
Binary files differ