Dynamic Log Level for CWC

Overview

With predictable, easy-to-use APIs, you can dynamically manage container log levels at runtime without requiring a pod restart.

Data Flow

The CWC component exposes a REST API at /loglevels, and each pod has its own log-level ConfigMap. When a request targets a specific container, the handler parses the payload and updates the pod’s ConfigMap, which updates the mounted .minlevel.yaml file. The f5-log library watches this file and automatically applies the new log level to the container.

Before You Begin

Log Level REST API

This table lists the supported actions.

API Command Action
GET - List all Log Level resources in a namespace
- Get Log Level resource by name
PUT - Replace Log Level resource by name
PATCH - Update log levels of containers by name
DELETE - Reset Log Level resource by name

Sample Commands

GET Requests

List all Log Level resources in a namespace

The below command performs HTTPS GET to /v1alpha1/namespaces/{namespace}/loglevels to retrieve the current log-level settings for containers in the specified namespace, authenticated via mutual TLS (client certificate, key, and CA).

Syntax:

curl -X GET https://f5-spk-cwc.f5-utils:30881/v1alpha1/namespaces/{namespace}/loglevels 
    --cert client_certificate 
    --cacert ca_certificate 
    --key client_key

Sample to list all log level resources in the f5-utils namespace.

curl -X GET https://f5-spk-cwc.f5-utils:30881/v1alpha1/namespaces/f5-utils/loglevels 
    --cert client_certificate 
    --cacert ca_certificate 
    --key client_key

Get Log Level resource by name

The below command performs HTTPS GET to /v1alpha1/namespaces/{namespace}/loglevels/{name} to retrieve the log-level configuration for the containers of the specified log-level resource in the given namespace, using mutual TLS (client certificate, key, and CA).

Syntax:

curl -X GET https://f5-spk-cwc.f5-utils:30881/v1alpha1/namespaces/{namespace}/loglevels/{name} 
    --cert client_certificate 
    --cacert ca_certificate 
    --key client_key

Sample to retrieve f5-tmm log level resource belonging to the f5-utils namespace.

curl -X GET https://f5-spk-cwc.f5-utils:30881/v1alpha1/namespaces/f5-utils/loglevels/f5-tmm 
    --cert client_certificate 
    --cacert ca_certificate 
    --key client_key

PUT command

Replace Log Level resource by name

The below command performs HTTPS PUT to /v1alpha1/namespaces/{namespace}/loglevels/{name} to update log-level containers by replacing all the log-level resource configuration, using mutual TLS (client certificate, key, and CA). The JSON payload defines a LogLevel resource where spec.containers maps container names to desired levels (DEBUG, INFO, WARN, ERROR, FATAL).

curl -X PUT https://f5-spk-cwc.f5-utils:30881/v1alpha1/namespaces/{namespace}/loglevels/{name} 
    --cert client_certificate 
    --cacert ca_certificate 
    --key client_key 
    -d '{"apiVersion": "v1alpha1", "kind": "LogLevel", "metadata": {"name": "<name>"},"spec": {"containers": {"<container_name>": "<log_level>"}}}'

Sample to replace the f5-tmm log level resource in the f5-utils namespace, replacing the existing containers configuration with a log level of DEBUG for f5-tmm-routing container.

curl -X PUT https://f5-spk-cwc.f5-utils:30881/v1alpha1/namespaces/f5-utils/loglevels/f5-tmm 
    --cert client_certificate 
    --cacert ca_certificate 
    --key client_key 
    -d '{"apiVersion":  "v1alpha1", "kind":  "LogLevel", "metadata":  {"name":  "f5-tmm"},"spec": {"containers": {"f5-tmm-routing": "DEBUG"}}}'

PATCH command

Update log levels of containers by name

The below command performs HTTPS PATCH to /v1alpha1/namespaces/{namespace}/loglevels/{name} to update log-level containers by replacing all the log-level resource configuration, using mutual TLS (client certificate, key, and CA). The JSON payload defines a LogLevel resource where spec.containers maps container names to desired levels (DEBUG, INFO, WARN, ERROR, FATAL).

curl -X PATCH https://f5-spk-cwc.f5-utils:30881/v1alpha1/namespaces/{namespace}/loglevels/{name} 
    --cert client_certificate 
    --cacert ca_certificate 
    --key client_key 
    -d '{"spec": {"containers": {"container_name": "log_level"}}}'

Sample to update the log level configuration of the f5-tmm-routing container belonging to the f5-tmm log level resource.

curl -X PATCH https://f5-spk-cwc.f5-utils:30881/v1alpha1/namespaces/f5-utils/loglevels/f5-tmm 
    --cert client_certificate  
    --cacert ca_certificate 
    --key client_key 
    -d '{"spec": {"containers": {"f5-tmm-routing": "ERROR"}}}'

DELETE command

Reset Log Level resource by name

The below command performs HTTPS DELETE to /v1alpha1/namespaces/{namespace}/loglevels/{name} to reset the log levels of the containers within the specified log level resource to their default values.

curl -X DELETE https://f5-spk-cwc.f5-utils:30881/v1alpha1/namespaces/{namespace}/loglevels/{name}

Sample to reset log levels of the containers of f5-tmm log level resource.

curl -X DELETE https://f5-spk-cwc.f5-utils:30881/v1alpha1/namespaces/f5-utils/loglevels/f5-tmm