
Zimbra ofrece muy buenas herramientas para extraer, tanto desde el interfaz gráfico como desde línea de comandos, información y estado de toda la actividad. Si deseamos tener un perfecto control de nuestros sistemas, de cuanta más información dispongamos, mejor que mejor. Aunque siempre hay que tener un balanceo entre la información recadada, la procesada y el tiempo de cada una.
Sin embargo, con información fácil de extraer siempre es útil tenerla presente y éste es el caso de las sesiones activas y las cuentas que tiene Zimbra. Con la ejecución de un simple comando, zmsoap -z -t admin DumpSessionsRequest, podemos obtener información interesante del uso de nuestro servidor Zimbra.
shell> zmsoap -z -t admin DumpSessionsRequest <DumpSessionsResponse activeSessions="21" xmlns="urn:zimbraAdmin"> <soap activeAccounts="4" activeSessions="8"/> <imap activeAccounts="7" activeSessions="13"/> </DumpSessionsResponse>

Como podemos observar, tenenemos el número de sesiones activas en Zimbra en el momento de la ejecución, por lo que si lo ejecutamos periódicamente podemos obtener unas buenas estadísticas del uso del sistema de correo a lo largo del tiempo, lo que ayudaría a prevenir problemas o a dar respuesta a problemas encontrados. Como de lo que estamos hablando es de monitorización, estamos hablando de Zabbix! En el foro de Zabbix, stefaan dejó un script que hacía lo mismo, así que simplemente lo vamos a adaptar para nuestros intereses y propósitos.
#!/usr/bin/perl use XML::Simple; use Data::Dumper; my $num_args = $#ARGV + 1; if ($num_args != 1) { print "Usage: zabbix_sessions <Accounts|Sessions>\n"; exit; } else { $parm = $ARGV[0]; $xml = new XML::Simple; $xmldata = `/bin/su -c 'zmsoap -z -t admin DumpSessionsRequest' \ - zimbra`; $data = $xml->XMLin($xmldata); if ($parm eq "sessions") { if($data->{activeSessions} eq ""){ print "0"; } else { print $data->{activeSessions}; } } if ($parm eq "soapaccounts") { if($data->{soap}{activeAccounts} eq ""){ print "0"; } else { print $data->{soap}{activeAccounts}; } } if ($parm eq "soapsessions") { if($data->{soap}{activeSessions} eq ""){ print "0"; } else { print $data->{soap}{activeSessions}; } } if ($parm eq "imapaccounts") { if($data->{imap}{activeAccounts} eq ""){ print "0"; } else { print $data->{imap}{activeAccounts}; } } if ($parm eq "imapsessions") { if($data->{imap}{activeSessions} eq ""){ print "0"; } else { print $data->{imap}{activeSessions}; } } }
Como siempre, necesitamos darle permisos a dicho script para que el usuario zabbix lo pueda ejecutar y también modificar el fichero de configuración del agente, para crear una nueva key, en este caso zimbra.users.
zabbix ALL= NOPASSWD: /usr/local/bin/zabbix_sessionsY en el agente, creamos la nueva key,
UserParameter=zimbra.users[*], /usr/bin/sudo /usr/local/bin/zabbix_sessions $1

Los parámetros que acepta son: sessions, soapaccounts, soapsessions, imapaccounts e imapsessions. Ya sólo nos queda crear los item's de monitorización.
Como el valor que se almacena es de tipo numérico, si es necesario crear un trigger para algún valor en concreto será muy simple de hacer.
No hay comentarios :
Publicar un comentario