Skip to content

Commit

Permalink
enhance log level and environment (#201)
Browse files Browse the repository at this point in the history
* consistent environment settings.

Signed-off-by: morvencao <[email protected]>

* add comments for log level mapping.

Signed-off-by: morvencao <[email protected]>

* rebase code.

Signed-off-by: morvencao <[email protected]>

---------

Signed-off-by: morvencao <[email protected]>
  • Loading branch information
morvencao authored Feb 17, 2025
1 parent 6db9fea commit a40e162
Show file tree
Hide file tree
Showing 15 changed files with 122 additions and 31 deletions.
18 changes: 9 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ mqtt_client_cert ?= ""
mqtt_client_key ?= ""

# Log verbosity level
klog_v:=10
klog_v:=4

# Location of the JSON web key set used to verify tokens:
jwks_url:=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/certs
Expand Down Expand Up @@ -144,11 +144,11 @@ GOLANGCI_LINT_BIN:=$(shell go env GOPATH)/bin/golangci-lint
### Envrionment-sourced variables with defaults
# Can be overriden by setting environment var before running
# Example:
# OCM_ENV=testing make run
# export OCM_ENV=testing; make run
# MAESTRO_ENV=testing make run
# export MAESTRO_ENV=testing; make run
# Set the environment to development by default
ifndef OCM_ENV
OCM_ENV:=development
ifndef MAESTRO_ENV
MAESTRO_ENV:=development
endif

ifndef TEST_SUMMARY_FORMAT
Expand Down Expand Up @@ -221,7 +221,7 @@ install: check-gopath
# Examples:
# make test TESTFLAGS="-run TestSomething"
test:
OCM_ENV=testing gotestsum --jsonfile-timing-events=$(unit_test_json_output) --format $(TEST_SUMMARY_FORMAT) -- -p 1 -v $(TESTFLAGS) \
MAESTRO_ENV=testing gotestsum --jsonfile-timing-events=$(unit_test_json_output) --format $(TEST_SUMMARY_FORMAT) -- -p 1 -v $(TESTFLAGS) \
./pkg/... \
./cmd/...
.PHONY: test
Expand All @@ -240,12 +240,12 @@ test-integration: test-integration-mqtt test-integration-grpc
.PHONY: test-integration

test-integration-mqtt:
BROKER=mqtt OCM_ENV=testing gotestsum --jsonfile-timing-events=$(mqtt_integration_test_json_output) --format $(TEST_SUMMARY_FORMAT) -- -p 1 -ldflags -s -v -timeout 1h $(TESTFLAGS) \
BROKER=mqtt MAESTRO_ENV=testing gotestsum --jsonfile-timing-events=$(mqtt_integration_test_json_output) --format $(TEST_SUMMARY_FORMAT) -- -p 1 -ldflags -s -v -timeout 1h $(TESTFLAGS) \
./test/integration
.PHONY: test-integration-mqtt

test-integration-grpc:
BROKER=grpc OCM_ENV=testing gotestsum --jsonfile-timing-events=$(grpc_integration_test_json_output) --format $(TEST_SUMMARY_FORMAT) -- -p 1 -ldflags -s -v -timeout 1h $(TESTFLAGS) \
BROKER=grpc MAESTRO_ENV=testing gotestsum --jsonfile-timing-events=$(grpc_integration_test_json_output) --format $(TEST_SUMMARY_FORMAT) -- -p 1 -ldflags -s -v -timeout 1h $(TESTFLAGS) \
./test/integration
.PHONY: test-integration-grpc

Expand Down Expand Up @@ -295,7 +295,7 @@ cmds:
--filename="templates/$*-template.yml" \
--local="true" \
--ignore-unknown-parameters="true" \
--param="ENVIRONMENT=$(OCM_ENV)" \
--param="ENVIRONMENT=$(MAESTRO_ENV)" \
--param="KLOG_V=$(klog_v)" \
--param="SERVER_REPLICAS=$(SERVER_REPLICAS)" \
--param="DATABASE_HOST=$(db_host)" \
Expand Down
2 changes: 1 addition & 1 deletion cmd/maestro/environments/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const (
DevelopmentEnv string = "development"
ProductionEnv string = "production"

EnvironmentStringKey string = "OCM_ENV"
EnvironmentStringKey string = "MAESTRO_ENV"
EnvironmentDefault string = DevelopmentEnv
)

Expand Down
23 changes: 21 additions & 2 deletions cmd/maestro/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/go-logr/zapr"
"github.com/openshift-online/maestro/cmd/maestro/agent"
"github.com/openshift-online/maestro/cmd/maestro/environments"
"github.com/openshift-online/maestro/cmd/maestro/migrate"
"github.com/openshift-online/maestro/cmd/maestro/servecmd"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -36,11 +37,29 @@ func main() {
klog.Fatalf("can't parse log level: %v", err)
}

// Initialize zap logger
zc := zap.NewDevelopmentConfig()
// Initialize zap logger based on environment
var zc zap.Config
env := environments.GetEnvironmentStrFromEnv()
switch env {
case environments.DevelopmentEnv:
zc = zap.NewDevelopmentConfig()
case environments.ProductionEnv:
zc = zap.NewProductionConfig()
default:
zc = zap.NewDevelopmentConfig()
}

// zap log level is the inverse of klog log level, for more details refer to:
// https://github.com/go-logr/zapr?tab=readme-ov-file#increasing-verbosity
// zap level mapping to klog level:
// fatal: -5, panic: -4, dpanic: -3, error: -2, warn: -1, info: 0, debug: 1
// the higher the log level, the more verbose the logs:
// if the log level is 0, it will log everything except debug logs;
// if the log level is 1, it will log everything including debug logs;
// if the log level is 2 or higher, it will log everything including klog verbose logs.
zc.Level = zap.NewAtomicLevelAt(zapcore.Level(0 - logLevel))
// Disable stacktrace to reduce logs size
zc.DisableStacktrace = true
zapLog, err := zc.Build()
if err != nil {
klog.Fatalf("can't initialize zap logger: %v", err)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ require (
k8s.io/klog/v2 v2.130.1
open-cluster-management.io/api v0.15.1-0.20241210025410-0ba6809d0ae2
open-cluster-management.io/ocm v0.15.1-0.20250108154653-2397c4e91119
open-cluster-management.io/sdk-go v0.15.1-0.20250212140629-c9cbca9e52cb
open-cluster-management.io/sdk-go v0.15.1-0.20250217031345-04acb74ee5ae
sigs.k8s.io/yaml v1.4.0
)

Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -893,8 +893,8 @@ open-cluster-management.io/api v0.15.1-0.20241210025410-0ba6809d0ae2 h1:zkp3VJnv
open-cluster-management.io/api v0.15.1-0.20241210025410-0ba6809d0ae2/go.mod h1:9erZEWEn4bEqh0nIX2wA7f/s3KCuFycQdBrPrRzi0QM=
open-cluster-management.io/ocm v0.15.1-0.20250108154653-2397c4e91119 h1:Ftx7vxDumTB9d4+ZdcqYwQavTOVzgF5h6vAXJ/gh0IE=
open-cluster-management.io/ocm v0.15.1-0.20250108154653-2397c4e91119/go.mod h1:T9pfSm3EYHnysEP9JYfCojV2pI44IYMz3zaZNylulz8=
open-cluster-management.io/sdk-go v0.15.1-0.20250212140629-c9cbca9e52cb h1:w8ZV4DTTyIeRPR9OIgdNGLtC4YGmfSaq9lZeiJd7qZI=
open-cluster-management.io/sdk-go v0.15.1-0.20250212140629-c9cbca9e52cb/go.mod h1:fi5WBsbC5K3txKb8eRLuP0Sim/Oqz/PHX18skAEyjiA=
open-cluster-management.io/sdk-go v0.15.1-0.20250217031345-04acb74ee5ae h1:jxNiZbTXMFbdLUIFiowpSCSegXPWfGML0jlaEBCnq5o=
open-cluster-management.io/sdk-go v0.15.1-0.20250217031345-04acb74ee5ae/go.mod h1:fi5WBsbC5K3txKb8eRLuP0Sim/Oqz/PHX18skAEyjiA=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3 h1:2770sDpzrjjsAtVhSeUFseziht227YAWYHLGNM8QPwY=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
sigs.k8s.io/controller-runtime v0.19.3 h1:XO2GvC9OPftRst6xWCpTgBZO04S2cbp0Qqkj8bX1sPw=
Expand Down
13 changes: 13 additions & 0 deletions templates/agent-template-aro-hcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ labels:
template: maestro-agent
parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which maestro environment to use for this deployment
value: production

- name: AGENT_NAMESPACE
description: namespace of maestro agent

Expand All @@ -33,6 +38,11 @@ parameters:
displayName: Image tag
value: latest

- name: KLOG_V
displayName: KLOG V Level
description: Log verbosity level
value: "4"

objects:
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
Expand Down Expand Up @@ -271,7 +281,10 @@ objects:
- --workload-source-driver=mqtt
- --workload-source-config=/secrets/mqtt/config.yaml
- --cloudevents-client-id=$(CONSUMER_NAME)-work-agent
- -v=${KLOG_V}
env:
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
- name: CONSUMER_NAME
valueFrom:
secretKeyRef:
Expand Down
14 changes: 11 additions & 3 deletions templates/agent-template-rosa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ labels:
template: maestro-agent
parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which maestro environment to use for this deployment
value: production

- name: AGENT_NAMESPACE
description: namespace of maestro agent

Expand All @@ -33,14 +38,14 @@ parameters:
displayName: Image tag
value: latest

- name: MQTT_HOST
description: Hostname for the mqtt broker

- name: KLOG_V
displayName: KLOG V Level
description: Log verbosity level
value: "4"

- name: MQTT_HOST
description: Hostname for the mqtt broker.

objects:
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
Expand Down Expand Up @@ -273,6 +278,9 @@ objects:
- name: maestro-agent
image: ${IMAGE_REGISTRY}/${IMAGE_REPOSITORY}:${IMAGE_TAG}
imagePullPolicy: IfNotPresent
env:
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
command:
- /usr/local/bin/maestro
- agent
Expand Down
14 changes: 14 additions & 0 deletions templates/agent-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ labels:
template: maestro-agent
parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which maestro environment to use for this deployment
value: production

- name: AGENT_NAMESPACE
description: namespace of maestro agent

Expand All @@ -33,6 +38,11 @@ parameters:
displayName: Image tag
value: latest

- name: KLOG_V
displayName: KLOG V Level
description: Log verbosity level
value: "4"

- name: MESSAGE_DRIVER_TYPE
displayName: Message Driver Type
description: Message driver type, mqtt or grpc.
Expand Down Expand Up @@ -290,13 +300,17 @@ objects:
- name: maestro-agent
image: ${IMAGE_REGISTRY}/${IMAGE_REPOSITORY}:${IMAGE_TAG}
imagePullPolicy: IfNotPresent
env:
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
command:
- /usr/local/bin/maestro
- agent
- --consumer-name=${CONSUMER_NAME}
- --workload-source-driver=${MESSAGE_DRIVER_TYPE}
- --workload-source-config=/secrets/${MESSAGE_DRIVER_TYPE}/config.yaml
- --cloudevents-client-id=${CONSUMER_NAME}-work-agent
- -v=${KLOG_V}
volumeMounts:
- name: ${MESSAGE_DRIVER_TYPE}
mountPath: /secrets/${MESSAGE_DRIVER_TYPE}
Expand Down
14 changes: 14 additions & 0 deletions templates/agent-tls-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ labels:
template: maestro-agent
parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which maestro environment to use for this deployment
value: production

- name: AGENT_NAMESPACE
description: namespace of maestro agent

Expand All @@ -33,6 +38,11 @@ parameters:
displayName: Image tag
value: latest

- name: KLOG_V
displayName: KLOG V Level
description: Log verbosity level
value: "4"

- name: MESSAGE_DRIVER_TYPE
displayName: Message Driver Type
description: Message driver type, mqtt or grpc.
Expand Down Expand Up @@ -290,6 +300,9 @@ objects:
- name: maestro-agent
image: ${IMAGE_REGISTRY}/${IMAGE_REPOSITORY}:${IMAGE_TAG}
imagePullPolicy: IfNotPresent
env:
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
command:
- /usr/local/bin/maestro
- agent
Expand All @@ -298,6 +311,7 @@ objects:
- --workload-source-config=/secrets/${MESSAGE_DRIVER_TYPE}/config.yaml
- --cloudevents-client-id=${CONSUMER_NAME}-work-agent
- --appliedmanifestwork-eviction-grace-period=30s
- -v=${KLOG_V}
volumeMounts:
- name: ${MESSAGE_DRIVER_TYPE}
mountPath: /secrets/${MESSAGE_DRIVER_TYPE}
Expand Down
6 changes: 3 additions & 3 deletions templates/service-template-aro-hcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which Account Manager environment to use for this deployment
description: Which maestro environment to use for this deployment
value: production

- name: IMAGE_REGISTRY
Expand All @@ -38,7 +38,7 @@ parameters:
- name: KLOG_V
displayName: KLOG V Level
description: Log verbosity level
value: "10"
value: "4"

- name: MEMORY_REQUEST
description: Memory request for the API pods.
Expand Down Expand Up @@ -231,7 +231,7 @@ objects:
mountPath: /secrets/mqtt-creds
readOnly: true
env:
- name: "AMS_ENV"
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
- name: POD_NAME
valueFrom:
Expand Down
4 changes: 2 additions & 2 deletions templates/service-template-rosa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which Account Manager environment to use for this deployment
description: Which maestro environment to use for this deployment
value: production

- name: IMAGE_REGISTRY
Expand Down Expand Up @@ -213,7 +213,7 @@ objects:
mountPath: /secrets/mqtt-creds
readOnly: true
env:
- name: "AMS_ENV"
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
- name: POD_NAME
valueFrom:
Expand Down
8 changes: 4 additions & 4 deletions templates/service-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which Account Manager environment to use for this deployment
description: Which maestro environment to use for this deployment
value: production

- name: IMAGE_REGISTRY
Expand Down Expand Up @@ -47,7 +47,7 @@ parameters:
- name: KLOG_V
displayName: KLOG V Level
description: Log verbosity level
value: "10"
value: "4"

- name: MEMORY_REQUEST
description: Memory request for the API pods.
Expand Down Expand Up @@ -324,7 +324,7 @@ objects:
- name: authentication
mountPath: /configs/authentication
env:
- name: "AMS_ENV"
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
- name: POD_NAME
valueFrom:
Expand Down Expand Up @@ -415,7 +415,7 @@ objects:
app: maestro
port: api
annotations:
description: Exposes and load balances the account manager pods
description: Exposes and load balances the maestro pods
service.alpha.openshift.io/serving-cert-secret-name: maestro-tls
spec:
selector:
Expand Down
Loading

0 comments on commit a40e162

Please sign in to comment.