See also: How to manage logs
A log is a computer-generated record about entities, activities, usage patterns, etc., within a system. In Juju, logs are produced by
jujud and keep track of machine and unit agents, models, controllers, etc.
In machine deployments, Juju agent logs are organised into a number of files. These files are located on every machine that Juju creates, including the controller. Specifically, they can be found under
/var/log/juju, and may include:
Agent log files (e.g.,
/var/log/juju/unit-controller-0.log ) contain the logs for the machine and unit agents.
The audit log file (
/var/log/juju/audit.log) logs all the client commands and all the API calls and errors responses associated with a controller, classified as one of the following:
- Conversation: A collection of API methods associated with a single top-level CLI command.
- Request: A single API method.
- ResponseErrors: Errors resulting from an API method
The audit log file can be found only on controller machines.
The logsink file (
logsink.log) contains all the agent logs shipped to the controller, in aggregated form. These logs will end up in Juju’s internal database, MongoDB.
In a controller high availability scenario,
logsink.log is not guaranteed to contain all messages since agents have a choice of several controllers to send their logs to. The
debug-log command should be used for accessing consolidated data across all controllers.
In Kubernetes deployments, logs are written directly to
stdout of the container and can be retrieved with native Kubernetes methods.
kubectl logs <pod-name> .
By default, it will fetch the logs from the main container
charm container. When fetching logs from other containers, use additional
-c flag to specify the container, i.e.
kubectl logs -c <container-name> <pod-name> .