Video Screencast Help
Give us your opinion and win with Symantec! Please help us by taking this survey to tell us about your experience with Symantec Connect, so that we can continue to grow and improve.  Take the survey.

Hardware Status could not be retrieved - Data too long for column 'cpu' - VMWARE

Created: 29 Jan 2013

Hi Guys,

VMWare ESXi 4.1

Host Status - "Hardware Status could not be retrieved from the host: ..."

/data/logs/bcc/BrightmailLog.log

"com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'cpu' at row 1"

/data/stats/watchdog.xml

"...

 <cpu>Intel(R) Xeon(R) CPU E5620 @ 2.40GHz,Intel(R) Xeon(R) CPU E5620 @ 2.40GHz,Intel(R) Xeon(R) CPU E5620 @ 2.40GHz,Intel(R) Xeon(R) CPU E5620 @ 2.40GHz,Intel(R) Xeon(R) CPU E5620 @ 2.40GHz,Intel(R) Xeon(R) CPU E5620 @ 2.40GHz,Intel(R) Xeon(R) CPU E5620 @ 2.40GHz,Intel(R) Xeon(R) CPU E5620 @ 2.40GHz</cpu>

..."

After contacting Symantec support I've decided to look for and propose a solution.

Searching the filesystem I've found the scripts responsible for populating the XML ("/data/stats/watchdog.xml") used as a source of data to the HOST STATUS screen in the Control Center.

The "/opt/Symantec/Brightmail/cli/sbin/systemcpu" script is responsible for collecting the CPU info of the machine. It uses the "/usr/sbin/dmidecode" to retrieve the number of cpu sockets found in the hardware, but when using vmware, without success.

I've just written a piece of code to deal with this and put a more apropriate value inside $DMIDECODE_CPU (used later in the code).

# Is it a virtual machine??
if (`/usr/sbin/dmidecode | /bin/grep -i vmware`)
{
        # If more than one socket is defined in the VM, count sockets
        if (`/bin/grep physical /proc/cpuinfo | /bin/sort | /usr/bin/uniq`)
        {
                $DMIDECODE_CPU = "/bin/grep physical /proc/cpuinfo | /bin/sort | /usr/bin/uniq";
        }
        else
        {
                $DMIDECODE_CPU = "/bin/grep name /proc/cpuinfo | /bin/sort | /usr/bin/uniq";
        }
}
else    # Not a VM - use dmidecode to count sockets
{
        $DMIDECODE_CPU = "/usr/sbin/dmidecode -t processor | /bin/grep Version";
}
 

I've created two VMs: One Control Center with 2 sockets (defined in vmware - 4 cores per socket) and One Scanner  (just one socket - 8 cores)

This was my approach to solve the problem. Just one in many.