kubernetes-csi / external-resizer

Sidecar container that watches Kubernetes PersistentVolumeClaims objects and triggers controller side expansion operation against a CSI endpoint
Apache License 2.0
125 stars 126 forks source link

Support structured logging #330

Closed saku3 closed 11 months ago

saku3 commented 1 year ago

What type of PR is this?

/kind feature

What this PR does / why we need it:

In this PR I have added JSON logging. With this change, it is now possible to output the logs of the external-resizer container in JSON format. Running the container with the --logging-format=json option will output the logs in JSON format.

In addition, I've modified the log messages based on the following guideline: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/migration-to-structured-logging.md

I’ve update the klog functions in use according to the guidelines provided below, and I've confirmed that they pass the logcheck tests:https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/migration-to-structured-logging.md#change-log-functions

logcheck cmd/csi-resizer/main.go 
logcheck ./pkg/util/
logcheck ./pkg/resizer/ 
logcheck ./pkg/csi/    
logcheck ./pkg/controller/
logcheck ./pkg/features/ 

related PR:https://github.com/kubernetes-csi/livenessprobe/pull/202

Special notes for your reviewer:

# The logs below were outputted because the program was running on MacOS.
$ go run cmd/csi-resizer/main.go --logging-format=json
{"ts":1694049594780.344,"caller":"csi-resizer/main.go:105","msg":"Version","v":0,"version":"unknown"}
{"ts":1694049594780.369,"caller":"csi-resizer/main.go:128","msg":"Failed to create cluster config","err":"unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined"}
...

$ go run cmd/csi-resizer/main.go 
I0907 10:19:16.001980   70980 main.go:105] "Version" version="unknown"
E0907 10:19:16.002069   70980 main.go:128] "Failed to create cluster config" err="unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined"
...

Does this PR introduce a user-facing change?:

Added support structured logging
linux-foundation-easycla[bot] commented 1 year ago

CLA Signed

The committers listed above are authorized under a signed CLA.

k8s-ci-robot commented 1 year ago

Welcome @saku3!

It looks like this is your first PR to kubernetes-csi/external-resizer 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-csi/external-resizer has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. :smiley:

k8s-ci-robot commented 1 year ago

Hi @saku3. Thanks for your PR.

I'm waiting for a kubernetes-csi member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
bells17 commented 1 year ago

/ok-to-test

jsafrane commented 1 year ago

/lgtm @gnufied can you please take a look?

saku3 commented 1 year ago

@jsafrane

I've resolved the conflicts and pushed the changes according to the guidelines provided below. Could you please give it another look and approve if everything is fine?

https://github.com/kubernetes/community/blob/master/contributors/guide/github-workflow.md#4-keep-your-branch-in-sync

gnufied commented 1 year ago

/lgtm /approve

jsafrane commented 1 year ago

/retest

jsafrane commented 1 year ago

/retest It looks unrelated to this PR...

saku3 commented 1 year ago

I'm getting the same error on multiple PRs in other repositories.

The failing tests are as follows https://github.com/kubernetes/kubernetes/blob/56f330493cf592ac0c9c9b9d35e8c9f69c45ab33/test/e2e/storage/testsuites/provisioning.go#L452

The error is identical.

{ failed [FAILED] Filesystem resize failed when restoring from snapshot to PVC with larger size. Restored fs size: 299853492224 bytes is not larger than Restored fs size: 299853492224 bytes is not larger than origin fs size: 299853492224 bytes.
HINT: Your driver needs to check the volume in NodeStageVolume and resize fs if needed.
HINT: For an example patch see: https://github.com/kubernetes/cloud-provider-openstack/pull/1563/files
Expected
    <int>: 299853492224
to be >
    <int>: 299853492224
In [It] at: test/e2e/storage/testsuites/provisioning.go:491 @ 10/02/23 18:08:27.298
}
saku3 commented 1 year ago

Related to OSS issue: https://github.com/kubernetes/kubernetes/issues/120997

saku3 commented 11 months ago

@jsafrane @gnufied

Sorry to bother you again. I've resolved the conflicts and pushed the changes. Could you please give it another look and approve if everything is fine?

jsafrane commented 11 months ago

/lgtm /approve

k8s-ci-robot commented 11 months ago

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: gnufied, jsafrane, saku3

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files: - ~~[OWNERS](https://github.com/kubernetes-csi/external-resizer/blob/master/OWNERS)~~ [gnufied,jsafrane] Approvers can indicate their approval by writing `/approve` in a comment Approvers can cancel approval by writing `/approve cancel` in a comment