Skip to content

Repository files navigation

Build Status

randomhost/icinga

1. Purpose

This package provides check and notification commands for the Icinga monitoring system.

2. Usage

2.1. Base Class

The abstract Base class implements the following public methods which are available for both, check and notification classes.

  • Base::getShortOptions()
    Returns available short options. The return value is supposed to be passed to PHP's built-in getopt() function as the first parameter and is used for setting up the command line arguments accepted by the check class.

  • Base::getLongOptions()
    Returns available long options. The return value is supposed to be passed to PHP's built-in getopt() function as the second parameter and is used for setting up the command line arguments accepted by the check class.

    The Base class comes with the pre-defined long option --help which triggers the built-in help method Base::displayHelp().

  • Base::getMessage()
    Returns the plugin output. The return value is supposed to be echoed to stdout and defines the status message which will be passed to Icinga.

  • Base::getCode()
    Returns the return code. The return value is supposed to be passed to PHP's built-in exit() function and defines the status code which will be passed to Icinga.

  • Base::setOptions($options)
    This method accepts parsed command line arguments as returned by PHP's built-in getopt() function.

Check and notification classes should NOT extend this class directly. They should extend their corresponding base class Check\Base or Notification\Base accordingly.

2.2. Check Plugins

A basic approach at using a check plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Check;
require_once'/path/to/vendor/autoload.php';
$check = newExampleService();
$check->setOptions(
getopt(
$check->getShortOptions(),
$check->getLongOptions()
)
);
$check->run();
echo$check->getMessage();
exit($check->getCode());

This will instantiate the check class for the example service and run the checks defined for that service. What is being checked depends on the individual check implementation.

2.2.1. Check\Base Class

The abstract Check\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Check\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main check plugin logic.

All check classes should extend this class.

2.2.2. Implementing Check Classes

To create a check class, simply extend the Check\Base class and implement a protected method check().

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
protectedfunctioncheck(): Plugin
{
// main check logic goes here$this->setMessage('Everything is fine');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your check requires command line parameters, you can define those in the constructor of your check class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
publicfunction__construct()
{
$this->setLongOptions(
[
'host:',
'port:',
'user:',
'password:',
'warningThreshold:',
'criticalThreshold:'
]
);
$this->setRequiredOptions(
[
'host',
'port',
'user',
'password',
'warningThreshold',
'criticalThreshold'
]
);
$this->setHelp('Icinga plugin for checking the example service.--host Example service IP address or hostname--port Example service port--user Example service user--password Example service password--warningThreshold Threshold to trigger the WARNING state--criticalThreshold Threshold to trigger the CRITICAL state');
}
protectedfunctioncheck(): Plugin
{
$options = $this->getOptions();
// main check logic goes herereturn$this;
}
}

2.3. Notification Plugins

A basic approach at using a notification plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Notification;
require_once'/path/to/vendor/autoload.php';
$notification = newExampleNotification();
$notification->setOptions(
getopt(
$notification->getShortOptions(),
$notification->getLongOptions()
)
);
$notification->run();
echo$notification->getMessage();
exit($notification->getCode());

This will instantiate the notification class for the example notification plugin and run the logic defined for that plugin. What type of notification is being sent depends on the individual notification class implementation.

2.3.1. Notification\Base Class

The abstract Notification\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Notification\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main notification plugin logic.

All notification classes should extend this class.

2.3.2. Implementing Notification Classes

To create a notification class, simply extend the Notification\Base class and implement a protected method send().

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
protectedfunctionsend(): Plugin
{
// main notification logic goes here$this->setMessage('Notification sent');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your notification class requires command line parameters, you can define those in the constructor of your notification class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
publicfunction__construct()
{
$this->setLongOptions(
[
'type:',
'service:',
'host:',
'address:',
'state:',
'time:',
'output:',
'phonenumber:',
]
);
$this->setRequiredOptions(
[
'type',
'service',
'host',
'address',
'state',
'time',
'output',
'phonenumber',
]
);
$this->setHelp('Icinga plugin for sending notifications via the example notification provider.--type Notification type--service Service name--host Host name--address Host address--state Service state--time Notification time--output Check plugin output--phonenumber User phone number');
}
protectedfunctionsend(): Plugin
{
$options = $this->getOptions();
// main notification logic goes herereturn$this;
}
}

3. License

See LICENSE.txt for full license details.

About

Provides check and notification commands for the Icinga monitoring system.

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - randomhost/icinga: Provides check and notification commands for the Icinga monitoring system. · GitHub
Skip to content

Repository files navigation

Build Status

randomhost/icinga

