Chef 处理程序示例:报告处理程序与异常处理程序
1. 报告处理程序概述
报告处理程序在 Chef 运行成功结束时执行。与启动处理程序不同,报告处理程序可以访问运行状态对象中暴露的完整数据,因为在运行结束时,该对象的属性已被完全填充。
报告处理程序提供的信息虽然仅与成功运行相关,但对于识别基础设施自动化代码中的性能瓶颈和低效问题非常有用。它可以向监控和指标系统提供以下信息:
- 每次运行期间更新的资源数量(有助于跟踪食谱的幂等性)。
- 整个基础设施中 Chef 运行的平均持续时间(有助于全面了解 Chef 运行的性能)。
- Chef 运行期间单个资源和食谱性能的更详细分析(有助于找出性能瓶颈)。
例如,一个食谱中包含一个 bash 资源,在每次 Chef 运行时使用 wget 命令从互联网下载一个大文件,而不是使用 remote_file 资源一次性下载。这个食谱虽然在技术上没有问题,但性能不佳,如果在大量节点上运行,可能会严重影响网络性能。报告处理程序可以将这些数据提供给监控和指标系统,帮助我们捕获此类事件。
2. 报告处理程序实现
为了使示例简单易测,我们将报告处理程序的输出写入 /tmp/handler_output 文件。以下是报告处理程序的代码:
require "chef/handler"
class Chef
class Handler
class AwesomeReportHandler < Chef::Handler
# Override rep
超级会员免费看
订阅专栏 解锁全文
34

被折叠的 条评论
为什么被折叠?



