跳转到主要内容

Nagios (Icinga) 插件编写的类库

项目描述

nagiosplugin库

关于

nagiosplugin是一个Python类库,它帮助用户在Python中轻松编写与Nagios(或Icinga)兼容的插件。它处理了许多在Nagios检查中常见的样板代码和默认逻辑,包括

  • Nagios 3插件API兼容的参数和输出格式

  • 完全支持Nagios范围语法

  • 自动阈值检查

  • 多个独立度量

  • 自定义状态行以快速传达主要观点

  • 长输出和性能数据

  • 超时处理

  • 持久“饼干”以保留检查运行之间的状态信息

  • 从上次运行离开的位置恢复日志文件处理

  • 除了Python 2.6之外,没有依赖Python标准库(Python 2.6除外)。

nagiosplugin在POSIX和Windows系统上运行。它与Python 2.7以及Python 3.4到3.7兼容。

反馈和建议

nagiosplugin 目前由 Matt Pounsett 维护,联系邮箱为 <matt@conundrum.com>。可以在这里找到公共问题跟踪器:<https://github.com/mpounsett/nagiosplugin/issues>,用于提交错误、建议和补丁。

许可协议

nagiosplugin 软件包采用 Zope 公共许可证 2.1 (ZPL),这是一种类似 BSD 的开源许可证。

文档

详细的文档可在网上找到,链接为 https://nagiosplugin.readthedocs.io/。教程中提到的示例也可在源分布的 nagiosplugin/examples 目录中找到。

致谢

nagiosplugin 最初由 Christian Kauhaus 编写和维护,联系邮箱为 <kc@flyingcircus.io>。社区的其他贡献已在 CONTRIBUTORS.txt 文件中认可。

为 Nagiosplugin 贡献

获取源代码

可以通过 git 从 https://github.com/mpounsett/nagiosplugin.git 获取源代码。

git clone https://github.com/mpounsett/nagiosplugin.git

此软件包支持在 virtualenv 中安装。

python3 -m venv .
pip install -e .

修改代码

本项目使用 Git-flow 工作流程,大致按照 Vincent Driessen 于 2010 年提出的方案。新开发应在功能分支上进行,这些分支从 develop 分支分叉。PR 应发送到 upstream:develop

考虑您的更改是否更新或解决了现有的问题。在 PR 描述中包含适当的“fixes”或“updates”条目,以便更新问题。如果您的更改没有引用现有问题,请考虑创建一个新问题以将其链接起来。

项目使用 PEP8 作为其风格指南。所有更改在提交之前都应与 PEP8 进行检查,并且提交必须在发送 PR 之前符合 PEP8。可以使用 tox -e flake8 命令运行 PEP8 测试(有关设置 tox 环境的详细信息,请参阅下文“测试”)。不遵守 PEP8 的 PR 将被拒绝。

请注意,目前,大部分旧代码库在 pylintpydocstyle 测试中都会出现警告。您的更改不得引入这些测试的任何 警告。

如果您的更改是新增功能或以其他方式更改了 nagiosplugin 的行为,请更新相关文档部分,并将其包含在您的 PR 中。

测试

nagiosplugin 测试由 tox 运行,配置为期望所有受支持的 python 版本都存在。最简单的方法是安装并使用 pyenv

设置 pyenv 后,请确保您已安装 tox.inienvlist 指定的所有受支持的 python 版本。这可能会看起来像这样

pyenv install 2.7.18
pyenv install 3.4.10
pyenv install 3.5.10
pyenv install 3.6.15
pyenv install 3.7.12
pyenv install 3.8.12
pyenv install 3.9.9
pyenv install 3.10.1
pyenv global 3.10.1 3.9.9 3.8.12 3.7.12 3.6.15 3.5.10 3.4.10 2.7.18 system

安装测试依赖项

pip install -r requirements_test.txt

完成此操作后,运行单元测试

tox

限制测试到特定的 python 环境

tox -e py37

只运行 PEP8 检查测试

tox -e flake8

nagiosplugin 还包括对测试覆盖率报告的支持。覆盖率报告由 tox 自动更新。打开 htmlcov/index.html 以查看覆盖率报告。