1. Purpose

This package provides check and notification commands for the Icinga monitoring system.

2. Usage

2.1. Base Class

The abstract Base class implements the following public methods which are available for both, check and notification classes.

  • Base::getShortOptions()
    Returns available short options. The return value is supposed to be passed to PHP's built-in getopt() function as the first parameter and is used for setting up the command line arguments accepted by the check class.

  • Base::getLongOptions()
    Returns available long options. The return value is supposed to be passed to PHP's built-in getopt() function as the second parameter and is used for setting up the command line arguments accepted by the check class.

    The Base class comes with the pre-defined long option --help which triggers the built-in help method Base::displayHelp().

  • Base::getMessage()
    Returns the plugin output. The return value is supposed to be echoed to stdout and defines the status message which will be passed to Icinga.

  • Base::getCode()
    Returns the return code. The return value is supposed to be passed to PHP's built-in exit() function and defines the status code which will be passed to Icinga.

  • Base::setOptions($options)
    This method accepts parsed command line arguments as returned by PHP's built-in getopt() function.

Check and notification classes should NOT extend this class directly. They should extend their corresponding base class Check\Base or Notification\Base accordingly.

2.2. Check Plugins

A basic approach at using a check plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Check;
require_once'/path/to/vendor/autoload.php';
$check = newExampleService();
$check->setOptions(
getopt(
$check->getShortOptions(),
$check->getLongOptions()
)
);
$check->run();
echo$check->getMessage();
exit($check->getCode());

This will instantiate the check class for the example service and run the checks defined for that service. What is being checked depends on the individual check implementation.

2.2.1. Check\Base Class

The abstract Check\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Check\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main check plugin logic.

All check classes should extend this class.

2.2.2. Implementing Check Classes

To create a check class, simply extend the Check\Base class and implement a protected method check().

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
protectedfunctioncheck(): Plugin
{
// main check logic goes here$this->setMessage('Everything is fine');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your check requires command line parameters, you can define those in the constructor of your check class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
publicfunction__construct()
{
$this->setLongOptions(
[
'host:',
'port:',
'user:',
'password:',
'warningThreshold:',
'criticalThreshold:'
]
);
$this->setRequiredOptions(
[
'host',
'port',
'user',
'password',
'warningThreshold',
'criticalThreshold'
]
);
$this->setHelp('Icinga plugin for checking the example service.--host Example service IP address or hostname--port Example service port--user Example service user--password Example service password--warningThreshold Threshold to trigger the WARNING state--criticalThreshold Threshold to trigger the CRITICAL state');
}
protectedfunctioncheck(): Plugin
{
$options = $this->getOptions();
// main check logic goes herereturn$this;
}
}

2.3. Notification Plugins

A basic approach at using a notification plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Notification;
require_once'/path/to/vendor/autoload.php';
$notification = newExampleNotification();
$notification->setOptions(
getopt(
$notification->getShortOptions(),
$notification->getLongOptions()
)
);
$notification->run();
echo$notification->getMessage();
exit($notification->getCode());

This will instantiate the notification class for the example notification plugin and run the logic defined for that plugin. What type of notification is being sent depends on the individual notification class implementation.

2.3.1. Notification\Base Class

The abstract Notification\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Notification\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main notification plugin logic.

All notification classes should extend this class.

2.3.2. Implementing Notification Classes

To create a notification class, simply extend the Notification\Base class and implement a protected method send().

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
protectedfunctionsend(): Plugin
{
// main notification logic goes here$this->setMessage('Notification sent');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your notification class requires command line parameters, you can define those in the constructor of your notification class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
publicfunction__construct()
{
$this->setLongOptions(
[
'type:',
'service:',
'host:',
'address:',
'state:',
'time:',
'output:',
'phonenumber:',
]
);
$this->setRequiredOptions(
[
'type',
'service',
'host',
'address',
'state',
'time',
'output',
'phonenumber',
]
);
$this->setHelp('Icinga plugin for sending notifications via the example notification provider.--type Notification type--service Service name--host Host name--address Host address--state Service state--time Notification time--output Check plugin output--phonenumber User phone number');
}
protectedfunctionsend(): Plugin
{
$options = $this->getOptions();
// main notification logic goes herereturn$this;
}
}

3. License

See LICENSE.txt for full license details.

About

Provides check and notification commands for the Icinga monitoring system.

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - randomhost/icinga: Provides check and notification commands for the Icinga monitoring system. · GitHub
Skip to content

Repository files navigation

Build Status

randomhost/icinga

1. Purpose

This package provides check and notification commands for the Icinga monitoring system.

