blob: 1635c50a09bd98fe79575c3ac63360a17d64fa90 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
<?php
namespace Icinga\Module\Director\Clicommands;
use Icinga\Module\Director\CheckPlugin\PluginState;
use Icinga\Module\Director\Cli\Command;
use Icinga\Module\Director\Health;
use Icinga\Module\Director\Cli\PluginOutputBeautifier;
/**
* Check Icinga Director Health
*
* Use this command as a CheckPlugin to monitor your Icinga Director health
*/
class HealthCommand extends Command
{
/**
* Run health checks
*
* Use this command to run all or a specific set of Health Checks.
*
* USAGE
*
* icingacli director health check [options]
*
* OPTIONS
*
* --check <name> Run only a specific set of checks
* valid names: config, sync, import, jobs, deployment
* --db <name> Use a specific Icinga Web DB resource
* --watch <seconds> Refresh every <second>. For interactive use only
*/
public function checkAction()
{
$health = new Health();
if ($name = $this->params->get('db')) {
$health->setDbResourceName($name);
}
if ($name = $this->params->get('check')) {
$check = $health->getCheck($name);
echo PluginOutputBeautifier::beautify($check->getOutput(), $this->screen);
exit($check->getState()->getNumeric());
} else {
$state = new PluginState('OK');
$checks = $health->getAllChecks();
$output = [];
foreach ($checks as $check) {
$state->raise($check->getState());
$output[] = $check->getOutput();
}
if ($state->getNumeric() === 0) {
echo "Icinga Director: everything is fine\n\n";
} else {
echo "Icinga Director: there are problems\n\n";
}
$out = PluginOutputBeautifier::beautify(implode("\n", $output), $this->screen);
echo $out;
if (! $this->isBeingWatched()) {
exit($state->getNumeric());
}
}
}
/**
* Cli should provide this information, as it shifts the parameter
*
* @return bool
*/
protected function isBeingWatched()
{
global $argv;
return in_array('--watch', $argv);
}
}
|