randomhost/icinga
Composer 安装命令:
composer require randomhost/icinga
包简介
Provides Icinga check and notification commands.
README 文档
README
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-ingetopt()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-ingetopt()function as the second parameter and is used for setting up the command line arguments accepted by the check class.The
Baseclass comes with the pre-defined long option--helpwhich triggers the built-in help methodBase::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-inexit()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-ingetopt()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:
<?php namespace randomhost\Icinga\Check; require_once '/path/to/vendor/autoload.php'; $check = new ExampleService(); $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().
<?php namespace randomhost\Icinga\Check; use randomhost\Icinga\Plugin; class ExampleService extends Base implements Check { protected function check(): 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.
<?php namespace randomhost\Icinga\Check; use randomhost\Icinga\Plugin; class ExampleService extends Base implements Check { public function __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 '); } protected function check(): Plugin { $options = $this->getOptions(); // main check logic goes here return $this; } }
2.3. Notification Plugins
A basic approach at using a notification plugin built with this package could look like this:
<?php namespace randomhost\Icinga\Notification; require_once '/path/to/vendor/autoload.php'; $notification = new ExampleNotification(); $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().
<?php namespace randomhost\Icinga\Notification; use randomhost\Icinga\Plugin; class ExampleNotification extends Base implements Notification { protected function send(): 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.
<?php namespace randomhost\Icinga\Notification; use randomhost\Icinga\Plugin; class ExampleNotification extends Base implements Notification { public function __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 '); } protected function send(): Plugin { $options = $this->getOptions(); // main notification logic goes here return $this; } }
3. License
See LICENSE.txt for full license details.
randomhost/icinga 适用场景与选型建议
randomhost/icinga 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 219 次下载、GitHub Stars 达 0, 最近一次更新时间为 2016 年 10 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「nagios」 「icinga」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 randomhost/icinga 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 randomhost/icinga 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 randomhost/icinga 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Nagios plugin to check for a string/regex on a webpage. Also works behind .htaccess and POST login.
Nagios plugin to verify a git repository.
This nagios plugin will check if your drupal site has issues (security updates, updates[optional], outstanding db updates, other problems).
Simple monitoring tooling and Symfony bundle
Nagios Plugin to monitor mysqldump database backups.
Nagios or Icinga plugin to check for php startup errors.
统计信息
- 总下载量: 219
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 8
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2016-10-02