2. Usage

2.1. Base Class

The abstract Base class implements the following public methods which are available for both, check and notification classes.

  • Base::getShortOptions()
    Returns available short options. The return value is supposed to be passed to PHP's built-in getopt() function as the first parameter and is used for setting up the command line arguments accepted by the check class.

  • Base::getLongOptions()
    Returns available long options. The return value is supposed to be passed to PHP's built-in getopt() function as the second parameter and is used for setting up the command line arguments accepted by the check class.

    The Base class comes with the pre-defined long option --help which triggers the built-in help method Base::displayHelp().

  • Base::getMessage()
    Returns the plugin output. The return value is supposed to be echoed to stdout and defines the status message which will be passed to Icinga.

  • Base::getCode()
    Returns the return code. The return value is supposed to be passed to PHP's built-in exit() function and defines the status code which will be passed to Icinga.

  • Base::setOptions($options)
    This method accepts parsed command line arguments as returned by PHP's built-in getopt() function.

Check and notification classes should NOT extend this class directly. They should extend their corresponding base class Check\Base or Notification\Base accordingly.

2.2. Check Plugins

A basic approach at using a check plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Check;
require_once'/path/to/vendor/autoload.php';
$check = newExampleService();
$check->setOptions(
getopt(
$check->getShortOptions(),
$check->getLongOptions()
)
);
$check->run();
echo$check->getMessage();
exit($check->getCode());

This will instantiate the check class for the example service and run the checks defined for that service. What is being checked depends on the individual check implementation.

2.2.1. Check\Base Class

The abstract Check\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Check\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main check plugin logic.

All check classes should extend this class.

2.2.2. Implementing Check Classes

To create a check class, simply extend the Check\Base class and implement a protected method check().

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
protectedfunctioncheck(): Plugin
{
// main check logic goes here$this->setMessage('Everything is fine');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your check requires command line parameters, you can define those in the constructor of your check class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
publicfunction__construct()
{
$this->setLongOptions(
[
'host:',
'port:',
'user:',
'password:',
'warningThreshold:',
'criticalThreshold:'
]
);
$this->setRequiredOptions(
[
'host',
'port',
'user',
'password',
'warningThreshold',
'criticalThreshold'
]
);
$this->setHelp('Icinga plugin for checking the example service.--host Example service IP address or hostname--port Example service port--user Example service user--password Example service password--warningThreshold Threshold to trigger the WARNING state--criticalThreshold Threshold to trigger the CRITICAL state');
}
protectedfunctioncheck(): Plugin
{
$options = $this->getOptions();
// main check logic goes herereturn$this;
}
}

2.3. Notification Plugins

A basic approach at using a notification plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Notification;
require_once'/path/to/vendor/autoload.php';
$notification = newExampleNotification();
$notification->setOptions(
getopt(
$notification->getShortOptions(),
$notification->getLongOptions()
)
);
$notification->run();
echo$notification->getMessage();
exit($notification->getCode());

This will instantiate the notification class for the example notification plugin and run the logic defined for that plugin. What type of notification is being sent depends on the individual notification class implementation.

2.3.1. Notification\Base Class

The abstract Notification\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Notification\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main notification plugin logic.

All notification classes should extend this class.

2.3.2. Implementing Notification Classes

To create a notification class, simply extend the Notification\Base class and implement a protected method send().

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
protectedfunctionsend(): Plugin
{
// main notification logic goes here$this->setMessage('Notification sent');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your notification class requires command line parameters, you can define those in the constructor of your notification class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
publicfunction__construct()
{
$this->setLongOptions(
[
'type:',
'service:',
'host:',
'address:',
'state:',
'time:',
'output:',
'phonenumber:',
]
);
$this->setRequiredOptions(
[
'type',
'service',
'host',
'address',
'state',
'time',
'output',
'phonenumber',
]
);
$this->setHelp('Icinga plugin for sending notifications via the example notification provider.--type Notification type--service Service name--host Host name--address Host address--state Service state--time Notification time--output Check plugin output--phonenumber User phone number');
}
protectedfunctionsend(): Plugin
{
$options = $this->getOptions();
// main notification logic goes herereturn$this;
}
}

3. License

See LICENSE.txt for full license details.

About

Provides check and notification commands for the Icinga monitoring system.

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - randomhost/icinga: Provides check and notification commands for the Icinga monitoring system. · GitHub
Skip to content

Repository files navigation

Build Status

randomhost/icinga

1. Purpose

This package provides check and notification commands for the Icinga monitoring system.

2. Usage

2.1. Base Class

