Linuxfabrik/monitoring-plugins

GitHub: Linuxfabrik/monitoring-plugins

一套包含 230 多个跨平台检查插件的监控工具集,为 Icinga、Nagios 等监控系统提供开箱即用、低依赖的基础架构和应用健康检查能力。

Stars: 284 | Forks: 69


Linuxfabrik Monitoring Plugins

230+ monitoring plugins for Icinga, Nagios & friends. Python 3.9+, all platforms. Smart defaults, auto-discovery, consistent cross-platform metrics, minimal dependencies. made by Linuxfabrik

![GitHub Stars](https://img.shields.io/github/stars/linuxfabrik/monitoring-plugins) [![Star History Chart](https://api.star-history.com/svg?repos=Linuxfabrik/monitoring-plugins&type=Date)](https://star-history.com/#Linuxfabrik/monitoring-plugins&Date) ![GitHub](https://img.shields.io/github/license/linuxfabrik/monitoring-plugins) ![Version](https://img.shields.io/github/v/release/linuxfabrik/monitoring-plugins?sort=semver) ![Python](https://img.shields.io/badge/Python-3.9+-3776ab) ![Platforms](https://img.shields.io/badge/Platforms-All%20Platforms-informational) ![GitHub Issues](https://img.shields.io/github/issues/linuxfabrik/monitoring-plugins) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9892/badge)](https://www.bestpractices.dev/projects/9892) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/Linuxfabrik/monitoring-plugins/badge)](https://scorecard.dev/viewer/?uri=github.com/Linuxfabrik/monitoring-plugins) [![GitHubSponsors](https://img.shields.io/github/sponsors/Linuxfabrik?label=GitHub%20Sponsors)](https://github.com/sponsors/Linuxfabrik) [![PayPal](https://img.shields.io/badge/Donate-PayPal-ff6600)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7AW3VVX62TR4A&source=url)

# Linuxfabrik 监控插件集 兼容 Nagios 的检查插件,适用于 Icinga、Naemon、Nagios 以及任何使用 Nagios 插件 API 的监控系统。每个插件都是一个独立的 CLI,用于报告一种类型的检查:快速、跨平台一致、依赖极少、具有合理的默认值,从而确保只有在真正重要时才会触发 WARN 和 CRIT。 使用 Python 编写,根据 [UNLICENSE](https://unlicense.org/) 发布到公共领域。可在任何具有 Python 3.9+ 的平台(Linux、Windows、macOS、FreeBSD)上运行。对于 Windows,我们还提供了预编译的二进制文件,因此目标机器上不需要安装 Python。 ## 文档 完整文档可在 [linuxfabrik.github.io/monitoring-plugins](https://linuxfabrik.github.io/monitoring-plugins/) 获取。该文档会在每次推送到 `main` 分支时自动构建和部署。 如需直观了解插件在 Icinga Web 2 中的外观,请参阅 [POSTER.md](POSTER.md)。 ## 在线试用 这是一个将插件接入 Icinga Web 2 和 Grafana 的公开演示: [icinga-demo.linuxfabrik.ch](https://icinga-demo.linuxfabrik.ch/)。 ## 安装 在 Linux 上,使用单行命令进行安装。它会注册我们已签名的软件包存储库并安装该软件包: ``` curl -fsSL https://repo.linuxfabrik.ch/install-monitoring-plugins | sudo bash ``` 然后直接运行一个插件以验证其是否有效: ``` $ /usr/lib64/nagios/plugins/cpu-usage 5.1% - user: 3.0%, system: 1.0%, irq: 0.5%, softirq: 0.5% guest: 0.0%, guest_nice: 0.0%, iowait: 0.0%, nice: 0.0%, steal: 0.0% ctx_switches: 8.5G, interrupts: 6.8G, soft_interrupts: 1.7G|'cpu-usage'=5.1%;80;90;0;100 ... ``` 每个插件都支持 `--help`,并可以使用 `--version` 打印其版本信息。 有关“先验证后运行”的变体以及其他安装路径(Windows、源码、气隙环境、特定发行版、sudoers 插入文件、SELinux),请参阅 [INSTALL.md](INSTALL.md)。 共享设置步骤的插件: * [Keycloak 插件](PLUGINS-KEYCLOAK.md) * [MySQL / MariaDB 插件](PLUGINS-MYSQL.md) * [Rocket.Chat 插件](PLUGINS-ROCKETCHAT.md) * [WildFly / JBoss EAP 插件](PLUGINS-WILDFLY.md) ## 操作系统兼容性 | 系列 | 已测试版本 | 备注 | | ----------------- | ----------------------------------------------------- | ---------------------------------- | | Debian | 11 (bullseye), 12 (bookworm), 13 (trixie) | | | RHEL 及其克隆版本 | Rocky 8, Rocky 9, Rocky 10 | 也包括 Alma、CentOS Stream、Oracle。| | SLE / openSUSE | SLE 15.5 | SLE 15 需要 SP5。 | | Ubuntu | 20.04 (focal), 22.04 (jammy), 24.04 (noble) | 也构建了 26.04 的软件包。 | | Windows | Windows Server 2016 及更高版本,Windows 10 及更高版本 | 以已签名的 MSI 格式提供,x86_64。 | 只要存在 Python 3.9 或更高版本,其他 Linux 发行版也可以正常运行这些插件;你只是无法使用预构建的本地软件包。 ## Icinga、Grafana、Nagios * **Icinga Director**:导入附带的 basket(主机模板、服务模板、约 150 个服务集、时间周期、通知)。请参阅 [ICINGA.md](ICINGA.md)。 * **Grafana**:位于 `check-plugins//grafana/` 下各个插件的仪表盘,目前通过 Grizzly 进行配置。请参阅 [GRAFANA.md](GRAFANA.md)。 * **原生 Nagios、Naemon、Shinken、Sensu**:插件会输出标准的 Nagios 插件输出和性能数据。将它们放入 `/usr/lib64/nagios/plugins/` 目录中,并在你的 `command` 定义中引用它们。主机、服务和通知将保留在你现有的配置中。 ## 约定 ### 易读单位 字节大小使用 IEC 标准(KiB、MiB、GiB,2 的幂),因此数值与 shell 中显示的一致。大数字、时间和每秒比特数遵循各自的约定。完整的单位参考位于 [UNITS.md](UNITS.md)。 ### 阈值与范围 如果检查支持阈值,`--warning` / `--critical` 将遵循 [Nagios 插件格式](https://nagios-plugins.org/doc/guidelines.html#THRESHOLDFORMAT)(`start:end`,`~` 表示负无穷,`@` 表示反转)。包含示例的完整阈值参考位于 [THRESHOLDS.md](THRESHOLDS.md)。 ## 参数处理 当你直接从 shell 调用插件时,有两件事可能会让你出错。通过 Icinga Director 调用时规则会有所不同(不允许使用 `=`,外加 Icinga 自身的 `$$` 宏转义);请参阅 [ICINGA.md](ICINGA.md) 中的“参数处理”部分。 以 `-` 开头的值会被 `argparse` 读取为另一个选项,因此插件会报告未知参数。请将该值与其参数粘合在一起,而不是用空格分隔:长参数形式如 `./file-age --warning=-60:3600`(而不是 `--warning -60:3600`),短参数形式如 `./file-age -w-60:3600`。 包含 shell 特殊字符(如 `$`、`*`、空格或括号)的值必须用单引号括起来,以便 shell 将其原封不动地传递给插件。这对于像 `--match` 和 `--ignore` 这样的正则表达式参数非常重要,例如 `./dmesg --ignore='error$'`。单引号对处理开头为 `-` 的情况没有帮助,因为那是 `argparse` 的规则,而不是 shell 的规则;请使用上述的粘合形式。 ## 常见问题 问:**任何插件输出中的所有管道符 `|` 都被替换成了 `!`。为什么?** 答:我们必须这样做。Nagios 插件的输出语法是固定的,并且不太灵活: ``` Output lines | Performance data ``` 因此 `|` 字符被保留用于分隔插件输出和性能数据。没有办法对它进行转义——所以我们不得不将其替换为 `!`。 问:**如果所有其他插件都是由操作系统包管理器安装的,我可以用其源代码变体覆盖特定的插件吗?** 答:当然可以。只要别忘了也安装 libs 即可。 问:**这些操作系统软件包有外部依赖吗?** 答:没有。 问:**这些插件是否也处理像 `HTTP_PROXY` 这样的代理环境变量?** 答:是的,如果设置了 `HTTP_PROXY`、`HTTPS_PROXY`、`http_proxy` 和 `https_proxy`,Linuxfabrik 监控插件会自动使用它们。 问:**如何从检查输出中移除 `|` 后面的性能数据?** 答:在 Bash 中,使用 `/usr/lib64/nagios/plugins/check-command | cut -f1 -d'|'` ## 故障排除 有关与安装相关的问题(sudoers 插入文件、SELinux、Icinga Agent 下的 Windows `0x80070005`),请参阅 [INSTALL.md](INSTALL.md)。有关 Icinga 特有的怪异行为(通过 Icinga 传递 `http_proxy`、在 Director 分发的参数中转义诸如 `$` 的特殊字符和开头的 `-`),请参阅 [ICINGA.md](ICINGA.md)。 问:**更新后,我收到“Operational Error: no such column: ..., state UNKNOWN”。在下一次运行时,这个错误又消失了。发生了什么?** 答:一些检查插件需要 SQLite 数据库文件来缓存数据或计算随时间变化的数据。更新后,可能插件使用了新的 schema,但磁盘上的数据库文件尚未更新(我们不实现数据库迁移)。因此,在发生“OperationalError”时(例如,当插件尝试 INSERT 到过时的表中时),数据库库会直接删除 SQLite 数据库文件。在下一次运行时,插件将使用更新后的数据库结构从头开始重新创建它。 问:**在 Windows 上,有时 Windows Defender 会随机终止某个插件。为什么?** 答:根据你的特征码版本或特征码缓存的健康状况,Microsoft Windows Defender 可能会将某个检查程序归类为恶意软件(例如我们的 `service.exe`)。请按照以下步骤清除缓存的检测并获取最新的恶意软件定义。 1. 以管理员身份打开命令提示符,并将目录更改到 `c:\program files\windows defender` 2. 运行 `MpCmdRun.exe -removedefinitions -dynamicsignatures` 3. 运行 `MpCmdRun.exe -SignatureUpdate` ## 报告问题 1. [提交 Issue](https://github.com/Linuxfabrik/monitoring-plugins/issues/new/choose)(首选)。 2. 通过电子邮件或网络表单[联系我们](https://www.linuxfabrik.ch/en/contact)并描述你的问题。 有关漏洞报告,请遵循 [SECURITY.md](SECURITY.md) 中的私密披露流程。 ## 支持本项目 可通过 [服务合同](https://www.linuxfabrik.ch/en/products/service-support) 获得企业支持,包括 SLA 和定制插件开发。 如果这些插件对你有帮助,请考虑通过以下方式进行捐赠: [GitHub Sponsors](https://github.com/sponsors/Linuxfabrik) 或 [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7AW3VVX62TR4A&source=url)。 过往赞助者列在 [SPONSORS.md](SPONSORS.md) 中;社区评价位于 [TESTIMONIALS.md](TESTIMONIALS.md)。始终欢迎在社交媒体、博客文章中分享本项目,或通过 GitHub Discussions 上的 [Show and tell 版块](https://github.com/Linuxfabrik/monitoring-plugins/discussions/categories/show-and-tell) 进行交流。 我们没有固定的路线图。里程碑由客户需求和贡献者的时间共同推动。
标签:Icinga, IT基础设施, Nagios, Python, 文档结构分析, 无后门, 监控插件, 系统运维, 运维监控