18

Where does output from cloud-init (automatically runs scripts when starting up a virtual machine in the cloud, for example at Amazon EC2) go? I would like to know that my initialization scripts executed successfully.

There is a /var/log/cloud-init.log file, but it seems to contain only partial output (namely from the SSH key initialization).

Markus Miller
  • 1,914
  • 3
  • 15
  • 15

7 Answers7

21

Since cloud-init 0.7.5 (released on Apr 1 2014), all output from cloud-init is captured by default to /var/log/cloud-init-output.log. This default logging configuration was added in a commit from Jan 14 2014:

# this tells cloud-init to redirect its stdout and stderr to
# 'tee -a /var/log/cloud-init-output.log' so the user can see output
# there without needing to look on the console.
output: {all: '| tee -a /var/log/cloud-init-output.log'}

To add support for previous versions of cloud-init, you can manually add this configuration manually to your Cloud Config Data.

Will Jordan
  • 230
  • 1
  • 7
pawstrong
  • 131
  • 1
  • 6
3

I couldn't find way a "native" way for doing that. Before passing the script to cloud-init, I've simply (automatically) appended a >> /tmp/init-script-log 2>&1 to each line of the script, to forward stout and stderr to a file.

Roberto Aloi
  • 565
  • 2
  • 5
  • 14
  • 1
    As Valko pointed out, neither `/var/log/cloud-init.log` nor `/var/log/cloud-init-output.log` captures output from user-data scripts. Roberto's solution here answers that concern. Another way I've seen this done is to preamble your user-data script to send all output to **syslog** with `exec 1> >(logger -s -t "WhateverNameYouWantToMakeSiftingLogMessagerEasier") 2>&1` – Toddius Zho Jan 29 '18 at 17:00
2

The log is stored in systemd:

journalctl -u cloud-final
  • 1
    Welcome to Stackexchange, and thanks for your contribution. However, the question was asked ten years ago before systemd was widely used (or even before it existed). Even when systemd is used, I am not sure if your answer is correct. [cloudinit documentation](https://cloudinit.readthedocs.io/en/latest/topics/faq.html?highlight=log#where-are-the-logs) says something else. – berndbausch Feb 24 '21 at 09:48
1

On my EC2 box (running the Amazon Linux AMI) it's stored in /var/log/cloud-init.log

Edouard
  • 11
  • 1
1

On the Centos 7 AMI I am using, the output of my user data script is in /var/log/cloud-init-output.log.

rakslice
  • 445
  • 3
  • 11
0

I've found log output in /var/log/messages (CentOS7 AWS AMI)

mbo
  • 101
  • 1
-5

First of all let me congratulate you on using cloud-init, it's a quite amazing tool!

There's no way yet to setup a log level but by default cloud-init will run with DEBUG enabled.

It's still in heavy development, I expect it to be a lot better by the release of Ubuntu Natty

lynxman
  • 9,157
  • 3
  • 24
  • 28