The abstract Base class implements the following public methods which are available for both, check and notification classes.

  • Base::getShortOptions()
    Returns available short options. The return value is supposed to be passed to PHP's built-in getopt() function as the first parameter and is used for setting up the command line arguments accepted by the check class.

  • Base::getLongOptions()
    Returns available long options. The return value is supposed to be passed to PHP's built-in getopt() function as the second parameter and is used for setting up the command line arguments accepted by the check class.

    The Base class comes with the pre-defined long option --help which triggers the built-in help method Base::displayHelp().

  • Base::getMessage()
    Returns the plugin output. The return value is supposed to be echoed to stdout and defines the status message which will be passed to Icinga.

  • Base::getCode()
    Returns the return code. The return value is supposed to be passed to PHP's built-in exit() function and defines the status code which will be passed to Icinga.

  • Base::setOptions($options)
    This method accepts parsed command line arguments as returned by PHP's built-in getopt() function.

Check and notification classes should NOT extend this class directly. They should extend their corresponding base class Check\Base or Notification\Base accordingly.

2.2. Check Plugins

A basic approach at using a check plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Check;
require_once'/path/to/vendor/autoload.php';
$check = newExampleService();
$check->setOptions(
getopt(
$check->getShortOptions(),
$check->getLongOptions()
)
);
$check->run();
echo$check->getMessage();
exit($check->getCode());

This will instantiate the check class for the example service and run the checks defined for that service. What is being checked depends on the individual check implementation.

2.2.1. Check\Base Class

The abstract Check\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Check\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main check plugin logic.

All check classes should extend this class.

2.2.2. Implementing Check Classes

To create a check class, simply extend the Check\Base class and implement a protected method check().

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
protectedfunctioncheck(): Plugin
{
// main check logic goes here$this->setMessage('Everything is fine');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your check requires command line parameters, you can define those in the constructor of your check class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
publicfunction__construct()
{
$this->setLongOptions(
[
'host:',
'port:',
'user:',
'password:',
'warningThreshold:',
'criticalThreshold:'
]
);
$this->setRequiredOptions(
[
'host',
'port',
'user',
'password',
'warningThreshold',
'criticalThreshold'
]
);
$this->setHelp('Icinga plugin for checking the example service.--host Example service IP address or hostname--port Example service port--user Example service user--password Example service password--warningThreshold Threshold to trigger the WARNING state--criticalThreshold Threshold to trigger the CRITICAL state');
}
protectedfunctioncheck(): Plugin
{
$options = $this->getOptions();
// main check logic goes herereturn$this;
}
}

2.3. Notification Plugins

A basic approach at using a notification plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Notification;
require_once'/path/to/vendor/autoload.php';
$notification = newExampleNotification();
$notification->setOptions(
getopt(
$notification->getShortOptions(),
$notification->getLongOptions()
)
);
$notification->run();
echo$notification->getMessage();
exit($notification->getCode());

This will instantiate the notification class for the example notification plugin and run the logic defined for that plugin. What type of notification is being sent depends on the individual notification class implementation.

2.3.1. Notification\Base Class

The abstract Notification\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Notification\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main notification plugin logic.

All notification classes should extend this class.

2.3.2. Implementing Notification Classes

To create a notification class, simply extend the Notification\Base class and implement a protected method send().

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
protectedfunctionsend(): Plugin
{
// main notification logic goes here$this->setMessage('Notification sent');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your notification class requires command line parameters, you can define those in the constructor of your notification class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
publicfunction__construct()
{
$this->setLongOptions(
[
'type:',
'service:',
'host:',
'address:',
'state:',
'time:',
'output:',
'phonenumber:',
]
);
$this->setRequiredOptions(
[
'type',
'service',
'host',
'address',
'state',
'time',
'output',
'phonenumber',
]
);
$this->setHelp('Icinga plugin for sending notifications via the example notification provider.--type Notification type--service Service name--host Host name--address Host address--state Service state--time Notification time--output Check plugin output--phonenumber User phone number');
}
protectedfunctionsend(): Plugin
{
$options = $this->getOptions();
// main notification logic goes herereturn$this;
}
}

3. License

See LICENSE.txt for full license details.

About

Provides check and notification commands for the Icinga monitoring system.

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - randomhost/icinga: Provides check and notification commands for the Icinga monitoring system. · GitHub
Skip to content

Repository files navigation

Build Status

randomhost/icinga

1. Purpose

This package provides check and notification commands for the Icinga monitoring system.

2. Usage

2.1. Base Class

