From 67e7e73af21bac324f328c8ecfa54d53a58695eb Mon Sep 17 00:00:00 2001 From: EdenGri <63317673+EdenGri@users.noreply.github.com> Date: Tue, 30 Aug 2022 18:17:18 +0300 Subject: [PATCH] Persistent loglevel HLD (#1041) * Add HLD for persistent logger --- .../persistent-logger-flow.png | Bin 0 -> 145549 bytes .../persistent_logger/persistent_loglevel.md | 491 ++++++++++++++++++ 2 files changed, 491 insertions(+) create mode 100644 doc/logging/persistent_logger/persistent-logger-flow.png create mode 100644 doc/logging/persistent_logger/persistent_loglevel.md diff --git a/doc/logging/persistent_logger/persistent-logger-flow.png b/doc/logging/persistent_logger/persistent-logger-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..308093d926296fb64bdc8584b1dffaf309084513 GIT binary patch literal 145549 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 G4g5c=jg~_I literal 0 HcmV?d00001 diff --git a/doc/logging/persistent_logger/persistent_loglevel.md b/doc/logging/persistent_logger/persistent_loglevel.md new file mode 100644 index 0000000000..3ac80032a9 --- /dev/null +++ b/doc/logging/persistent_logger/persistent_loglevel.md @@ -0,0 +1,491 @@ +# Persistent log level HLD + +# High Level Design Document + +#### Rev 0.1 + +# Table of Contents +- [Persistent log level HLD](#persistent-log-level-hld) +- [High Level Design Document](#high-level-design-document) + - [Rev 0.1](#rev-01) +- [Table of Contents](#table-of-contents) +- [List of Tables](#list-of-tables) +- [List of Figures](#list-of-figures) +- [Revision](#revision) +- [Scope](#scope) +- [Motivation](#motivation) +- [Definitions/Abbreviation](#definitionsabbreviation) +- [1 Background](#1-background) + - [1.1 "swssloglevel" usage](#11-"swssloglevel"-usage) + - [1.2 LOGLEVEL DB schema](#12-loglevel-db-schema) +- [2 Requirements Overview](#2-requirements-overview) +- [3 Persistent log level design](#3-persistent-log-level-design) + - [3.1 High-level design](#31-high-level-design) + - [3.1.1 Move Logger's tables which store in LOGLEVEL DB to CONFIG DB](#311-move-logger's-tables-which-store-in-loglevel-db-to-config-db) + - [3.1.2 Update "swssloglevel" script](#312-update-"swssloglevel"-script) + - [3.1.3 Make the log level persistent using the "config save" CLI command](#313-make-the-log-level-persistent-using-the-"config-save"-cli-command) + - [3.1.4 Listener thread tables](#314-listener-thread-tables) + - [3.1.5 Removing LOGLEVEL DB - phase 2](#315-removing-loglevel-db-phase-2) + - [3.2 Persistent Logger flow](#32-persistent-logger-flow) +- [4 Flows](#4-flows) + - [4.1 System init flow](#41-system-init-flow) +- [5 Cold and Fast Reboot Support](#5-cold-and-fast-reboot-support) +- [6 Warm Reboot Support](#6-warm-reboot-support) + - [6.1 Support warm upgrade](#61-support-warm-upgrade) +- [7 Support downgrade](#7-support-warm-downgrade) +- [8 Yang model](#8-yang-model) +- [9 Testing](#8-testing) + - [9.1 Unit Testing](#91-unit-testing) + - [9.2 Manual Testing](#92-manual-testing) + + + +# List of Tables +* [Table 1: Abbreviations](#definitionsabbreviation) + + +# List of Figures +* [persistent logger flow](#321-return-to-default-log-level) + + + +# Revision +| Rev | Date | Author | Change Description | +|:---:|:--------:|:---------------:|-----------------------------------| +| 0.1 | 07/20/22 | Eden Grisaro | Initial version | + +# Scope +This document provides high level design for SWSS Logger - log level persistent for SWSS, Syncd, and SAI components. + +# Motivation +Log level verbosity is part of the configuration of the OS. Today, the log level is not persistent and gets a default value after reboot. It is required to add the ability to make the loglevel persistent. + +# Definitions/Abbreviation +| Abbreviation | Description | +|---------------|-------------------------------------------| +| SONiC | Software for open networking in the cloud | +| SAI | Switch Abstraction Interface | +| CONFIG DB | Configuration Database | + + +# 1 Background +Today, the user can configure the log level verbosity to each component in SWSS, Syncd, and SAI. In order to configure the log level in runtime, the user uses the **"swssloglevel" script**. The script updates the **LOGLEVEL DB** with the new verbosity. After a cold/fast reboot, the LOGLEVEL DB flushes, and the log level value of all components returns to default. For warm reboot, the log level will remain (as it is in today's implementation). + +## 1.1 "swssloglevel" usage + +The "swssloglevel" options: + +``` +admin@sonic:~$ swssloglevel -h +Usage: swssloglevel [OPTIONS] +SONiC logging severity level setting. + +Options: + -h print this message + -l loglevel value + -c component name in DB for which loglevel is applied (provided with -l) + -a apply loglevel to all components (provided with -l) + -s apply loglevel for SAI api component (equivalent to adding prefix "SAI_API_" to component) + -p print components registered in DB for which setting can be applied + +Examples: + swssloglevel -l NOTICE -c orchagent # set orchagent severity level to NOTICE + swssloglevel -l SAI_LOG_LEVEL_ERROR -s -c SWITCH # set SAI_API_SWITCH severity to ERROR + swssloglevel -l SAI_LOG_LEVEL_DEBUG -s -a # set all SAI_API_* severity to DEBUG + +``` + +## 1.2 LOGLEVEL DB schema + +The LOGLEVEL DB is database #3. It contains a table for each component. +Here is an example of the orchagent component table: + +``` +admin@sonic:~$ redis-cli -n 3 HGETALL "orchagent:orchagent" + +1) “LOGLEVEL” + +2) “INFO” + +3) “LOGOUTPUT” + +4) “SYSLOG” +``` + + +# 2 Requirements Overview + +The persistent Logger should meet the following high-level functional requirement: +- The user will be able to save the configuration of the loglevel and make it persistent after reboot. +- Warm/Fast reboot won't be impacted following this change. + +# 3 Persistent log level design +## 3.1 High-level design + +To make the loglevel persistent to reboot, we will move the Logger's tables in LOGLEVEL DB to CONFIG DB. Since the Config DB is already persistent, the log level will also be persistent to reboot. The log level will be saved using the "config save" CLI command. + +We will split this design into two phases to keep the pr with a small content: + +Phase 1: make the loglevel persistent by moving it to the CONFIG DB. + +Phase 2: Removing LOGLEVEL DB and the jinja2 cache. + +### 3.1.1 Move Logger's tables which store in LOGLEVEL DB to CONFIG DB + +#### Current LOGLEVEL DB schema: + + ```json +{ + "orchagent": { + "orchagent": { + "LOGLEVEL": "INFO", + "LOGOUTPUT": "SYSLOG" + } + }, + + "SAI_API_BUFFER": { + "SAI_API_BUFFER": { + "LOGLEVEL": "SAI_LOG_LEVEL_NOTICE", + "LOGOUTPUT": "SYSLOG" + } + }, + + "JINJA2_CACHE": { + + } +} +``` + +#### New CONFIG DB schema: + + - A new "LOGGER" table will be added to the CONFIG DB. + - There will be a minor change in the table keys(instead of "{componentName}:{componentName}" the key will be the "Logger:{componentName}"). + - The filed logoutput that indicates to which file to print the logs will also be persistent. + +```json +{ + "LOGGER": { + "orchagent": { + "LOGLEVEL": "INFO", + "LOGOUTPUT": "SYSLOG" + }, + + "SAI_API_BUFFER": { + "LOGLEVEL": "INSAI_LOG_LEVEL_NOTICEFO", + "LOGOUTPUT": "SYSLOG" + } + } +} +``` + +### 3.1.2 Update "swssloglevel" script + +In the current implementation, the "swssloglevel" script sets the log level in the LOGLEVEL DB. +- We will update the script so that the log level will be saved in the CONFIG DB. +- To allow the user to set the default log level value for all the components, we will add a -d flag to the "swssloglevel" script. + The default log levels are: SWSS_NOTICE, SAI_LOG_LEVEL_NOTICE. + +``` +admin@sonic:~$ swssloglevel -h + +Usage: swssloglevel [OPTIONS] +SONiC logging severity level setting. + +Options: + -h print this message + -l loglevel value + -c component name in DB for which loglevel is applied (provided with -l) + -a apply loglevel to all components (provided with -l) + -s apply loglevel for SAI api component (equivalent to adding prefix "SAI_API_" to component) + -p print components registered in DB for which setting can be applied + -d return all components to default loglevel + +Examples: + swssloglevel -l NOTICE -c orchagent # set orchagent severity level to NOTICE + swssloglevel -l SAI_LOG_LEVEL_ERROR -s -c SWITCH # set SAI_API_SWITCH severity to ERROR + swssloglevel -l SAI_LOG_LEVEL_DEBUG -s -a # set all SAI_API_* severity to DEBUG + swssloglevel -d # return all components to default loglevel +``` +The change is the file: /sonic-swss-common/common/loglevel.cpp + +### 3.1.3 Make the log level persistent using the "config save" CLI command + +The content of the CONFIG DB will load to the config_db.json. This is our behavior today, and it remains as it is. If the user configures loglevel for some component and runs "config save" the loglevel will be persistent. + +### 3.1.4 Listener thread tables + +In the current implementation, each component has a listener thread that registers to the LOGLEVEL DB table. Each change in the LOGLEVEL DB table is caught by the thread and trigger handler that change the component's Logger configuration. We will keep the same behavior on the CONFIG DB by changing the "settingThread" function. +This change will impact the following components: + +buffermgrd +coppmgrd +fdbsyncd +fpmsyncd +gearsyncd +intfmgrd +portsyncd +syncd +teammgrd +teamsyncd +tlm_teamd +tunnelmgrd +vlanmgrd +vrfmgrd +vxlanmgrd +wjhd +nbrmgrd +neighsyncd +orchagent +portmgrd + +The change is the file: /sonic-swss-common/common/logger.cpp + + +### 3.1.5 Removing LOGLEVEL DB + + - After moving the Logger's table from LOGLEVEL DB, the leftover in LOGLEVEL DB will be the JINJA2_CACHE key. + - JINJA2_CACHE key is a bytecode cache for jinja2 template that stores bytecode in Redis. The JINJA2 cache was created to optimize the warm reboot performance. + - After the jinja2 cache was created, we added other optimizations for the warm reboot and raised the concern that the jinja2 cache does not improve the warm reboot performance anymore. After we checked the warm reboot performance with and without the jinja2 cache and saw no difference between them, we recommend removing the jinja2 cache and the LOGLEVEL DB. + +#### Removing LOGLEVEL DB from schema.h + + - Removing the LOGLEVEL DB from the dbies list. + ``` + /***** DATABASE *****/ + +#define APPL_DB 0 +#define ASIC_DB 1 +#define COUNTERS_DB 2 +#define LOGLEVEL_DB 3 +#define CONFIG_DB 4 +#define PFC_WD_DB 5 +#define FLEX_COUNTER_DB 5 +#define STATE_DB 6 +#define SNMP_OVERLAY_DB 7 +#define RESTAPI_DB 8 +#define GB_ASIC_DB 9 +#define GB_COUNTERS_DB 10 +#define GB_FLEX_COUNTER_DB 11 +#define CHASSIS_APP_DB 12 +#define CHASSIS_STATE_DB 13 +#define APPL_STATE_DB 14 + +``` + +#### Removing jinja2_cache + + - Removing /sonic-config-engine/build/lib/redis_bcc.py file. + +#### Removing LOGLEVEL DB from dbies list + +There are files (about 50 files) that contain the LOGLEVEL DB as part of a list of all the dbies. We will remove the LOGLEVEL DB from these files. + +for example /sonic-swss-common/common/table.cpp: + +``` + const TableNameSeparatorMap TableBase::tableNameSeparatorMap = { + { APPL_DB, TABLE_NAME_SEPARATOR_COLON }, + { ASIC_DB, TABLE_NAME_SEPARATOR_COLON }, + { COUNTERS_DB, TABLE_NAME_SEPARATOR_COLON }, + { LOGLEVEL_DB, TABLE_NAME_SEPARATOR_COLON }, + { CONFIG_DB, TABLE_NAME_SEPARATOR_VBAR }, + { PFC_WD_DB, TABLE_NAME_SEPARATOR_COLON }, + { FLEX_COUNTER_DB, TABLE_NAME_SEPARATOR_COLON }, + { STATE_DB, TABLE_NAME_SEPARATOR_VBAR }, + { APPL_STATE_DB, TABLE_NAME_SEPARATOR_COLON } +}; +``` + + - In addition we will remove the LOGLEVEL DB connector from /sonic-swss/fdbsyncd/fdbsyncd.cpp that not in use. + +## 3.2 Persistent Logger flow + +- Each component has a singleton Logger object with a log level property and listener thread. +- When a component writes a log message, the Logger writes the message only if the loglevel of the message is above the current loglevel property. +- When the user wants to set a new log level to a component, he uses the "swssloglevel" script. The "swssloglevel" script sets the new verbosity to the CONFIG DB (database #4). +- The CONFIG DB change triggers an event, which is caught by the listener thread. +- The listener thread changes the loglevel property of the Logger. +- The user can use the "config save" command to save the current loglevel and make it persistent. It will copy the CONFIG DB content to the config_db.json. + +In addition to the log level, the CONFIG DB contains the log output file. After "config save" the log output will be persistent to reboot too. + + + + + + + +![persistent logger flow](/doc/logging/persistent_logger/persistent-logger-flow.png) + + + + + + + +# 4 Flows + +## 4.1 System init flow + +When the system startup and the Database container initialize, and the config_db.json loads to CONFIG DB. + + - There is a concern about the log level of messages written before the database container is initialized (if it exists). From my understanding, the RSYSLOG-CONFIG is up only after the DATABASE container, so there won't be logs before the config_db.json loads to the CONFIG DB. In case there are messages before the loading, the messages will be in the default log level. + + +# 5 Cold and Fast Reboot Support + + The current implementation support cold and fast reboot. Since in the cold and fast reboot, the CONFIG DB content is deleted, the user needs to run "config save" to make the log level persistent to cold and fast reboot. + +# 6 Warm Reboot Support + + With the current implementation, we don't flush the CONFIG DB before warm-reboot, which means that if the user configures some loglevel (for example, debug), after warm-reboot, the system startup with the same configurable loglevel (debug). + +## 6.1 Support warm upgrade + + Since we are not flushing the LOGLEVEL DB when we perform a warm upgrade, we need to update the db migrator. + - Add LOGLEVEL DB connector in the db migrator. + - In case of a warm upgrade, move Logger tables from LOGLEVEL DB to CONFIG DB (with a minor change in the key) and delete LOGLEVEL DB. + - Exposing the "del" function from the swss-common/sonicv2-connector.h to the db migrator. + +# 7 Support downgrade + +In the current implementation, after a cold/fast reboot, the CONFIG DB and the LOGLEVEL DB flush, and the config_db.json loads into the CONFIG DB. +In addition, in the current implementation, after a warm reboot, the CONFIG DB and the LOGLEVEL DB are not flush, and the config_db.json does not load into the CONFIG DB. +This current state leads us not fully support the downgrade. + +Here are some scenarios to notice: +Scenario 1: + 1. We have the image with the feature. + The CONFIG DB will contain the Logger tables, and the LOGLEVEL DB will be empty. + 2. We perform a downgrade. + The CONFIG DB will not contain the Logger tables. In addition, new Logger tables with default values will be added to the LOGLEVEL DB. After the downgrade, the user will be able to change the loglevel. + 3. We perform warm-upgrade: + The Logger tables that were created in the LOGLEVEL DB from step 1 will move to the CONFIG DB. + +Scenario 2: + 1. We have the image with the feature. + The CONFIG DB will contain the Logger tables, and the LOGLEVEL DB will be empty. + 2. We perform a downgrade. + The CONFIG DB will not contain the Logger tables. In addition, new Logger tables with default values will be added to the LOGLEVEL DB. After the downgrade, the user will be able to change the loglevel. + 3. We perform a upgrade: + New Logger tables with default values will be added to the CONFIG DB. + +Scenario 3: + 1. We have the image with the feature, and the user changes the loglevel of some components. For example, the user changes the orchagent loglevel to DEBUG. + 2. running "config save". The Logger tables are saved to the config_db.json and are persistent. + 3. We perform a downgrade. + The CONFIG DB will contain the Logger tables from the config_db.json. In addition, new Logger tables with default values will be added to the LOGLEVEL DB. After the downgrade, the user will be able to change the loglevel. + 4. We perform warm-upgrade: + The Logger tables from the LOGLEVEL DB will override the unused Logger tables of the CONFIG DB. + + +# 8 Yang model + + The following YANG model will be added in order to provide support for the Logger: + - sonic-logger.yang + + ``` + + description "Logger Table yang Module for SONiC"; + + typedef swss_loglevel { + type enumeration { + enum EMERG; + enum ALERT; + enum CRIT; + enum ERROR; + enum WARN; + enum NOTICE; + enum INFO; + enum DEBUG; + } + } + + typedef sai_loglevel { + type enumeration { + enum SAI_LOG_LEVEL_CRITICAL; + enum SAI_LOG_LEVEL_ERROR; + enum SAI_LOG_LEVEL_WARN; + enum SAI_LOG_LEVEL_NOTICE; + enum SAI_LOG_LEVEL_INFO; + enum SAI_LOG_LEVEL_DEBUG; + } + } + + container sonic-logger { + + container LOGGER { + + description "Logger table in config_db.json"; + + list LOGGER_LIST { + + key "name"; + + leaf name { + description "Component name in LOGGER table (example for component: orchagent, Syncd, SAI components)."; + type string; + } + + leaf LOGLEVEL { + description "The log verbosity for the component"; + mandatory true; + type union { + type swss_loglevel; + type sai_loglevel; + } + } + + leaf LOGOUTPUT { + type enumeration { + enum SYSLOG; + enum STDOUT; + enum STDERR; + } + default SYSLOG; + } + } + /* end of list LOGGER_LIST */ + } + /* end of LOGGER container */ + } + /* end of sonic-logger container */ + + + ``` + + +# 9 Testing + +## 9.1 Unit Testing + + - Update the existing test that uses the LOGLEVEL DB: + /sonic-swss-common/tests/logger_ut.cpp + + - Verify the log levels of all components returns to default after running "swssloglevel -d": + - Change the log level for some components from Notice to Info. + - Run "swssloglevel -d". + - Verify all components return to the default log level. + + - Yang model tests: + - Logger table with a wrong loglevel, or with a wrong logoutput + - Logger table without loglevel or logoutput fileds + - Logger table with valid values + +## 9.2 Manual Testing + + - Verify the log level is persistent to cold/fast/warm reboot after the user runs "config save": + - Change the log level for some component from Notice to Info. + - Run "config save". + - Verify the loglevel.json file was created. + - Reboot. + - Verify the log level is "Info". + - Verify the log level is not persistent to cold/fast reboot if the user didn't run "config save": + - Change the log level for some components from Notice to Info. + - Reboot. + - Verify the log level is "Notice". + - Verify that we able change the log level for all the components. + - Verify the LOGLEVEL DB does not contain the Logger tables after a warm upgrade. + - Verify the CONFIG DB contains the Logger tables after a warm upgrade. + +