通过 Email 发送包含特定标签的日志信息
像大多数系统管理员一样,如果没有收到足够的邮件,你会寻找一种方法生成邮件。 另外一种 Puppet 报告形式被称为 tagmail。这会根据你设定的 e-mail 地址将日志信息发送到你指定的邮箱。
操作步骤
在 puppet.conf 文件中为 reports 添加以逗号分割的 tagmail 选项:
[master] reports = store,tagmail
在 /etc/puppet/tagmail.conf 文件中,添加一些 标签(tags)并指定相应的 e-mail 地址。例如:下面的配置行将所有的日志消息发送到 [email protected] :
all: [email protected]
一旦 Puppet 运行,你就会收到一份类似如下内容的 e-mail:
From: [email protected] Subject: Puppet Report for cookbook.bitfieldconsulting.com To: [email protected] Mon Jan 17 08:42:30 -0700 2011 //cookbook.bitfieldconsulting.com/ Puppet (info): Caching catalog for cookbook.bitfieldconsulting.com Mon Jan 17 08:42:30 -0700 2011 //cookbook.bitfieldconsulting.com/ Puppet (info): Applying configuration version '1295278949'
工作原理
Puppet 在 tagmail.conf 配置文件中查找每一行配置, 匹配标签(tag)并将消息发送到指定的邮箱。名为 all 的特殊标签会匹配所有的消息。 名为 err 的标签会匹配所有的错误消息:
err: [email protected]
你可以在 tagmail.conf 文件中定义多个规则, Puppet 会为所有匹配的规则发送邮件。 在下面的例子中,错误消息发送到一个邮件地址, 而与 web 服务器相关的消息发送到另一个邮件地址:
err: [email protected]
webserver: [email protected]
更多用法
tagmail 报告是一个非常强大的特性, 你可能需要在实践中才能获得相关的体会。 下面列出了一些有用的技巧。
什么是标签?
在 使用标签 一节中将会对标签做更详细的解释,但为了能使用标签的报告特性, 现在只要知道 tag 可以为节点(node)或类(class)命名就足够了。例如: webserver 标签匹配所有执行 webserver 类的客户端。
你也可以像下面这样使用 tag 函数直接添加一个标签:
class exim {
tag("email")
service { "exim4":
ensure => running,
enable => true,
}
}
指定多个标签或排除指定的标签
你可以在 tagmail.conf 文件中以逗号间隔方式指定一个标签列表, 也可以在某个标签之前使用叹号(!)排除这个标签。
all, !webserver: [email protected]
发送报告到多个 e-mail 地址
你可以将消息同时发送到多个地址,用如下的方式使用逗号分割多个 e-mail 地址:
err: [email protected], [email protected]