The abstract Base class implements the following public methods which are available for both, check and notification classes.

  • Base::getShortOptions()
    Returns available short options. The return value is supposed to be passed to PHP's built-in getopt() function as the first parameter and is used for setting up the command line arguments accepted by the check class.

  • Base::getLongOptions()
    Returns available long options. The return value is supposed to be passed to PHP's built-in getopt() function as the second parameter and is used for setting up the command line arguments accepted by the check class.

    The Base class comes with the pre-defined long option --help which triggers the built-in help method Base::displayHelp().

  • Base::getMessage()
    Returns the plugin output. The return value is supposed to be echoed to stdout and defines the status message which will be passed to Icinga.

  • Base::getCode()
    Returns the return code. The return value is supposed to be passed to PHP's built-in exit() function and defines the status code which will be passed to Icinga.

  • Base::setOptions($options)
    This method accepts parsed command line arguments as returned by PHP's built-in getopt() function.

Check and notification classes should NOT extend this class directly. They should extend their corresponding base class Check\Base or Notification\Base accordingly.

2.2. Check Plugins

A basic approach at using a check plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Check;
require_once'/path/to/vendor/autoload.php';
$check = newExampleService();
$check->setOptions(
getopt(
$check->getShortOptions(),
$check->getLongOptions()
)
);
$check->run();
echo$check->getMessage();
exit($check->getCode());

This will instantiate the check class for the example service and run the checks defined for that service. What is being checked depends on the individual check implementation.

2.2.1. Check\Base Class

The abstract Check\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Check\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main check plugin logic.

All check classes should extend this class.

2.2.2. Implementing Check Classes

To create a check class, simply extend the Check\Base class and implement a protected method check().

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
protectedfunctioncheck(): Plugin
{
// main check logic goes here$this->setMessage('Everything is fine');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your check requires command line parameters, you can define those in the constructor of your check class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
publicfunction__construct()
{
$this->setLongOptions(
[
'host:',
'port:',
'user:',
'password:',
'warningThreshold:',
'criticalThreshold:'
]
);
$this->setRequiredOptions(
[
'host',
'port',
'user',
'password',
'warningThreshold',
'criticalThreshold'
]
);
$this->setHelp('Icinga plugin for checking the example service.--host Example service IP address or hostname--port Example service port--user Example service user--password Example service password--warningThreshold Threshold to trigger the WARNING state--criticalThreshold Threshold to trigger the CRITICAL state');
}
protectedfunctioncheck(): Plugin
{
$options = $this->getOptions();
// main check logic goes herereturn$this;
}
}

2.3. Notification Plugins

A basic approach at using a notification plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Notification;
require_once'/path/to/vendor/autoload.php';
$notification = newExampleNotification();
$notification->setOptions(
getopt(
$notification->getShortOptions(),
$notification->getLongOptions()
)
);
$notification->run();
echo$notification->getMessage();
exit($notification->getCode());

This will instantiate the notification class for the example notification plugin and run the logic defined for that plugin. What type of notification is being sent depends on the individual notification class implementation.

2.3.1. Notification\Base Class

The abstract Notification\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Notification\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main notification plugin logic.

All notification classes should extend this class.

2.3.2. Implementing Notification Classes

To create a notification class, simply extend the Notification\Base class and implement a protected method send().

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
protectedfunctionsend(): Plugin
{
// main notification logic goes here$this->setMessage('Notification sent');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your notification class requires command line parameters, you can define those in the constructor of your notification class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
publicfunction__construct()
{
$this->setLongOptions(
[
'type:',
'service:',
'host:',
'address:',
'state:',
'time:',
'output:',
'phonenumber:',
]
);
$this->setRequiredOptions(
[
'type',
'service',
'host',
'address',
'state',
'time',
'output',
'phonenumber',
]
);
$this->setHelp('Icinga plugin for sending notifications via the example notification provider.--type Notification type--service Service name--host Host name--address Host address--state Service state--time Notification time--output Check plugin output--phonenumber User phone number');
}
protectedfunctionsend(): Plugin
{
$options = $this->getOptions();
// main notification logic goes herereturn$this;
}
}

3. License

See LICENSE.txt for full license details.

About

Provides check and notification commands for the Icinga monitoring system.

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - randomhost/icinga: Provides check and notification commands for the Icinga monitoring system. · GitHub
Skip to content

Repository files navigation

Build Status

randomhost/icinga

1. Purpose

This package provides check and notification commands for the Icinga monitoring system.

2. Usage

2.1. Base Class

