#!/usr/bin/php
<?php
#Habilita a exibição de erros (strict)
#error_reporting(E_ALL);

/*******************************************************************************
* Header
********************************************************************************

TICKET: <numero do ticket no OpDesk>
AUTOR: Otavio Honorio
CRIADO EM: 09/12/2015 14:01:12

REVISÕES:
--------------------------------------------------------------
<versão> <Data da Revisão>, <autor da revisao>
    - <Descrição das modificações>

********************************************************************************/

require_once("/usr/local/opmon/libexec/php-nagios-plugins/Nagios_Plugin.php");
include_once "/usr/local/opmon/etc/config.php";
set_logged_user("opmonadmin");

define("VERSION", "1.0");

$np = null;

/*******************************************************************************
* Exibi o manual do software
********************************************************************************/
function getGuideLine()
{
	print <<<EOF

------------------------------------------
Manual de exemplo.
------------------------------------------

Descrição do plugin:
	Este plugin exibe a quantidade de objetos sendo estes IC e ICs
	 que estão com checagens e/ou notificações desabilitadas.

Instalação:
	Este plugin esta na imagem do OpMon

Dependências:
	php-nagios-plugins
	yum install php-nagios-plugins -y

Funcionamento:
	Basta informar o valor de warning e critical em percentual
	 para o OpMon gerar alerta de entropia

Exemplos de execução e retorno do comando:
    ./check_entropy -w 40 -c 90
    OK: Numero gerado 10

EOF;

	exit(OK);

}

/*******************************************************************************
* Seta os atributos da variável global $np
********************************************************************************/
function setNagios()
{
	# Constructor
	global $np;

	$np = new Nagios_Plugin(
		array (
			'version' => VERSION . " [www.opservices.com.br/suporte]",
			'blurb' => "Developed by:\n\tOpServices\n"
				. "Author: \n\nOtavio Honorio - otavio.honorio\@opservices.com.br\n",
			'usage' => "Usage:\n\t%s -s <start_number> -e <end_number>\n"
				. " \t [-w <warning>] [-c <critical>]",
		)
	);
	// option, help, required
	$np->add_arg("warning|w=i", "Warning value");
	$np->add_arg("critical|c=i", "Critical value");
	$np->add_arg("man", "Show guideline");

	$np->getopts();

	if (!isset($np->opts['warning']) and !isset($np->opts['critical'])) {
		$np->nagios_exit(WARNING, "Need parameters -w|--warning and -c|--critical");
	} else {
		$np->set_thresholds($np->opts['warning'], $np->opts['critical'], 0);
	}
}

function main()
{
	setNagios();

	global $np;

	if (isset($np->opts['man'])) {
		getGuideLine();
	}

    $status = get_entropy();

	$detail = "{$status->entropy['pct_disabled']}% de elementos desabilitados".
		" (TOTAL = {$status->entropy['total_disabled']}, onde {$status->entropy['host_check_disabled']} checagens de hosts,".
		" {$status->entropy['service_check_disabled']} checagens de servicos,".
		" {$status->entropy['host_notification_disabled']} notificacoes de hosts e".
		" {$status->entropy['service_notification_disabled']} notificacoes de servicos)";

	$perfdata = "Desabilitados={$status->entropy['pct_disabled']}%;{$np->opts['warning']};{$np->opts['critical']};0;100".
		" total_disabled={$status->entropy['total_disabled']}".
		" service_check_disabled={$status->entropy['service_check_disabled']}".
		" host_notification_disabled={$status->entropy['host_notification_disabled']}".
		" service_notification_disabled={$status->entropy['service_notification_disabled']}";

	$np->nagios_exit(
		$np->check_threshold($status->entropy['pct_disabled']),
		"$detail | $perfdata"
        );
}

main();

/* vim: set smartindent tabstop=4 shiftwidth=4 softtabstop=4 expandtab[ENTER] */
