Monitorando o SLA dos serviços verificados do Centreon
Algo curioso e que dependendo das circunstâncias pode ser útil pode ser conhecer o SLA de qualquer serviço que estejamos monitorando atualmente em nossos Centreons. Ele também pode ser projetado para quando monitoramos no nível de negócios, para dar visibilidade à sua disponibilidade.
Como sabemos, Centreon armazena as suas métricas e estados numa BD de MariaDB, podemos simplesmente, através de queries de MySQL, obter em tempo ou em % o estado de um Serviço monitorizado no Centreon. Poderemos saber quanto tempo (ou percentagem) esteve em estado OK, Aviso, Crítico, Desconhecido ou em Manutenção. Para quê? Poço, de todos é sabido que podemos conhecer o SLA de qualquer Host ou Serviço no Centreon, mas outra coisa é monitorizá-lo para nos alertar quando este não se cumprir, ou por exemplo para os visualizar no nosso Serviço de Negócio via NagVis.
Nada mau, para começar seria interessante que, se não estiveres a monitorizar queries de MySQL, dês uma vista de olhos a Este post. Quando já tiveres o script que permita fazer consultas a BBDD de MySQL, poderemos criar os Comandos que necessitamos e cada um com o seu tipo de consulta. Ya que unos comandos nos servirán para monitorizar el SLA de Hosts, otros de Servicios, otros nos darán el resultado en tiempo y otros en %, así que dependiendo lo que necesites te dejo aquí ciertas posibilidades:
- SLA de Servicios OK en %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SOMA(OKTimeScheduled)/($ARG1$ * 86400))*100,2) as porcentaje FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id AND description = '$ARG2$' AND from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA' -U %
- SLA de Servicios OK en Tiempo:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HOUR(sec_to_time(SOMA(OKTimeScheduled))) / 24), 'd_', MOD(HOUR(sec_to_time(SOMA(OKTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SOMA(OKTimeScheduled))), 'm') AS Tiempo FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id AND description = '$ARG2$' AND from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA'
- SLA de Servicios Warning en %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SOMA(WARNINGTimeScheduled)/($ARG1$ * 86400))*100,2) as porcentaje FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id AND description = '$ARG2$' AND from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA' -U %
- Aviso de SLA de Serviços em Tempo:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HOUR(sec_to_time(SOMA(WARNINGTimeScheduled))) / 24), 'd_', MOD(HOUR(sec_to_time(SOMA(WARNINGTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SOMA(WARNINGTimeScheduled))), 'm') AS Tiempo FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id AND description = '$ARG2$' AND from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA'
- SLA de Serviços Crítico em %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SOMA(TempoCriticoAgendado)/($ARG1$ * 86400))*100,2) as porcentaje FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id AND description = '$ARG2$' AND from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA' -U %
- SLA de Serviços Crítico em Tempo:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HOUR(sec_to_time(SOMA(TempoCriticoAgendado))) / 24), 'd_', MOD(HOUR(sec_to_time(SOMA(TempoCriticoAgendado))), 24), 'h_', MINUTE(sec_to_time(SOMA(TempoCriticoAgendado))), 'm') AS Tiempo FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id AND description = '$ARG2$' AND from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA'
- SLA de Uptime de Hosts em %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SOMA(UptimeAgendado)/($ARG1$ * 86400))*100,2) como percentagem A PARTIR de hosts, log_archive_host ONDE log_archive_host.host_id = hosts.host_id E hosts.name = '$ARG2$' E from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG1$ day) ordenar POR date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA' -U %
- SLA de Uptime de Hosts em Tempo:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HOUR(sec_to_time(SOMA(UptimeAgendado))) / 24), 'd_', MOD(HOUR(sec_to_time(SOMA(UptimeAgendado))), 24), 'h_', MINUTE(sec_to_time(SOMA(UptimeAgendado))), 'm') COMO Tempo A PARTIR de hosts, log_archive_host ONDE log_archive_host.host_id = hosts.host_id E hosts.name = '$ARG2$' E from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG1$ day) ordenar POR date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA'
- SLA de Downtime de Hosts em %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SOMA(DownTimeAgendado)/($ARG1$ * 86400))*100,2) como percentagem A PARTIR de hosts, log_archive_host ONDE log_archive_host.host_id = hosts.host_id E hosts.name = '$ARG2$' E from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG1$ day) ordenar POR date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA' -U %
- SLA de Downtime de Hosts em Tempo:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HOUR(sec_to_time(SOMA(DownTimeAgendado))) / 24), 'd_', MOD(HOUR(sec_to_time(SOMA(DownTimeAgendado))), 24), 'h_', MINUTE(sec_to_time(SOMA(DownTimeAgendado))), 'm') COMO Tempo A PARTIR de hosts, log_archive_host ONDE log_archive_host.host_id = hosts.host_id E hosts.name = '$ARG2$' E from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG1$ day) ordenar POR date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA'
E agora só falta criar tantos Serviços para monitorizar o SLA como nos interessar, neste caso prático, eu estou a utilizá-los apenas para medir o SLA dos Serviços de Negócio, e portanto para os visualizar no NagVis. Como argumentos colocaremos os dias do SLA que nos interessa ver e no Nome do Serviço, el nombre único de un Servicio a chequear.
E como sempre, depois de gravar e exportar a configuração, tendremos os nossos serviços SLA listados para chequear mediante uma consulta na base de dados de Centreon el tiempo o porcentaje del estado de un Servicio.
Y en NagVis, com o Gadget de RawNumbers podremos adicionar os ítems SLA monitorizados e ficar mais atrativo à hora de movernos entre mapas e conhecer o SLA que oferece qualquer serviço, ideal para perfis não 100% técnicos e quieran reconhecer o estado da sua infraestrutura em tempo real.













