The abstract Base class implements the following public methods which are available for both, check and notification classes.

  • Base::getShortOptions()
    Returns available short options. The return value is supposed to be passed to PHP's built-in getopt() function as the first parameter and is used for setting up the command line arguments accepted by the check class.

  • Base::getLongOptions()
    Returns available long options. The return value is supposed to be passed to PHP's built-in getopt() function as the second parameter and is used for setting up the command line arguments accepted by the check class.

    The Base class comes with the pre-defined long option --help which triggers the built-in help method Base::displayHelp().

  • Base::getMessage()
    Returns the plugin output. The return value is supposed to be echoed to stdout and defines the status message which will be passed to Icinga.

  • Base::getCode()
    Returns the return code. The return value is supposed to be passed to PHP's built-in exit() function and defines the status code which will be passed to Icinga.

  • Base::setOptions($options)
    This method accepts parsed command line arguments as returned by PHP's built-in getopt() function.

Check and notification classes should NOT extend this class directly. They should extend their corresponding base class Check\Base or Notification\Base accordingly.

2.2. Check Plugins

A basic approach at using a check plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Check;
require_once'/path/to/vendor/autoload.php';
$check = newExampleService();
$check->setOptions(
getopt(
$check->getShortOptions(),
$check->getLongOptions()
)
);
$check->run();
echo$check->getMessage();
exit($check->getCode());

This will instantiate the check class for the example service and run the checks defined for that service. What is being checked depends on the individual check implementation.

2.2.1. Check\Base Class

The abstract Check\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Check\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main check plugin logic.

All check classes should extend this class.

2.2.2. Implementing Check Classes

To create a check class, simply extend the Check\Base class and implement a protected method check().

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
protectedfunctioncheck(): Plugin
{
// main check logic goes here$this->setMessage('Everything is fine');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your check requires command line parameters, you can define those in the constructor of your check class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
publicfunction__construct()
{
$this->setLongOptions(
[
'host:',
'port:',
'user:',
'password:',
'warningThreshold:',
'criticalThreshold:'
]
);
$this->setRequiredOptions(
[
'host',
'port',
'user',
'password',
'warningThreshold',
'criticalThreshold'
]
);
$this->setHelp('Icinga plugin for checking the example service.--host Example service IP address or hostname--port Example service port--user Example service user--password Example service password--warningThreshold Threshold to trigger the WARNING state--criticalThreshold Threshold to trigger the CRITICAL state');
}
protectedfunctioncheck(): Plugin
{
$options = $this->getOptions();
// main check logic goes herereturn$this;
}
}

2.3. Notification Plugins

A basic approach at using a notification plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Notification;
require_once'/path/to/vendor/autoload.php';
$notification = newExampleNotification();
$notification->setOptions(
getopt(
$notification->getShortOptions(),
$notification->getLongOptions()
)
);
$notification->run();
echo$notification->getMessage();
exit($notification->getCode());

This will instantiate the notification class for the example notification plugin and run the logic defined for that plugin. What type of notification is being sent depends on the individual notification class implementation.

2.3.1. Notification\Base Class

The abstract Notification\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Notification\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main notification plugin logic.

All notification classes should extend this class.

2.3.2. Implementing Notification Classes

To create a notification class, simply extend the Notification\Base class and implement a protected method send().

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
protectedfunctionsend(): Plugin
{
// main notification logic goes here$this->setMessage('Notification sent');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your notification class requires command line parameters, you can define those in the constructor of your notification class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
publicfunction__construct()
{
$this->setLongOptions(
[
'type:',
'service:',
'host:',
'address:',
'state:',
'time:',
'output:',
'phonenumber:',
]
);
$this->setRequiredOptions(
[
'type',
'service',
'host',
'address',
'state',
'time',
'output',
'phonenumber',
]
);
$this->setHelp('Icinga plugin for sending notifications via the example notification provider.--type Notification type--service Service name--host Host name--address Host address--state Service state--time Notification time--output Check plugin output--phonenumber User phone number');
}
protectedfunctionsend(): Plugin
{
$options = $this->getOptions();
// main notification logic goes herereturn$this;
}
}

3. License

See LICENSE.txt for full license details.

About

Provides check and notification commands for the Icinga monitoring system.

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - randomhost/icinga: Provides check and notification commands for the Icinga monitoring system. · GitHub
Skip to content

Repository files navigation

Build Status

randomhost/icinga

1. Purpose

This package provides check and notification commands for the Icinga monitoring system.

2. Usage

2.1. Base Class

