bheisig / checkmkwebapi
Requires
- php: >=7.2.0
- ext-curl: *
- ext-date: *
- ext-json: *
- ext-openssl: *
- ext-spl: *
- ext-zlib: *
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^0.7.0
- j13k/yaml-lint: ^1.1
- php-parallel-lint/php-parallel-lint: ^1.0
- phpcompatibility/php-compatibility: *
- phploc/phploc: ^5.0
- phpmd/phpmd: ^2.8.2
- phpstan/phpstan: ^0.12.29
- phpunit/phpunit: ^8
- povils/phpmnd: ^2
- roave/security-advisories: dev-master
- sclable/xml-lint: ^0.3.0
- sebastian/phpcpd: ^4.1.0
- seld/jsonlint: ^1.7
- sensiolabs/security-checker: ^6
- sllh/composer-lint: ^1.0
- squizlabs/php_codesniffer: *
- symfony/dotenv: ^5.1
Suggests
- ext-xdebug: Needed for code coverage with phpunit
README
易于使用但功能丰富的 Checkmk Web API 客户端
关于
Checkmk 是一款网络监控软件应用。社区版("raw")采用 GPLv2 许可。
此客户端通过 Checkmk 的 Web API 与其通信。它为 PHP 提供了一个简单但强大的抽象层。您可以在自己的项目中将其用作库。
要求
在使用客户端之前满足以下简单要求
- 一个或多个 Checkmk 网站,版本 1.4 或更高(大多数调用自 1.5 以来工作正常)
- PHP,版本 7.4 或 8.0
- PHP 模块
curl
、date
、json
、openssl
、spl
和zlib
安装
建议通过 Composer 安装此客户端。切换到项目根目录并获取最新稳定版本
composer require bheisig/checkmkwebapi
此命令安装最新稳定版本。您可以通过使用 @DEV
切换到当前开发分支,而不是坚持使用特定的/最小版本
composer require "bheisig/checkmkwebapi=@DEV"
更新
Composer 有一个巨大的优势(除了许多其他优势之外),那就是您可以通过运行以下命令简单地更新客户端
composer update
使用
Composer 内置了自己的自动加载器。将此行包含到您的 PHP 代码中
require_once 'vendor/autoload.php';
就是这样。如果需要,所有其他文件都将自动按需加载。
首次调用
这是一个简单的 "Hello, world!" 示例。它从 Checkmk 获取所有已配置的主机
use bheisig\checkmkwebapi\API;
use bheisig\checkmkwebapi\Config;
use bheisig\checkmkwebapi\Host;
$config = new Config();
$config
->setURL('https://monitoring.example.org/mysite/check_mk/')
->setUsername('automation')
->setSecret('abc123');
$api = new API($config);
$request = new Host($api);
$hosts = $request->getAll();
var_dump($hosts);
配置
API
类需要通过构造函数传入配置设置
use bheisig\checkmkwebapi\API;
use bheisig\checkmkwebapi\Config;
$config = new Config();
$config
->setURL('https://monitoring.example.org/mysite/check_mk/')
->setPort(443)
->setUsername('automation')
->setSecret('abc123')
->enableProxy()
//->disableProxy()
->useHTTPProxy()
//->useSOCKS5Proxy()
->setProxyHost('proxy.example.net')
->setProxyPort(8080)
->setProxyUsername('proxyuser')
->setProxyPassword('verysecure');
$api = new API($config);
Config
类有公开的方法,必须调用以配置 API
设置 | 参数 | 必需 | 描述 |
---|---|---|---|
setURL() |
字符串 | 是 | Checkmk 的 URL(不包括入口点),例如 https://monitoring.example.com/mysite/check_mk/ |
setPort() |
整数 | 否 | Web 服务器监听的端口;如果没有设置,HTTP 将使用端口号 80 ,HTTPS 将使用端口号 443 |
setUsername() |
字符串 | 是 | 用于认证的用户,可能是 automation |
setSecret() |
字符串 | 是 | 为用户指定的密钥 |
enableProxy() |
– | 否 | 在客户端和服务器之间使用代理;下面有详细信息 |
可选代理设置
设置 | 参数 | 必需 | 描述 |
---|---|---|---|
disableProxy() |
布尔值 | 否 | 禁用代理设置;这是默认值 |
useHTTPProxy() |
– | 是 | 使用 HTTP(S) 代理 |
useSOCKS5Proxy() |
– | 是 | 使用 SOCKS5 代理 |
setProxyHost() |
字符串 | 是 | 代理的 FQDN 或 IP 地址 |
setProxyPort() |
整数 | 是 | 代理服务器监听的端口号 |
setProxyUsername() |
字符串 | 否 | 对代理进行认证 |
setProxyPassword() |
字符串 | 否 | 指定的认证密码 |
主机
具有公共方法的 Host
类
API 调用 | 类方法 | 描述 |
---|---|---|
get_host |
get() |
通过主机名读取有关主机的信息 |
get_all_hosts |
getAll() |
读取有关所有主机的信息 |
add_host |
add() |
使用一些属性和标签创建新主机 |
edit_host |
edit() |
编辑主机,添加新属性,更改属性或取消设置属性 |
delete_host |
delete() |
通过其主机名删除主机 |
discover_services |
discoverServices() |
发现主机上的服务 |
站点
具有公共方法的 Site
类
API 调用 | 类方法 | 描述 |
---|---|---|
get_site |
get() |
通过其标识符读取有关站点的信息 |
– | getAll() |
读取有关所有站点的信息 |
文件夹
具有公共方法的 Folder
类
API 调用 | 类方法 | 描述 |
---|---|---|
get_folder |
get() |
通过其路径读取有关文件夹的信息 |
get_all_folders |
getAll() |
读取有关所有文件夹的信息 |
add_folder |
add() |
创建带有一些属性的新文件夹 |
edit_folder |
edit() |
编辑文件夹的属性 |
delete_folder |
delete() |
通过其路径删除文件夹 |
组
具有公共方法的 HostGroup
、ServiceGroup
和 ContactGroup
类
API 调用 | 类方法 | 描述 |
---|---|---|
get_all_*groups |
getAll() |
读取有关所有组的信息 |
– | get() |
通过其名称读取有关组的信息 |
add_*group |
add() |
使用名称和别名创建新组 |
edit_*group |
edit() |
更改组的别名 |
delete_*group |
delete() |
通过其名称删除联系人组 |
主机标签
具有公共方法的 HostTag
类
API 调用 | 类方法 | 描述 |
---|---|---|
get_hosttags |
getAll() |
读取有关所有主机标签组和辅助标签的信息 |
set_hosttags |
set() |
覆盖所有主机标签组和辅助标签 |
用户
具有公共方法的 Users
类
API 调用 | 类方法 | 描述 |
---|---|---|
– | get() |
通过其标识符读取有关用户的信息 |
get_all_users |
getAll() |
读取有关所有用户的信息 |
– | add() |
使用一些属性创建新用户 |
add_users |
batchAdd() |
使用一些属性创建新用户 |
– | delete() |
Delete a user by its identifier |
delete_users |
batchDelete() |
通过其标识符删除用户 |
规则集
具有公共方法的 Ruleset
类
API 调用 | 类方法 | 描述 |
---|---|---|
get_ruleset |
get() |
通过其名称读取有关规则集的信息 |
get_rulesets_info |
getAll() |
读取有关所有规则集的信息 |
代理
具有公共方法的 Agent
类
API 调用 | 类方法 | 描述 |
---|---|---|
bake_agents |
bake() |
烘焙代理但不签名 |
激活更改
具有公共方法的 Change
类
API 调用 | 类方法 | 描述 |
---|---|---|
activate_changes |
activate() |
在特定站点上激活更改 |
– | activateEverywhere |
在所有站点上激活更改 |
指标
具有公共方法的 Graph
类
API 调用 | 类方法 | 描述 |
---|---|---|
get_graph |
get() |
将指标作为图形获取 |
库存
Checkmk可以收集有关您硬件/软件清单的各种信息。
具有公共方法的类 Inventory
API 调用 | 类方法 | 描述 |
---|---|---|
- | getHost() |
读取特定主机的硬件/软件清单数据 |
- | getHosts() |
读取一个或多个主机的硬件/软件清单数据 |
贡献
请向我们的问题跟踪器报告任何问题。非常欢迎拉取请求。如果您想参与其中,请参阅文件CONTRIBUTING.md
以获取详细信息。
版权 & 许可
版权所有 (C) 2018-20 Benjamin Heisig
根据GNU Affero GPL版本3或更高版本(AGPLv3+)授权。这是免费软件:您可以自由修改和重新分发它。在法律允许的范围内,不提供任何保证。