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 将被拒绝。
请注意,目前,大部分旧代码库在 pylint 和 pydocstyle 测试中都会出现警告。您的更改不得引入这些测试的任何 新 警告。
如果您的更改是新增功能或以其他方式更改了 nagiosplugin 的行为,请更新相关文档部分,并将其包含在您的 PR 中。
测试
nagiosplugin 测试由 tox 运行,配置为期望所有受支持的 python 版本都存在。最简单的方法是安装并使用 pyenv。
设置 pyenv 后,请确保您已安装 tox.ini 中 envlist 指定的所有受支持的 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 来阅读文档。
发布
此信息对大多数贡献者来说是不必要的。它仅适用于实际进行发布的人。
版本控制
如何发布
以下说明适用于假设的 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 更好的每个人
Christian Kauhaus <kc@flyingcircus.io>,原始作者和维护者。
Wolfgang Schnerring <wosc@wosc.de> 对设计的思考。
Thomas Lotze <thomas@thomas-lotze.de> 提高了测试基础设施。
Christian Theune <ct@flyingcircus.io> 对评论和一般反馈。
Michael Howitz <mh@gocept.com> 和 Andrei Chirila <andreich@gmail.com> 对 Python 3 版本的移植。
Birger Schmidt <birger.schmidt@netways.de> 对错误报告。
Florian Lagg <LaggAt@lagg-asus1.lan> 对 Windows 兼容性修复。
Jeff Goldschrafe <jeff@holyhandgrenade.org> 对 Python 2.6 的回退。
José Manuel Fardello <jmfardello@gmail.com> 对日志修复。
Jordan Metzmeier <jmetzmeier01@gmail.com> 对构建修复和 Debian 打包。
Andrey Panfilov <andrew@panfilov.tel> 对 perfdata 修复。
Mihai Limbășan <mihai@limbasan.ro> 对各种输出格式修复。
发布历史
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)
将 doc 和 tests 目录包含在源分发中,以支持 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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bceafaec359f032393ddd560ae2cc8d163613833ec63c93ce7189f85904e53d6 |
|
MD5 | 7539bf58002fb1285706d91e94dd4e26 |
|
BLAKE2b-256 | 63fd28a46894ff4451f6885b826d20885a53810f81ff4fa79f4f3c1e0e0d33ec |
nagiosplugin-1.3.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e46b21c0d5e4ca80883a63c2732640df2ceb58743f6a021f9a59ba3ec7f8cd89 |
|
MD5 | d59aa8c3ffafeab33dd952e1bcc4834e |
|
BLAKE2b-256 | d0216145a5f86da5da6d612c182bc057e92908a603e09f8b84f2d846b8ce1278 |