The abstract Base class implements the following public methods which are available for both, check and notification classes.

  • Base::getShortOptions()
    Returns available short options. The return value is supposed to be passed to PHP's built-in getopt() function as the first parameter and is used for setting up the command line arguments accepted by the check class.

  • Base::getLongOptions()
    Returns available long options. The return value is supposed to be passed to PHP's built-in getopt() function as the second parameter and is used for setting up the command line arguments accepted by the check class.

    The Base class comes with the pre-defined long option --help which triggers the built-in help method Base::displayHelp().

  • Base::getMessage()
    Returns the plugin output. The return value is supposed to be echoed to stdout and defines the status message which will be passed to Icinga.

  • Base::getCode()
    Returns the return code. The return value is supposed to be passed to PHP's built-in exit() function and defines the status code which will be passed to Icinga.

  • Base::setOptions($options)
    This method accepts parsed command line arguments as returned by PHP's built-in getopt() function.

Check and notification classes should NOT extend this class directly. They should extend their corresponding base class Check\Base or Notification\Base accordingly.

2.2. Check Plugins

A basic approach at using a check plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Check;
require_once'/path/to/vendor/autoload.php';
$check = newExampleService();
$check->setOptions(
getopt(
$check->getShortOptions(),
$check->getLongOptions()
)
);
$check->run();
echo$check->getMessage();
exit($check->getCode());

This will instantiate the check class for the example service and run the checks defined for that service. What is being checked depends on the individual check implementation.

2.2.1. Check\Base Class

The abstract Check\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Check\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main check plugin logic.

All check classes should extend this class.

2.2.2. Implementing Check Classes

To create a check class, simply extend the Check\Base class and implement a protected method check().

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
protectedfunctioncheck(): Plugin
{
// main check logic goes here$this->setMessage('Everything is fine');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your check requires command line parameters, you can define those in the constructor of your check class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
publicfunction__construct()
{
$this->setLongOptions(
[
'host:',
'port:',
'user:',
'password:',
'warningThreshold:',
'criticalThreshold:'
]
);
$this->setRequiredOptions(
[
'host',
'port',
'user',
'password',
'warningThreshold',
'criticalThreshold'
]
);
$this->setHelp('Icinga plugin for checking the example service.--host Example service IP address or hostname--port Example service port--user Example service user--password Example service password--warningThreshold Threshold to trigger the WARNING state--criticalThreshold Threshold to trigger the CRITICAL state');
}
protectedfunctioncheck(): Plugin
{
$options = $this->getOptions();
// main check logic goes herereturn$this;
}
}

2.3. Notification Plugins

A basic approach at using a notification plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Notification;
require_once'/path/to/vendor/autoload.php';
$notification = newExampleNotification();
$notification->setOptions(
getopt(
$notification->getShortOptions(),
$notification->getLongOptions()
)
);
$notification->run();
echo$notification->getMessage();
exit($notification->getCode());

This will instantiate the notification class for the example notification plugin and run the logic defined for that plugin. What type of notification is being sent depends on the individual notification class implementation.

2.3.1. Notification\Base Class

The abstract Notification\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Notification\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main notification plugin logic.

All notification classes should extend this class.

2.3.2. Implementing Notification Classes

To create a notification class, simply extend the Notification\Base class and implement a protected method send().

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
protectedfunctionsend(): Plugin
{
// main notification logic goes here$this->setMessage('Notification sent');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your notification class requires command line parameters, you can define those in the constructor of your notification class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
publicfunction__construct()
{
$this->setLongOptions(
[
'type:',
'service:',
'host:',
'address:',
'state:',
'time:',
'output:',
'phonenumber:',
]
);
$this->setRequiredOptions(
[
'type',
'service',
'host',
'address',
'state',
'time',
'output',
'phonenumber',
]
);
$this->setHelp('Icinga plugin for sending notifications via the example notification provider.--type Notification type--service Service name--host Host name--address Host address--state Service state--time Notification time--output Check plugin output--phonenumber User phone number');
}
protectedfunctionsend(): Plugin
{
$options = $this->getOptions();
// main notification logic goes herereturn$this;
}
}

3. License

See LICENSE.txt for full license details.

About

Provides check and notification commands for the Icinga monitoring system.

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - randomhost/icinga: Provides check and notification commands for the Icinga monitoring system. · GitHub
Skip to content

Repository files navigation

Build Status

randomhost/icinga

1. Purpose

This package provides check and notification commands for the Icinga monitoring system.

2. Usage

2.1. Base Class

