Search code examples
google-container-os

How to change the logging options for JSON log


When we run up a container on a Compute Engine using COS, it writes its logs to JSON files. We are finding an error:

"level=error msg="Failed to log msg \"\" for logger json-file: write /var/lib/docker/containers/[image]-json.log: no space left on device". 

I was looking to change the logging settings for Docker and found this article on changing the logging driver settings:

https://docs.docker.com/config/containers/logging/json-file/

My puzzle is I don't know how to set the parameters through the console or gcloud in order to set log-opts.


Solution

  • It seems that /var/lib/docker is on the / filesystem, and if this filesystem is running out of inodes, you will receive that message when you’ll try to run up a container and it tries to write its logs to JSON files. You can check this by running

    df -i /var/lib/docker

    You can configure your logging drivers to change the default values in ‘/etc/docker/daemon.json’

    This is a configuration example of the daemon.json file

    cat /etc/docker/daemon.json

    { "live-restore": true, "storage-driver": "overlay2" "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3", "labels": "production_status", "env": "os,customer" } }

    Don’t forget to restart the docker daemon after changed the file.:

    systemctl restart docker.service

    You can check the following documentation for further information about how to configure logging drivers.

    Please let me know the results.