From 93c642c80475f2809f59af071275ea3d204856c9 Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Fri, 22 Sep 2017 11:19:41 -0700 Subject: [PATCH] Zuul v3: export devstack journal Change-Id: I2d9b25f12de09a99f140cdb7cb7ec3f23fef0a34 --- playbooks/post.yaml | 1 + roles/export-devstack-journal/README.rst | 15 ++++++++++ .../defaults/main.yaml | 1 + roles/export-devstack-journal/tasks/main.yaml | 29 +++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 roles/export-devstack-journal/README.rst create mode 100644 roles/export-devstack-journal/defaults/main.yaml create mode 100644 roles/export-devstack-journal/tasks/main.yaml diff --git a/playbooks/post.yaml b/playbooks/post.yaml index 3c16c35b..6f5126ff 100644 --- a/playbooks/post.yaml +++ b/playbooks/post.yaml @@ -1,3 +1,4 @@ - hosts: all roles: + - export-devstack-journal - fetch-devstack-log-dir diff --git a/roles/export-devstack-journal/README.rst b/roles/export-devstack-journal/README.rst new file mode 100644 index 00000000..5f00592a --- /dev/null +++ b/roles/export-devstack-journal/README.rst @@ -0,0 +1,15 @@ +Export journal files from devstack services + +Export the systemd journal for every devstack service in native +journal format as well as text. Also, export a syslog-style file with +kernal and sudo messages. + +Writes the output to the ``logs/`` subdirectory of +``devstack_base_dir``. + +**Role Variables** + +.. zuul:rolevar:: devstack_base_dir + :default: /opt/stack + + The devstack base directory. diff --git a/roles/export-devstack-journal/defaults/main.yaml b/roles/export-devstack-journal/defaults/main.yaml new file mode 100644 index 00000000..fea05c81 --- /dev/null +++ b/roles/export-devstack-journal/defaults/main.yaml @@ -0,0 +1 @@ +devstack_base_dir: /opt/stack diff --git a/roles/export-devstack-journal/tasks/main.yaml b/roles/export-devstack-journal/tasks/main.yaml new file mode 100644 index 00000000..b9af02a5 --- /dev/null +++ b/roles/export-devstack-journal/tasks/main.yaml @@ -0,0 +1,29 @@ +# TODO: convert this to ansible +- name: Export journal files + become: true + shell: + cmd: | + u="" + name="" + for u in `systemctl list-unit-files | grep devstack | awk '{print $1}'`; do + name=$(echo $u | sed 's/devstack@/screen-/' | sed 's/\.service//') + journalctl -o short-precise --unit $u | tee {{ devstack_base_dir }}/logs/$name.txt > /dev/null + done + + # Export the journal in export format to make it downloadable + # for later searching. It can then be rewritten to a journal native + # format locally using systemd-journal-remote. This makes a class of + # debugging much easier. We don't do the native conversion here as + # some distros do not package that tooling. + journalctl -u 'devstack@*' -o export | \ + xz --threads=0 - > {{ devstack_base_dir }}/logs/devstack.journal.xz + + # The journal contains everything running under systemd, we'll + # build an old school version of the syslog with just the + # kernel and sudo messages. + journalctl \ + -t kernel \ + -t sudo \ + --no-pager \ + --since="$(cat {{ devstack_base_dir }}/log-start-timestamp.txt)" \ + | tee {{ devstack_base_dir }}/logs/syslog.txt > /dev/null