The abstract Base class implements the following public methods which are available for both, check and notification classes.

  • Base::getShortOptions()
    Returns available short options. The return value is supposed to be passed to PHP's built-in getopt() function as the first parameter and is used for setting up the command line arguments accepted by the check class.

  • Base::getLongOptions()
    Returns available long options. The return value is supposed to be passed to PHP's built-in getopt() function as the second parameter and is used for setting up the command line arguments accepted by the check class.

    The Base class comes with the pre-defined long option --help which triggers the built-in help method Base::displayHelp().

  • Base::getMessage()
    Returns the plugin output. The return value is supposed to be echoed to stdout and defines the status message which will be passed to Icinga.

  • Base::getCode()
    Returns the return code. The return value is supposed to be passed to PHP's built-in exit() function and defines the status code which will be passed to Icinga.

  • Base::setOptions($options)
    This method accepts parsed command line arguments as returned by PHP's built-in getopt() function.

Check and notification classes should NOT extend this class directly. They should extend their corresponding base class Check\Base or Notification\Base accordingly.

2.2. Check Plugins

A basic approach at using a check plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Check;
require_once'/path/to/vendor/autoload.php';
$check = newExampleService();
$check->setOptions(
getopt(
$check->getShortOptions(),
$check->getLongOptions()
)
);
$check->run();
echo$check->getMessage();
exit($check->getCode());

This will instantiate the check class for the example service and run the checks defined for that service. What is being checked depends on the individual check implementation.

2.2.1. Check\Base Class

The abstract Check\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Check\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main check plugin logic.

All check classes should extend this class.

2.2.2. Implementing Check Classes

To create a check class, simply extend the Check\Base class and implement a protected method check().

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
protectedfunctioncheck(): Plugin
{
// main check logic goes here$this->setMessage('Everything is fine');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your check requires command line parameters, you can define those in the constructor of your check class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Check;
userandomhost\Icinga\Plugin;
class ExampleService extends Base implements Check
{
publicfunction__construct()
{
$this->setLongOptions(
[
'host:',
'port:',
'user:',
'password:',
'warningThreshold:',
'criticalThreshold:'
]
);
$this->setRequiredOptions(
[
'host',
'port',
'user',
'password',
'warningThreshold',
'criticalThreshold'
]
);
$this->setHelp('Icinga plugin for checking the example service.--host Example service IP address or hostname--port Example service port--user Example service user--password Example service password--warningThreshold Threshold to trigger the WARNING state--criticalThreshold Threshold to trigger the CRITICAL state');
}
protectedfunctioncheck(): Plugin
{
$options = $this->getOptions();
// main check logic goes herereturn$this;
}
}

2.3. Notification Plugins

A basic approach at using a notification plugin built with this package could look like this:

<?phpnamespacerandomhost\Icinga\Notification;
require_once'/path/to/vendor/autoload.php';
$notification = newExampleNotification();
$notification->setOptions(
getopt(
$notification->getShortOptions(),
$notification->getLongOptions()
)
);
$notification->run();
echo$notification->getMessage();
exit($notification->getCode());

This will instantiate the notification class for the example notification plugin and run the logic defined for that plugin. What type of notification is being sent depends on the individual notification class implementation.

2.3.1. Notification\Base Class

The abstract Notification\Base class provides common methods for extending child classes. It implements one public method in addition to the ones provided by the common Base class:

  • Notification\Base::run()
    Takes care of validating command line parameters, displaying help output and executing the main notification plugin logic.

All notification classes should extend this class.

2.3.2. Implementing Notification Classes

To create a notification class, simply extend the Notification\Base class and implement a protected method send().

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
protectedfunctionsend(): Plugin
{
// main notification logic goes here$this->setMessage('Notification sent');
$this->setCode(self::STATE_OK);
return$this;
}
}

If your notification class requires command line parameters, you can define those in the constructor of your notification class. This is also the right place to place the help output which is shown if a required parameter is missing.

<?phpnamespacerandomhost\Icinga\Notification;
userandomhost\Icinga\Plugin;
class ExampleNotification extends Base implements Notification
{
publicfunction__construct()
{
$this->setLongOptions(
[
'type:',
'service:',
'host:',
'address:',
'state:',
'time:',
'output:',
'phonenumber:',
]
);
$this->setRequiredOptions(
[
'type',
'service',
'host',
'address',
'state',
'time',
'output',
'phonenumber',
]
);
$this->setHelp('Icinga plugin for sending notifications via the example notification provider.--type Notification type--service Service name--host Host name--address Host address--state Service state--time Notification time--output Check plugin output--phonenumber User phone number');
}
protectedfunctionsend(): Plugin
{
$options = $this->getOptions();
// main notification logic goes herereturn$this;
}
}

3. License

See LICENSE.txt for full license details.

About

Provides check and notification commands for the Icinga monitoring system.

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages