We need a means to gather information about a system to aid users in diagnosing and fixing BIND 10 problems. The proposal is to have a tool which gathers basic information about the environment to include in bug reports and the like.

The following is based on a proposal for a generic ISC showtech. These items should be fairly straightforward to collect. The sample information sources and commands are those from Linux.

System Configuration

  • Operating system information
    • Version (as by "uname -a")
    • Distribution name and version
      • Debian/Ubuntu/Mint/... (as by "cat /etc/debian_version" or "cat /etc/redhat-release")
  • CPU information
    • 64-bit, 32-bit, endedness
    • Name and revision (such as from /proc/cpuinfo)
    • Number of cores, number of CPU threads (hyperthreads)
    • Number of processes/threads used by ISC software, broken down
  • Memory information
    • Amount of memory available, in use (such as /proc/meminfo)
    • Swap available and in use
    • Amount of memory used by ISC software, broken down
  • Network information
    • Interfaces available & status (as by "ip addr")
    • Routing table (as by "ip route" and "ip -f inet6 route")
    • Interfaces used by ISC software, broken down
    • Network statistics (as by "netstat -s")
    • Network connection information (as by "netstat -apn")
  • Disk information
    • List of disks (as by "ls /dev/disk/by-uuid")
    • Partition table, including free space (as by "df -Tah")
  • System customization (as by "sysctl -a") (includes buffer sizes)

System Status

  • Process table (as by "ps awwwwx")
  • Current system load (as by "vmstat 2 5", maybe started in background at beginning of "isc-showtech" run)
  • Current network traffic (as by difference between "ifconfig", maybe started in background at beginning of "isc-showtech" run)
  • Basic network connectivity (not sure about this, but perhaps an outbound IPv4/IPv6 "ping", "traceroute", and "mtr --report", along with a server providing the inbound direction might be useful)

Build Information

  • config.log output
  • Link status of our software (as by "ldd")

Our Software Information

  • Version information (as by "named -v", or the like)
  • Configuration (such as named.conf, dhcpd.conf, or the like)
    • Also zone files and leases file, if applicable
  • Some basic tool debug (not sure about this, perhaps VERSION.BIND via "dig" to a DNS server, or a DNSSEC lookup on the root for a recursive server)
  • Log output (depends on our configuration and maybe syslog setup)
  • Any core files lying around

Note that for most of the hardware information on Linux there is a utility called "lshw" which should provide it:

This surely isn't a comprehensive list. I left out things that I can't imagine us ever needing (graphics card information, users logged in, and so on). The utility of these will vary, as is the sensitivity of the information reported, and the time it takes to collect. We probably want to provide switches for:

  1. Removing any privacy-related information, or anonymizing it
  2. Only gathering information that can be gotten quickly
  3. Limiting the size/amount of information collected

Hopefully this is a reasonable starting point.

Last modified 5 years ago Last modified on Jun 18, 2012, 7:59:23 PM