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.