[CORD-2540]
Add items to diagnostic collection
Support MaaS deployed compute node for diagnostics
Change-Id: I4c9a35b17fe6bf14e092e02591795c81be0a5776
diff --git a/roles/head-diag/tasks/main.yml b/roles/head-diag/tasks/main.yml
index 182d1b6..7462112 100644
--- a/roles/head-diag/tasks/main.yml
+++ b/roles/head-diag/tasks/main.yml
@@ -1,4 +1,4 @@
-
+---
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,14 +13,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-
----
# head-diag/tasks/main.yml
- name: Create diag_dir subdirs
file:
- dest="~/{{ diag_dir }}/{{ item }}"
- state=directory
+ dest: "~/{{ diag_dir }}/{{ item }}"
+ state: directory
with_items:
- head
- juju
@@ -35,16 +33,25 @@
args:
creates: "~/{{ diag_dir }}/head/{{ item | regex_replace('[^\\w-]', '_')}}"
with_items:
- - "ifconfig -a"
- - "route -n"
- "arp -n"
- - "date"
- "brctl show"
- - "cat /etc/resolv.conf"
- "cat /etc/lsb-release"
- - "sudo virsh list"
- - "sudo lxc list"
+ - "cat /etc/resolv.conf"
+ - "date -u"
+ - "df -k"
+ - "free"
+ - "ifconfig -a"
+ - "ip addr list"
+ - "ip link list"
+ - "ip neighbor"
+ - "ip route"
+ - "ps aux"
+ - "route -n"
- "sudo docker ps -a"
+ - "sudo iptables -S"
+ - "sudo iptables -t nat -S"
+ - "sudo lxc list"
+ - "sudo virsh list"
- name: Juju diag collection
shell: "{{ item }} > ~/{{ diag_dir }}/juju/{{ item | regex_replace('[^\\w-]', '_')}}"
@@ -131,18 +138,35 @@
- "summary"
- name: Docker diag collection - Find names for all running Docker containers
- command: sudo docker ps --format '{{'{{'}} .Names {{'}}'}}'
+ command: sudo docker ps -a --format '{{'{{'}} .Names {{'}}'}}'
ignore_errors: yes
register: docker_containers
tags:
- skip_ansible_lint # collecting docker container names
- name: Docker diag collection - Collect logs from Docker containers
- shell: "sudo docker logs {{ item }} > ~/{{ diag_dir }}/docker/{{ item | regex_replace('[^\\w-]', '_')}} 2>&1"
+ shell: "sudo docker logs {{ item }} > ~/{{ diag_dir }}/docker/{{ item | regex_replace('[^\\w-]', '_')}}.logs 2>&1"
ignore_errors: yes
args:
- creates: "~/{{ diag_dir }}/docker/{{ item | regex_replace('[^\\w-]', '_')}}"
+ creates: "~/{{ diag_dir }}/docker/{{ item | regex_replace('[^\\w-]', '_')}}.logs"
with_items: "{{ docker_containers.stdout_lines }}"
tags:
- skip_ansible_lint # ansible-lint interprets the \n incorrectly
+- name: Docker diag collection - inspect Docker containers
+ shell: "sudo docker inspect {{ item }} > ~/{{ diag_dir }}/docker/{{ item | regex_replace('[^\\w-]', '_')}}.inspect 2>&1"
+ ignore_errors: yes
+ args:
+ creates: "~/{{ diag_dir }}/docker/{{ item | regex_replace('[^\\w-]', '_')}}.inspect"
+ with_items: "{{ docker_containers.stdout_lines }}"
+ tags:
+ - skip_ansible_lint # ansible-lint interprets the \n incorrectly
+
+# much cleaner to use !unsafe to avoid j2 parsing of golang {{ and }} templates
+# but ansible-lint doesn't support it: https://github.com/willthames/ansible-lint/issues/291
+- name: Docker diag collection - Collect memory and CPU stats from docker containers
+ shell: "sudo docker stats --no-stream --format \"table {{'{{'}}.Name{{'}}'}}\t{{'{{'}}.Container{{'}}'}}\t{{'{{'}}.CPUPerc{{'}}'}}\t{{'{{'}}.MemUsage{{'}}'}}\t{{'{{'}}.MemPerc{{'}}'}}\" > ~/{{ diag_dir }}/docker/stats 2>&1"
+ ignore_errors: yes
+ args:
+ creates: "~/{{ diag_dir }}/docker/stats"
+