您可以使用本地解释器运行提供的示例

python3 nagiosplugin/examples/check_load.py

文档

文档依赖于 Sphinx。安装必要的依赖项,然后构建文档

pip install -r requirements_docs.txt
make docs

HTML 文档将在 doc/_build/html/ 中构建和安装。您可以通过打开 doc/_build/html/index.html 来阅读文档。

发布

此信息对大多数贡献者来说是不必要的。它仅适用于实际进行发布的人。

版本控制

nagiosplugin 遵循在 SemVer 上发布的语义版本编号规范,并根据 PEP 440 进行了轻微调整。

如何发布

以下说明适用于假设的 0.1.2 版本发布。请确保您使用正确的版本号进行发布,并且不要复制和粘贴下面的示例。

首先,确保您已安装了构建前提条件

pip install -r requirements_build.txt

develop 创建一个发布分支

git checkout develop
git checkout -b release/0.1.2

检查所有测试是否通过。在继续之前,根据需要应用热修复以通过所有测试。

更新 nagiosplugin/version.py 中的版本号,并更新 HISTORY.txt 文件中的版本发布日期

sed -i '' -e 's/\(__VERSION__ =\).*/\1 "0.1.2"/' nagiosplugin/version.py
sed -i '' -e 's/0.1.2 (unreleased)/0.1.2 (2019-11-07)/' HISTORY.txt

您可能需要更新 HISTORY.txt 文件以包含其他更改。您可以通过生成反向日志来获取自上次发布以来的提交列表,您可以将它编辑成仅包含相关更改的列表

git log --reverse --no-merges 0.1.1... > new-changes.txt

提交更新的历史和版本文件,确保这两个文件更改都在同一个提交中。对于新版本 0.1.2

git stage HISTORY.txt nagiosplugin/version.py
git commit -m "Preparing release 0.1.2"

将发布合并到 main 分支并标记发布

git checkout main
git merge release/0.1.2
git tag 0.1.2
git push
git push --tags

为 PyPi 构建 nagiosplugin 发行版

python3 setup.py sdist bdist_wheel

检查 dist/ 中包的内容,以确保它们包含所有预期的文件。

在上传之前测试您的包

twine check dist/dist/nagiosplugin-0.1.2.tar.gz

使用 TestPyPi 进行测试上传

twine upload --repository-url https://test.pypi.org/legacy/ dist/*

https://test.pypi.org/nagiosplugin 上检查包元数据是否正确。如果一切正常,上传发布

twine upload dist/*

将发布合并回 develop,然后删除发布分支

git checkout develop
git merge release/0.1.2
git push
git branch -d release/0.1.2

转到 https://readthedocs.io/ 并确保新的稳定和开发版本可用。

贡献者

nagiosplugin 是在社区许多贡献者的帮助下成为现在的样子的。我们想感谢所有投入时间和精力使 nagiosplugin 更好的每个人

发布历史

1.3.3 (2022-02-07)

  • 新增:添加对新版 Python 发布的支持(3.8,3.9,3.10)

  • 修复:docstrings 中的各种拼写错误 (#39, )

  • 修复:在 setup.cfg 中更改了对已弃用的 upload-dir 的使用为 upload_dir (#34)

  • 修复:Runtime 类现在默认将 None 设置为 stdout (#24)

  • 修复:在几个对 super() 的调用中纠正了参数顺序 (#18)

  • 清理:许多代码整理以消除 linter 警告

1.3.2 (2019-11-09)

  • doctests 目录包含在源分发中,以支持 Gentoo 软件包构建测试 (#22)

  • 在 README 中更新官方 Python 支持到 2.7, 3.4+

1.3.1 (2019-11-08)

  • 修复了一个打包错误

1.3.0 (2019-11-08)

  • 添加了维护者/贡献者信息和项目主页

  • 更新了针对最新 Python 3 版本的测试和软件包元数据

  • 为测试/文档添加了新的工具

1.2.4 (2016-03-12)

  • 将可选关键字参数 verbose 添加到 Runtime.guarded()。此参数允许在早期执行阶段设置详细程度 (#13)。

  • 允许 Context.evaluate() 返回 Result 或 ServiceState 对象。如果返回后者,它将被自动包裹在一个 Result 对象中 (#6)。

1.2.3 (2015-10-30)

  • 修复了在 fmt_metric 中使用非 ASCII 字符时导致的 UnicodeDecodeError (#12)。

  • 在单行上始终打印 perfdata(即使在多行模式下),以提高与各种监控系统兼容性 (#11)。

1.2.2 (2014-05-27)

  • 说明 nagiosplugin 也与 Python 3.4 兼容(无需代码更改)。

  • 通过允许将 None 赋值给 Check.name,使状态输出中的名称前缀可选。

  • 接受 Resource.probe() 的裸指标作为返回值。

  • 修复了未使用 Context.describe() 获取指标描述的漏洞 (#13162)。

1.2.1 (2014-03-19)

  • 修复了与 LANG=C 相关的构建失败 (#13140)。

  • 移除了 perfdata 标签的长度限制 (#13214)。

  • 修复了将大整数作为 Metric 值格式化的漏洞 (#13287)。

  • 范围:允许 Range() 的参数为简单数字 (#12658)。

  • Cookie:允许为空状态文件指定 (#12788)。

1.2 (2013-11-08)

  • 如果没有结果,则调用 Summary.empty 方法 (#11593)。

  • 改进范围违规措辞 (#11597)。

  • 确保 nagiosplugin 与当前的 setuptools 正确安装 (#12660)。

  • 遵守规范,不要将任何内容附加到根日志记录器。

  • 添加调试主题指南。解释如何使用 pdb 禁用超时 (#11592)。

1.1 (2013-06-19)

  • 与 1.1b1 相同。

1.1b1 (2013-05-28)

  • 使与 Python 2.6 兼容 (#12297)。

  • 教程 #3:check_users (#11539)。

  • 轻微的文档改进。

1.0.0 (2013-02-05)

  • LogTail 在 Python 3 中返回字节字符串形式的行,以避免编码问题 (#11564)。

  • LogTail 提供基于行的迭代器而不是文件对象 (#11564)。

  • 最重要的类的 API 文档 (#11612)。

  • 使与 Python 2.7 兼容 (#11533)。

  • 使与 Python 3.3 兼容。

1.0.0b1 (2012-10-29)

  • 改进了缺少上下文时的错误报告。

  • 如果没有生成指标,则以代码 3 退出。

  • 改进了默认 Summary.verbose(),以列出所有阈值违规。

  • 将主源存储库移动到 https://bitbucket.org/gocept/nagiosplugin/ (#11561)。

1.0.0a2 (2012-10-26)

  • 最重要的类的 API 文档 (#7939)。

  • 添加了两个教程 (#9425)。

  • 修复了打包问题。

1.0.0a1 (2012-10-25)

  • 完全重构了 API。新 API 与旧的 0.4 API 不兼容,因此您必须更新您的插件。

  • Python 3 支持。

  • 现在 Cookie 类基本上是一个持久性字典,并接受键/值对。Cookie 默认存储为 JSON 文件,以便系统管理员可以检查 (#9400)。

  • 引入了新的 LogTail 类,该类提供对最终旋转的持续增长的日志文件的方便访问。

0.4.5 (2012-06-18)

  • Windows 端口。现在 nagiosplugin 代码在 pywin32 下运行 (#10899)。

  • 在 egg 发行版中包含示例 (#9901)。

0.4.4 (2011-07-18)

修复了用户报告的问题的补丁发布。

  • 提高 Mac OS X 兼容性 (#8755)。

  • 在发行版中包含示例 (#8555)。

0.4.3 (2010-12-17)

  • 将大数字的 __str__ 表示形式更改为避免科学计数法。

0.4.2 (2010-10-11)

  • 打包问题。

0.4.1 (2010-09-21)

  • 修复了安装错误的发行版。

  • 文档:教程和主题指南。

0.4 (2010-08-17)

  • 首次公开发布。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

nagiosplugin-1.3.3.tar.gz (3.1 MB 查看哈希值)

上传时间 源代码

构建分发

nagiosplugin-1.3.3-py3-none-any.whl (37.3 kB 查看哈希值)

上传时间 Python 3

由...