This could be ansiblesed a more, for now more or less the bash code
from d-g wrapped in a role.
Change-Id: Ia7fe40f05ca394da9a65fef6383d72f29a532e2f
| ... | ... |
@@ -21,6 +21,8 @@ |
| 21 | 21 |
- export-devstack-journal |
| 22 | 22 |
- apache-logs-conf |
| 23 | 23 |
- devstack-project-conf |
| 24 |
+ # capture-system-logs should be the last role before stage-output |
|
| 25 |
+ - capture-system-logs |
|
| 24 | 26 |
- role: stage-output |
| 25 | 27 |
zuul_copy_output: |
| 26 | 28 |
{ '{{ devstack_conf_dir }}/local.conf': 'logs',
|
| ... | ... |
@@ -40,7 +42,22 @@ |
| 40 | 40 |
'/var/log/mysql.log': 'logs', |
| 41 | 41 |
'/var/log/libvirt': 'logs', |
| 42 | 42 |
'/etc/sudoers': 'logs', |
| 43 |
- '/etc/sudoers.d': 'logs' } |
|
| 43 |
+ '/etc/sudoers.d': 'logs', |
|
| 44 |
+ '{{ stage_dir }}/iptables.txt': 'logs',
|
|
| 45 |
+ '{{ stage_dir }}/df.txt': 'logs',
|
|
| 46 |
+ '{{ stage_dir }}/pip2-freeze.txt': 'logs',
|
|
| 47 |
+ '{{ stage_dir }}/pip3-freeze.txt': 'logs',
|
|
| 48 |
+ '{{ stage_dir }}/dpkg-l.txt': 'logs',
|
|
| 49 |
+ '{{ stage_dir }}/rpm-qa.txt': 'logs',
|
|
| 50 |
+ '{{ stage_dir }}/core': 'logs',
|
|
| 51 |
+ '{{ stage_dir }}/listen53.txt': 'logs',
|
|
| 52 |
+ '{{ stage_dir }}/deprecations.log': 'logs',
|
|
| 53 |
+ '/var/log/ceph': 'logs', |
|
| 54 |
+ '/var/log/openvswitch': 'logs', |
|
| 55 |
+ '/var/log/glusterfs': 'logs', |
|
| 56 |
+ '/etc/glusterfs/glusterd.vol': 'logs', |
|
| 57 |
+ '/etc/resolv.conf': 'logs', |
|
| 58 |
+ '/var/log/unbound.log': 'logs' } |
|
| 44 | 59 |
extensions_to_txt: |
| 45 | 60 |
- conf |
| 46 | 61 |
- log |
| 47 | 62 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,20 @@ |
| 0 |
+Stage a number of system type logs |
|
| 1 |
+ |
|
| 2 |
+Stage a number of different logs / reports: |
|
| 3 |
+- snapshot of iptables |
|
| 4 |
+- disk space available |
|
| 5 |
+- pip[2|3] freeze |
|
| 6 |
+- installed packages (dpkg/rpm) |
|
| 7 |
+- ceph, openswitch, gluster |
|
| 8 |
+- coredumps |
|
| 9 |
+- dns resolver |
|
| 10 |
+- listen53 |
|
| 11 |
+- unbound.log |
|
| 12 |
+- deprecation messages |
|
| 13 |
+ |
|
| 14 |
+**Role Variables** |
|
| 15 |
+ |
|
| 16 |
+.. zuul:rolevar:: stage_dir |
|
| 17 |
+ :default: {{ ansible_user_dir }}
|
|
| 18 |
+ |
|
| 19 |
+ The base stage directory. |
| 0 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,38 @@ |
| 0 |
+# TODO(andreaf) Make this into proper Ansible |
|
| 1 |
+- name: Stage various logs and reports |
|
| 2 |
+ shell: |
|
| 3 |
+ cmd: | |
|
| 4 |
+ sudo iptables-save > {{ stage_dir }}/iptables.txt
|
|
| 5 |
+ df -h > {{ stage_dir }}/df.txt
|
|
| 6 |
+ |
|
| 7 |
+ for py_ver in 2 3; do |
|
| 8 |
+ if [[ `which python${py_ver}` ]]; then
|
|
| 9 |
+ python${py_ver} -m pip freeze > {{ stage_dir }}/pip${py_ver}-freeze.txt
|
|
| 10 |
+ fi |
|
| 11 |
+ done |
|
| 12 |
+ |
|
| 13 |
+ if [ `command -v dpkg` ]; then |
|
| 14 |
+ dpkg -l> {{ stage_dir }}/dpkg-l.txt
|
|
| 15 |
+ fi |
|
| 16 |
+ if [ `command -v rpm` ]; then |
|
| 17 |
+ rpm -qa | sort > {{ stage_dir }}/rpm-qa.txt
|
|
| 18 |
+ fi |
|
| 19 |
+ |
|
| 20 |
+ # gzip and save any coredumps in /var/core |
|
| 21 |
+ if [ -d /var/core ]; then |
|
| 22 |
+ sudo gzip -r /var/core |
|
| 23 |
+ sudo cp -r /var/core {{ stage_dir }}/
|
|
| 24 |
+ fi |
|
| 25 |
+ |
|
| 26 |
+ sudo ss -lntup | grep ':53' > {{ stage_dir }}/listen53.txt
|
|
| 27 |
+ |
|
| 28 |
+ # NOTE(andreaf) Service logs are already in logs/ thanks for the |
|
| 29 |
+ # export-devstack-journal log. Apache logs are under apache/ thans to the |
|
| 30 |
+ # apache-logs-conf role. |
|
| 31 |
+ grep -i deprecat {{ stage_dir }}/logs/*.txt {{ stage_dir }}/apache/*.log | \
|
|
| 32 |
+ sed -r 's/[0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}\.[0-9]{1,3}/ /g' | \
|
|
| 33 |
+ sed -r 's/[0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}/ /g' | \
|
|
| 34 |
+ sed -r 's/[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}/ /g' |
|
|
| 35 |
+ sed -r 's/\[.*\]/ /g' | \ |
|
| 36 |
+ sed -r 's/\s[0-9]+\s/ /g' | \ |
|
| 37 |
+ awk '{if ($0 in seen) {seen[$0]++} else {out[++n]=$0;seen[$0]=1}} END { for (i=1; i<=n; i++) print seen[out[i]]" :: " out[i] }' > {{ stage_dir }}/deprecations.log
|