dbginfo.sh: add ethtool output

This patch adds ethtool commands for network interfaces.
Especially the offload settings are important.

Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
Ursula Braun
2019-08-20 09:16:38 +02:00
committed by Jan Höppner
parent 36292cb166
commit e6a3b18104
3 changed files with 67 additions and 24 deletions

View File

@@ -9,6 +9,7 @@ Release history for s390-tools (MIT version)
- smc_dbg: Add support for SMC sockets
Changes of existing tools:
- dbginfo: Gather ethtool related data
Bug Fixes:

View File

@@ -173,6 +173,9 @@ readonly OUTPUT_FILE_LSOF="${WORKPATH}open_files.out"
# File that includes content of OSA OAT
readonly OUTPUT_FILE_OSAOAT="${WORKPATH}osa_oat"
# File that includes content of Ethtool commands
readonly OUTPUT_FILE_ETHTOOL="${WORKPATH}ethtool.out"
# File that includes the output of journalctl
readonly OUTPUT_FILE_JOURNALCTL="${WORKPATH}journalctl.out"
@@ -192,7 +195,7 @@ readonly OUTPUT_FILE_NVME="${WORKPATH}nvme.out"
readonly MOUNT_POINT_DEBUGFS="/sys/kernel/debug"
# The amount of steps running the whole collections
readonly COLLECTION_COUNT=12
readonly COLLECTION_COUNT=13
# The kernel version (e.g. '2' from 2.6.32 or '3' from 3.2.1)
readonly KERNEL_VERSION=$(uname -r 2>/dev/null | cut -d'.' -f1)
@@ -752,6 +755,37 @@ collect_osaoat() {
pr_log_stdout " "
}
########################################
collect_ethtool() {
local network_devices
local network_device
network_devices=$(ls /sys/class/net 2>/dev/null)
if which ethtool >/dev/null 2>&1; then
if test -n "${network_devices}"; then
pr_syslog_stdout "8 of ${COLLECTION_COUNT}: Collecting ethtool output"
for network_device in ${network_devices}; do
call_run_command "ethtool ${network_device}" "${OUTPUT_FILE_ETHTOOL}"
call_run_command "ethtool -k ${network_device}" "${OUTPUT_FILE_ETHTOOL}"
call_run_command "ethtool -a ${network_device}" "${OUTPUT_FILE_ETHTOOL}"
call_run_command "ethtool -c ${network_device}" "${OUTPUT_FILE_ETHTOOL}"
call_run_command "ethtool -g ${network_device}" "${OUTPUT_FILE_ETHTOOL}"
call_run_command "ethtool -i ${network_device}" "${OUTPUT_FILE_ETHTOOL}"
call_run_command "ethtool -l ${network_device}" "${OUTPUT_FILE_ETHTOOL}"
call_run_command "ethtool -P ${network_device}" "${OUTPUT_FILE_ETHTOOL}"
call_run_command "ethtool -S ${network_device}" "${OUTPUT_FILE_ETHTOOL}"
call_run_command "ethtool -T ${network_device}" "${OUTPUT_FILE_ETHTOOL}"
done
else
pr_syslog_stdout "8 of ${COLLECTION_COUNT}: Collecting ethtool output skipped - no devices"
fi
else
pr_syslog_stdout "8 of ${COLLECTION_COUNT}: Collecting ethtool output skipped - not available"
fi
pr_log_stdout " "
}
########################################
# OpenVSwitch
collect_ovs() {
@@ -768,7 +802,7 @@ collect_ovs() {
:ovsdb-client dump\
"
if test -n "${br_list}"; then
pr_syslog_stdout "8 of ${COLLECTION_COUNT}: Collecting OpenVSwitch output"
pr_syslog_stdout "9 of ${COLLECTION_COUNT}: Collecting OpenVSwitch output"
IFS=:
for ovscmd in ${ovscmds}; do
IFS=${ifs_orig} call_run_command "${ovscmd}" "${OUTPUT_FILE_OVS}.out"
@@ -787,7 +821,7 @@ collect_ovs() {
IFS="${ifs_orig}"
done
else
pr_syslog_stdout "8 of ${COLLECTION_COUNT}: Collecting OpenVSwitch output skipped"
pr_syslog_stdout "9 of ${COLLECTION_COUNT}: Collecting OpenVSwitch output skipped"
fi
pr_log_stdout " "
@@ -800,12 +834,12 @@ collect_domain_xml() {
domain_list=$(virsh list --all --name)
if test -n "${domain_list}"; then
pr_syslog_stdout "9 of ${COLLECTION_COUNT}: Collecting domain xml files"
pr_syslog_stdout "10 of ${COLLECTION_COUNT}: Collecting domain xml files"
for domain in ${domain_list}; do
call_run_command "virsh dumpxml ${domain}" "${OUTPUT_FILE_XML}_${domain}.xml"
done
else
pr_syslog_stdout "9 of ${COLLECTION_COUNT}: Collecting domain xml files skipped"
pr_syslog_stdout "10 of ${COLLECTION_COUNT}: Collecting domain xml files skipped"
fi
pr_log_stdout " "
@@ -819,23 +853,23 @@ collect_docker() {
# call docker inspect for all containers
item_list=$(docker ps -qa)
if test -n "${item_list}"; then
pr_syslog_stdout "10a of ${COLLECTION_COUNT}: Collecting docker container output"
pr_syslog_stdout "11a of ${COLLECTION_COUNT}: Collecting docker container output"
for item in ${item_list}; do
call_run_command "docker inspect ${item}" "${OUTPUT_FILE_DOCKER}"
done
else
pr_syslog_stdout "10a of ${COLLECTION_COUNT}: Collecting docker container output skipped"
pr_syslog_stdout "11a of ${COLLECTION_COUNT}: Collecting docker container output skipped"
fi
# call docker inspect for all networks
item_list=$(docker network ls -q)
if test -n "${item_list}"; then
pr_syslog_stdout "10b of ${COLLECTION_COUNT}: Collecting docker network output"
pr_syslog_stdout "11b of ${COLLECTION_COUNT}: Collecting docker network output"
for item in ${item_list}; do
call_run_command "docker network inspect ${item}" "${OUTPUT_FILE_DOCKER}"
done
else
pr_syslog_stdout "10b of ${COLLECTION_COUNT}: Collecting docker network output skipped"
pr_syslog_stdout "11b of ${COLLECTION_COUNT}: Collecting docker network output skipped"
fi
pr_log_stdout " "
@@ -845,7 +879,7 @@ collect_docker() {
collect_nvme() {
local NVME
pr_syslog_stdout "11 of ${COLLECTION_COUNT}: Collecting nvme output"
pr_syslog_stdout "12 of ${COLLECTION_COUNT}: Collecting nvme output"
call_run_command "nvme list" "${OUTPUT_FILE_NVME}"
for NVME in /dev/nvme[0-9]*; do
@@ -1152,6 +1186,8 @@ collect_configfiles
collect_osaoat
collect_ethtool
collect_ovs
collect_domain_xml

View File

@@ -52,7 +52,7 @@ Sample invocation:
.br
dbginfo.sh: Debug information script version %S390_TOOLS_VERSION%
.br
Copyright IBM Corp. 2002, 2017
Copyright IBM Corp. 2002, 2019
.PP
Hardware platform = s390x
.br
@@ -60,34 +60,40 @@ Kernel version = <kernel\-version>
.br
Runtime environment = z/VM
.PP
1 of 11: Collecting command output
1 of 13: Collecting command output
.PP
2 of 11: Collecting z/VM command output
2 of 13: Collecting z/VM command output
.PP
3 of 11: Collecting procfs
3 of 13: Collecting procfs
.PP
4 of 11: Collecting sysfs
4 of 13: Collecting sysfs
.PP
5 of 11: Collecting log files
5 of 13: Collecting log files
.PP
6 of 11: Collecting config files
6 of 13: Collecting config files
.PP
7 of 11: Collecting osa oat output skipped \- not available
7 of 13: Collecting osa oat output skipped \- not available
.PP
8 of 11: Collecting OpenVSwitch output
8 of 13: Collecting ethtool output
.PP
9 of 11: Collecting domain xml files
9 of 13: Collecting OpenVSwitch output
.PP
10a of 11: Collecting docker container output
10b of 11: Collecting docker network output
10 of 13: Collecting domain xml files
.PP
11 of 11: Postprocessing
11a of 13: Collecting docker container output
11b of 13: Collecting docker network output
.PP
12 of 13: Collecting nvme output
.PP
13 of 13: Postprocessing
.PP
Finalizing: Creating archive with collected data
.PP
Collected data was saved to:
.br
>> /data\-collection/DBGINFO\-2015\-02\-26\-21\-39\-16\-host\-012345.tgz <<
>> /data\-collection/DBGINFO\-2019\-08\-19\-21\-39\-16\-host\-012345.tgz <<
.br
Review the collected data before sending to your service organization.
.SH HINTS
Run the script with root authority.
.br